Monday, April 12, 2010

iPhonical Appcelerator

During the last week Wolfgang Frank and me have worked at the iPhonical Appcelerator project. With this project you get a small framework to boost your App creation on iPhone. For one of the next versions we are also planning support for Android and BlackBerry.

Stay tuned!!!!

Here a small screencast to get an impression.

If you're curious now watch out for the next "Eclipse Magazin" or take a look at iphonical.

Greets,
Markus

Wednesday, November 11, 2009

One Night in FFM "Soul Funk Blues & Jazz"

Am gestrigen Abend gab es mal einen Musikabend der anderen Art. In einem kleinen aber sehr coolen Club in FFM, hier der Link dazu Orange Peel, gab sich Johannes Tysiak die Ehre. Ein paar Groupies, die hauptsächlich aus itemis Mitarbeiter bestand, hatte Johannes gleich mitgebracht. OK, 3 davon waren aufgrund Kundenprojekts eh schon in FFM Vorort.... ;) Der andere musste extra aus Stuttgart anreisen.

Wer waren wohl die Groupies???

Hier noch zwei Bilder von der Nacht, man beachte die Hingabe des einen Musiker!! ;)

Saturday, September 12, 2009

Nur fliegen ist schöner.....


Nur fliegen ist schöner.....
Tja ich würde sagen dieses Erlebnis war bis jetzt eines der Besten!!!! An diesem Donnerstag waren wir (Philipp+Markus+Markus) auf dem Messelberg bei Donzdorf und hatten das Vergnügen mit Markus Völter, als unser (Bruch) Pilot ;), eine Runde Segelfiegerkunstflug mitzumachen. Nun denkt man sich vielleicht dass es ohne Motor nicht wirklich aufregend sein kann aber dies ist ein IRRTUM kann ich euch sagen!!!! Nach dem wir gemütlich auf ca. 1600 Meter Höhe geschleppt wurden ging es direkt ab in den ersten Looping um im Anschluss so Sachen wie Turn, Kleeblatt, Humpty und diverse anderen krasse Figuren zu fliegen. So ein Kunstflug rockt und bringt den Kreislauf in Schwung.

Wenn man also mal real 5G auf sich einwirken lassen will dann sollte man solch einen Flug unbedingt mal mitmachen. Es ist mit keiner Achterbahn oder gar Linienflug in den Urlaub zu vergleichen.

War einfach nur GEIL und ein fettes DANKE an Markus für den Flug!!!!

Posted by Picasa

Tuesday, June 24, 2008

GMF Read only

In manchen Projekten lohnt es sich auch auf GMF zu setzen selbst wenn das Diagram read only ist und somit die Editierfunktionen von dem Framework nicht gefragt sind. GMF kommt schon mit einigen Features out of the box daher die man für solche Einsätze erstmal abstellen muss. Im folgenden Bild kann man zum Beispiel ein Popup Feature sehen welches nicht mehr hochkommen soll und somit dem Anwender das Erstellen eines neuen Element untersagt:


In den EditParts findet man die Methode createDefaultEditPolicies. Hier ist der richtige Platz um die nicht gewünschten Feature zu unterdrücken oder besser gesagt zu removen. Im folgenden Code Snippet kann man sehen wie dies funktioniert:

/**

* @generated

*/

protected void createDefaultEditPolicies() {

super.createDefaultEditPolicies();

installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

new TopicSubtopicsItemSemanticEditPolicy());

removeEditPolicy(EditPolicyRoles.POPUPBAR_ROLE);

}


Diese Methode sollte man allerdings auch am besten in einem CustomXXXEditPart überschreiben damit man die Generierung von GMF immer verwenden kann ohne großes Bauchweh zu haben.
Die Klasse EditPolicyRoles hat noch einige andere Rollen die je nach Nutzen removed oder geadded werden können.

Dann mal wieder viel Spaß beim testen. 

Tooltip GMF

Um in GMF einen Tooltip an eine IFigure zu bekommen gibt es zwei Möglichkeiten die man wählen kann. Der erste Weg ist der einfache in dem man einfach an eine Figure mittels der Methode setToolTip eine IFigure übergibt welche den ToolTip enthält.

Im folgenden Beispiel wird direkt in der ToolTip-Methode ein Label mit dem Text der angezeigt werden soll angelegt.

















