‘Drag and Drop’-Dateiexport mit GWT

Um eine Datei schnell exportierbar zu machen, bietet sich die neue HTML5 File-API an. Google Chrome unterstützt derweil sogar den direkten Export von Dateien per ‘Drag and Drop’ aus dem Browser heraus auf den Desktop oder in einen Ordner. Um das ganze im Google Web Toolkit zu realisieren, benötigt man GWT 2.4 und die Datei als Data-URL. Danach ist es quasi ein Kinderspiel:


final Anchor drag = new Anchor();
drag.setText("my xml export");
drag.getElement().setAttribute("data-downloadurl", "text/xml:export.xml:data:text/xml;charset=utf-8," + "export here");
drag.getElement().setDraggable("true");
drag.getElement().getStyle().setProperty("userSelect", "none");
drag.getElement().getStyle().setCursor(Cursor.MOVE);
drag.addDragStartHandler(new DragStartHandler() {

	@Override
	public void onDragStart(final DragStartEvent event) {
		event.getDataTransfer().setData("DownloadURL", event.getRelativeElement().getAttribute("data-downloadurl"));
	}
});

Hier exportieren wir als Beispiel eine XML-Datei. “export here” muss durch den String ersetzt werden, in dem die XML-Inhalte stehen. Man kann auch einfach die “data-downloadurl” nach dem : vor ‘data’ durch eine komplette Data-URL ersetzen, z.B. ein Bild aus einem Clientbundle. Die CSS3-Property “user-select” sorgt dafür, dass beim Draggen der Text nicht markiert wird. Zudem haben wir einen “Move”-Cursor eingebaut.

WP-Cirrus in neuer Version

Am Wochenende wurde unser WordPress-Plugin WP-Cirrus aktualisiert.

Der neue Build wurde teilweise mit dem Google Web Toolkit (GWT) erstellt. Dies erlaubt es uns, optimierte Versionen für verschiedene Browserengines anzubieten, ohne uns um Details der jeweiligen Engine kümmern zu müssen. Die neue Version sollte auf allen gängigen modernen Browsern funktionieren. Im Falle, dass etwas nicht funktioniert oder JavaScript deaktiviert ist, wird eine nicht-animierte Tagwolke angezeigt.

Anmerkungen und Kommentare zum Plugin bitte direkt auf unserer Pluginseite posten!

Jetty-Runner

Wer eine JavaEE-Anwendung, z.B. mit dem Google Web Toolkit, geschrieben hat und diese einmal kurz anstarten möchte, muss keinen kompletten Java-Server starten. Es gibt einen sogenannten Jetty-Runner, der dies ungemein vereinfacht:

Java muss natürlich auf dem Rechner lauffähig sein. Ansonsten braucht man nur die “deployable” .war-Datei und Jetty-Runner. Beides speichert man im selben Verzeichnis und führt dann
java -jar jetty-runner.jar myWar.war
aus. Der Rest spielt sich dann im Browser ab. Für kurze Tests völlig ausreichend.

Jetty-Runner bekommt man z.B. aus den mvn2-Repositorys: Jetty-Runner

GWTEventService

GWTEventService gibt uns die Möglichkeit Events am Server auszulösen und diese direkt an alle Clients zu senden. Das ersparrt den Aufwand selber einen Polling-Mechanismus zu implementieren.

In diesem Beispiel will ich eine kurze Übersicht über den grundsätzlichen Aufbau von GWTEventService geben. Als Beispiel dient uns hierbei ein ganz einfaches Chatsystem, ohne großen SchnickSchnack.

Continue reading

UML mit GWT

Eine sehr interessante GWT-Anwendung wird unter dem Namen “gwtuml” entwickelt.

Sehr vielversprechend sieht der UML-Designer aus, der komplett in GWT realisiert wurde. Ich hätte das ganze gerne als kollaborative Version.

Ein Klassendiagramm gezeichnet mit Hilfe von gwtuml

Continue reading