protected NodeFigure createNodeFigure() {
NodeFigure figure = createNodePlate();
figure.setLayoutManager(new StackLayout());
figure.setToolTip(new Label("Tooltip"));
IFigure shape = createNodeShape();
figure.add(shape);
contentPane = setupContentPane(shape);
return figure; }

Der zweite und wohl der häufigere Weg ist etwas komplizierter. Wenn man weiterhin die Generierung der EditParts in GMF nutzen will, sollte man die generierten EditParts überschreiben. Wenn man diesen Ansatz verfolgt erspart man sich einiges an Arbeit bei Änderungen an den Modellen und erneutem Generieren. Leider kommt es bei GMF ab und zu vor, das sich der Generator verschluckt und der Entwickler manuell alle Packages löschen muss um dann die Generierung erneut zu starten. Natürlich kann man auch die Fehler per Hand lösen.
Soll ein Name von einem Element im Diagramm den Namen des jeweiligen Elements anzeigen sollte man in der inneren Klasse Figure des EditParts eine Methode anlegen die sich das semantische Modellelemente holt um das Feature zu auszulesen. Mit dem folgenden Code kommt man an das Modellelement ran.

ownedElement = (OwnedElement) ((org.eclipse.gmf.runtime.notation.Node) CustomOwnedElementEditPart.this.getModel()).getElement();

Wenn man das gewünschte Element hat kann man dann wieder mittels eines Labels den ToolTip über die Figure Methode setzen.

Folgender Code zeigt das Setzen des ToolTips durch die semantische Information im Modellelement:

if (ownedElement.getName() != null && ownedElement.getName().length()> 0) {
tooltipText = ownedElement.getName();
} else {
tooltipText = "Owned-Element";
}

if (getToolTip() == null) {
setToolTip(new Label(tooltipText));
} else if (getToolTip() instanceof Label) {
((Label) getToolTip()).setText(tooltipText);
}

Einfach mal austesten und feststellen das es doch nicht so schwer ist wie es auf den ersten Blick ausschaut.


Sunday, April 20, 2008

Jazz - Artikel

Wie versprochen hier der Link des angekündigten Artikel über Jazz in der Elektronikpraxis. 

Des Weiteren wird ein Vortrag auf dem Entwicklertag von der Andrena in Karlsruhe stattfinden.

Viel Spaß beim Lesen und vielleicht sieht man sich ja in Karlsruhe!!!  ;)

Tuesday, March 18, 2008

Parser- Lexer-Entwicklung mit Antlr

Mittels des Antlr Framework kann man sehr schnell und effektiv durch Definition von Grammatiken Recognizer, Interpreter, Compiler und Translator sich generieren lassen. Was das Framework aus meiner Sicht sehr sexy macht ist, wie bei allen Frameworks die ihre Artefakten generieren, die Wartbarkeit sowie Erweiterungsmöglichkeiten. Diese Aspekte sind vor allem im Umfeld der Parser-Entwicklung sehr wichtig. 
Die Grammatiken für den Parser werden in einer Art Backus Naur Form in *.g Files geschrieben. Wie diese Statements in dem *.g File aussehen kann man in dem folgenden kleinen Beispiel sehen:

variableDeclaration : type ident ';'
type  : 'int' | 'String';
ident  : ('a'...'z' | 'A'...'Z' | '0'...'9' | '_' ) (  'a'...'z' | 'A'...'Z' |'0'...'9' | '_' )*;

Innerhalb solcher Rules, wie es z.B. variableDeclaration ist, kann mittels Actions in der Sprache die als Zielsprache gewählt wird, normaler Code eingewoben werden und auf die Werte der Tokens zugegriffen werden. 
Antlr bietet des Weiteren die Möglichkeit die geparsten Informationen in einem AST (abstract syntax tree) zu speichern und sich wiederum mittels einer Grammatik ein TreeWalker generieren zu lassen. Diese Feature habe ich leider bis dato noch nicht getestet aber es hört sich vielversprechend an. 
Ein Tipp für alle die die ihre geparsten Daten in ein Modell packen wollen ist mittels den Actions in der Grammatik sich ein EMF Modell zu füllen. Wenn man sich ein Metamodell mittels EMF erstellt und sich die Implementierung durch Generierung der Java-Klassen erstellen lässt kann man einfach und elegant mit den Actions in der Grammatik die Daten in ein Modell füllen und weiterverarbeiten. ;)
Also einfach mal probieren und mit Antlr sowie EMF herumspielen.
Have a lot of fun!