2009-11-22

Kindle – erste Eindrücke

Die internationale Version des Kindle, ein von Amazon angebotenes Lesegerät für elektronische Bücher, ist seit einigen Wochen zu haben. Als Gadget Junkie musste ich mir das gute Stück natürlich holen. :-)
Kindle-Verpackung Was mich wirklich beeindruckt hat, ist die Liefergeschwindigkeit. Ich hatte meinen Kindle am 11. November bestellt. Zwei Tage später, am 13., hielt ich ihn in Händen. Wenn man bedenkt, dass das gute Stück um die halbe Welt gereist ist, ist das schon beachtlich. Die Verpackung wirkt schlicht. Hat man einmal die Siegellasche zum Öffnen abgerissen, kann man sie nicht mehr vollständig verschließen. Schade ist auch, dass man sich nicht zu einer Umverpackung durchringen konnte.
Inhalt der Verpackung
Neben dem eigentlichen Gerät findet man in der Packung nur ein dünnes “Getting started”-Heftchen, ein USB-Kabel und einen Netzstecker. Das Heftchen erklärt die ersten Schritte, um den Kindle zum Leben zu erwecken. Die eigentliche Bedienungsanleitung findet sich – wir hätten nichts anderes erwartet – in elektronischer Form auf dem Gerät. Das USB-Kabel verbindet den Kindle mit einem Rechner, mit dessen Hilfe das gute Stück auch geladen werden kann (das ist aber auch dringend nötig) oder mit dem kleinen Netzteil.
Netzteil des Kindle
Denn dies passt nicht in unsere heimischen Dosen. Ob man sich nun geeignete Umsetzer bzw. Adapter oder geeignete Netzteile beschafft oder aber den Kindle am PC auflädt, ist jedem selbst überlassen.
Kindle mit "Bildschirmschoner"
Das Lesen macht mit dem Kindle großen Spaß, Die Anzeige ist sehr augenfreundlich, die Bedienung des Greräts und die Navigation durch das Lesematerial gehen flott und intuitiv vonstatten. Auch das Einkaufen in der elektronischen Buchhandlung funktioniert meiner Erfahrung nach reibungslos. Gekaufte Inhalte werden automatisch und ohne weiteres “Syncen” auf den Kindle gepusht.
ein Leichtgewicht
Der Kindle ist recht leicht. Im Gegensatz zu normalen Büchern wird ihr Rucksack auch dann nicht schwerer, wenn Sie Stoff für viele Stunden an Bord haben. :-) Auch ist das Gerät sehr dünn.
Alles in allem fallen meine ersten Eindrücke sehr positiv aus. Das Lesen mit dem Kindle macht großen Spaß.

2009-11-20

“Must have”-Tools

Die Wahrscheinlichkeit ist sehr hoch, dass ich der Einzige bin, der ZoomIt nicht gekannt hat. :-)
Tatsächlich genießt die Sysinternals-Website seit vielen Jahren einen ausgezeichneten Ruf. Sie wurde 1996 von Mark Russinovich und Bryce Cogswell ins Leben gerufen, um die Systemwerkzeuge der beiden sowie technische Dokumentation der Allgemeinheit zur Verfügung stellen zu können. In meinem Buch Java für Windows habe ich übrigens schon 2005 auf eines ihrer Tools, Junction, hingewiesen. Microsoft hat Sysinternals Juli 2006 erworben.
Der Einstellungsdialog von ZoomIt
ZoomIt ist eine sehr schlanke, aber extrem schön zu bedienende Bildschirmlupe (mit einigen spannenden zusätzlichen Funktionen). Beispielsweise kann man auf dem Bildschirm malen. Gerade bei Präsentationen kann das sehr angenehm sein. Durch Druck auf die Tasten r, y, g oder b wählt man die Farben rot, gelb, grün oder blau. Tippt man t, kann man Text eingeben. Dass der Vergrößerungsfaktor bequem einstellbar ist, versteht sich von selbst. Ich möchte dieses kleine Tool nicht mehr missen.

2009-11-05

TKBirthdayReminder 1.2.5

Screenshot von TKBirthdayReminder Seit Kurzem ist TKBirthdayReminder 1.2.5 im Android Market zu finden. Ich habe das Layout der Geburtstagsliste verbessert; so ist das Geburtsdatum an den rechten Rand gewandert und damit besser ablesbar. Außerdem zeigt das Programm nun das Sternzeichen des Kontakts an.
Haben Sie Ideen für weitere Funktionen? Schreiben Sie mir…

2009-10-25

Dialoge mit Android

Android macht dem Entwickler das Anzeigen von Dialogen sehr einfach. Es genügt nämlich, die beiden Methoden protected Dialog onCreateDialog(int id); und protected void onPrepareDialog(int id, Dialog dialog); einer Activity zu überschreiben. Angezeigt wird der Dialog mit einem simplen showDialog(DIALOG_NEW_EVENT);

Dialoge werden mittels IDs unterschieden; diese kann der Entwickler selbst festlegen. Auf diese Weise erzeugte und angezeigte Dialoge werden vom System verwaltet. Wird ein Dialog zum ersten Mal angezeigt, wird zunächst onCreateDialog() aufgerufen, danach onPrepareDialog(). Jedes weitere Anzeigen führt nur noch zu einem onPrepareDialog(). Leider gibt es aber – und deshalb schreibe ich diesen Blog-Eintrag :-) - in diesem Zusammenhang einen Bug, der bei Orientierungswechseln (beim G1 etwa durch Aufschieben der Tastatur) zuschlägt. In diesem Fall unterbleibt nämlich der Aufruf von onPrepareDialog().

2009-10-20

Neuer Artikel erschienen

Ich freue mich, nach geraumer Zeit wieder einen Artikel vermelden zu können. In der Ausgabe 11/2009 der iX stelle ich in Schöner wohnen zwei Klassenbibliotheken vor, die Swing-Komponenten benutzerfreundlicher machen. Es handelt sich um laf-widget und JXLayer.

2009-09-25

Neues für den Androiden

Ich hatte ja schon einmal über mein Programm TKWeek berichtet. Da mir das Schrauben am Androiden großen Spaß macht, hat der Funktionsumfang des Progrämmchens seitdem deutlich zugenommen. Seit heute Abend steht die Version 1.0.4 im Android Market zum Download bereit.

Die Funktionsauswahl von TKWeek

Der Screenshot zeigt die Funktionsauswahl. Zur Zeit kann man aus folgenden Funktionen auswählen:

  • Zwischen Datum und Wochennummer umrechnen
  • Informationen zu einem Datum anzeigen
  • Zahl der Tage zwischen zwei Daten berechnen
  • Datumsrechner

Der Datumsrechner sieht so aus:

Datumsrechner von TKWeek

Die Bedienung ist einfach:

  1. Datum auswählen
  2. Zahl der Tage, Wochen, Monate und/oder Jahre eingeben
  3. Addieren oder Subtrahieren anklicken

Haben Sie Ideen oder Vorschläge, was in meinen Datums- und Kalenderwerkzeugkasten noch rein könnte? …schreiben Sie mir.

2009-08-22

Am Androiden schrauben

TKWeek-Programm-Icon Neulich sagte ein Kollege zu mir: Es wäre schön, wenn der Termin in der 37. Kalenderwoche stattfinden könnte. Wissen Sie aus dem Stand heraus, wann KW 37 beginnt und wann sie endet? Eben. Den guten alten papiernen Planer, in dem so etwas selbstverständlich drin steht, habe ich, wie langjährige Leser meines Blogs wissen – schon sehr früh gegen elektronische Organizer ausgetauscht. Bedauerlicherweise enthält der Kalender meines G1 diese Info nicht. Aus diesem Grund habe ich mich an meinen Computer gesetzt und ein kleines Programm für meinen Lieblingsandroiden gezimmert.
Screenshot von TKWeek
Seit heute Abend können Sie das Programm TKWeek (ich gebe es ja zu, in punkto Namensgebung bin ich ein Einfallspinsel :-)) aus dem Android Market laden.
Die Anwendung kennt zwei “Betriebsarten”:
  1. Woche zu einem Datum herausfinden
  2. Woche auswählen und ersten/letzten Tag ablesen
Das Datum wird mit der großen, dreiteiligen Komponente im oberen Bereich des Bildschirms ausgewählt. Die Werte weiter unten werden laufend aktualisiert. Die Woche lässt sich mit der gelben SeekBar sowie den beiden Plus-/Minus-Schaltfläche eingeben. …mehr kann die anwendung nicht, aber mehr ist ja auch nicht nötig. :-)

2009-08-18

Adobe AIR und Java Web Start

Im zweiten Teil meiner kleinen Serie über Adobe AIR hatte ich versprochen, noch ein paar Zeilen über AIR unter Linux zu schreiben. Die Installation verlief ebenso glatt wie unter Mac OS X und Windows.
Erfolgreiche Installation unter Ubuntu
Auch das Aussehen der Installationsdialoge entspricht (abgesehen natürlich vom Fensterrahmen) den anderen beiden Plattformen. Das Einrichten und der Start der eigentlichen Anwendungen funktioniert – wie erwartet - ebenfalls wie unter Windows und Mac OS X:
Rückfrage, was mit der herunter geladenen Datei geschehen soll
Rückfrage vor der Installation
Installationsort festlegen
Fassen wir die bisherigen Erkenntnisse zusammen. AIR-Anwendungen werden offenbar in Installationsdateien gepackt und so verteilt. Diese enden auf .air. Da dieser Dateityp (sowie ein äquivalenter MIME-Typ) mit der AIR-Laufzeitumgebung verknüpft ist, führt ein Doppelklick auf eine solche Datei bzw. der Download aus dem Internet zum Start der AIR-Runtime. Diese bietet an, die Anwendung zu installieren oder ggf. wieder vom System zu entfernen. .air-Dateien können also auf normalem Weg kopiert bzw. weitergegeben werden. Ein direkter Download wird aber (wie bereits geschrieben) ebenfalls unterstützt.
Ohne Frage macht das AIR-Laufzeitsystem das Herunterladen, Installieren und ggf. Entfernen von AIR-Anwendungen sehr einfach. Der Anwender wird mit grafisch schön aufbereiteten, leicht verständlichen Dialogen durch die jeweils nötigen Schritte geführt. Einmal auf dem Client angekommen, verhalten sich AIR-Anwendungen bzgl. Start und Deinstallation wie ihre nativen Kollegen. Das Look and Feel weicht von nativen Anwendungen ab, ist über Plattformgrenzen hinweg aber identisch.
Java macht vieles ähnlich, verfolgt im Detail aber doch andere Strategien. Diese möchte ich im Folgenden ins Gedächtnis rufen. Das Java Network Launching Protocol (JNLP) legt, vereinfacht ausgedrückt, fest, wie Java-Anwendungen von einem Web Server heruntergeladen und auf einem Client installiert werden. Die Grundidee ist, ein Programm durch einfaches Anklicken eines Links im Webbrowser starten zu können. JNLP ist eine Spezifikation; eine Implementierung mit Namen Java Web Start ist Bestandteil jeder halbwegs aktuellen Java-Laufzeitumgebung. Ihr Verhalten möchte ich am Beispiel meines kleinen Progrämmchens TKPlayIt anhand von einigen Screenshots zeigen.
Startseite meines Programms TKPlayIt
Die orangefarbene Schaltfläche Launch (eine ganz normale Grafik) ist ein Link auf die Datei TKPlayIt.jnlp. Wird sie angeklickt, lädt der Webbrowser die Datei herunter. Da Dateien des Typs .jnlp (bzw. ein äquivalenter MIME-Typ) in der Regel mit der Java-Laufzeitumgebung verknüpft sind, wird diese gestartet.
Java-Splashscreen
Die Laufzeitumgebung zeigt beim ersten Aufruf der zu startenden Anwendung den oben abgebildeten Splashscreen. Bei erneuten Starts wird stattdessen eine anwendungsspezifische Grafik angezeigt, sofern diese in die .jnlp-Datei eingetragen wurde.
Herunterladen der Anwendung
Anschließend wird die Anwendung heruntergeladen. Dies geschieht aber nur beim ersten Aufruf, oder wenn auf dem Web-Server eine neuere Version als die bereits auf dem Client vorhandene abgelegt wurde.
ein Sicherheitshinweis
Nach dem Laden erfolgt unter Umständen ein Sicherheitshinweis. Gestattet der Anwender die Ausführung, wird die Anwendung gestartet.
.jnlp-Dateien sind keine Installationsarchive. Sie definieren vielmehr die Bestandteile eines Programms. Eine .jnlp-Datei legt also (unter anderem) fest, welche Dateien von einem Web-Server heruntergeladen werden müssen. Um eine Web Start-Anwendung weiterzugeben, reicht es demzufolge nicht aus, die zugehörige .jnlp-Datei zu kopieren. Auch die “Installation” des Programms verläuft anders. Seine Bestandteile landen nämlich nicht in plattformüblichen Programme-Verzeichnissen, sondern in einem Web Start-eigenen Cache. Dennoch sind Web Start-Anwendungen recht gut in das System integriert. Sie lassen sich beispielsweise durch Verknüpfungen auf dem Desktop starten.
Unter Windows können Web Start-Anwendungen wie gewohnt aus der Systemsteuerung heraus entfernt werden. Auf anderen Plattformen muss hierzu der Java Cache Viewer geöffnet werden.
Java Cache Viewer
Damit möchte ich meine Mini-Serie über Adobe AIR aus Anwendersicht beenden. Haben Sie Fragen oder Anregungen? Dann schreiben Sie mir doch einfach…

2009-08-07

Adobe AIR auf dem Mac

In meinem letzten Eintrag habe ich mich mit Adobe AIR aus der Sicht des Endanwenders beschäftigt. Ich hatte mich in diesem Zusammenhang gefragt, wie das Ganze wohl unter Mac OS X aussehen würde. …nun, folgen Sie mir doch einfach durch eine kleine Bildersammlung…
die obligatorische Lizenztafel
Screenshot während der Installation
Die Installation wurde erfolgreich abgeschlossen
Installation einer Anwendung
Rückfrage während der Installation
Festlegung des Speicherortes
Erneuter Doppelklick auf eine .air-Datei
Wer die Screenshots unter Windows noch in Erinnerung hat, wird – abgesehen vom Fensterrahmen – kaum Unterschiede entdecken. Auch die Handhabung ist praktisch identisch. AIR ist recht konsequent in das Wirtssystem eingebunden. Herunter geladene Anwendungen erscheinen beispielsweise im Programme Verzeichnis des Mac. Bemerkenswert ist aber, dass unter beiden Plattformen die Dialoge der AIR-Laufzeitumgebung einen eigenen Look haben, der sich nicht an der Benutzeroberfläche der jeweiligen Systeme orientiert. Ich möchte dies an dieser Stelle nicht werten, gebe aber zu, dass die Dialoge recht hübsch aussehen.
Im nächsten Posting möchte ich noch einen kurzen Blick auf die Situation unter Linux werfen, verspreche aber, nicht wieder Berge von Screenshots zu produzieren. Stattdessen werde ich AIR mit Java vergleichen. …Stichwort? Web Start… :-)

2009-08-02

…ein bischen frische Luft…

Alle Screenshots sind gemacht. Die Texte sind fertig getippt. Das Manuskript ist beim Verlag. Der eigentliche Schreibvorgang für die dritte Auflage des Eclipse-Buches ist also abgeschlossen. Für mich heißt dies, wieder Zeit fürs Bloggen zu haben.
In diesem Beitrag möchte ich einen Blick über den Zaun werfen. Konkret geht es heute um Adobe AIR, genauer gesagt um die Frage, wie sich diese Plattform dem Endanwender präsentiert. Wie Java basiert AIR auf einer Laufzeitumgebung, die einmalig herunter geladen und installiert werden muss. Diese virtuelle Maschine ist plattformabhängig, die eigentlichen Anwendungen hingegen funktionieren überall, wo es eine entsprechende Ablaufumgebung gibt.
Zunächst also der Installationsvorgang unter Windows (das Archiv ist übrigens etwa 15 MB groß):
Installation Schritt 1
Installation Schritt 2
Installation Schritt 3
Das Ganze ist in wenigen Minuten erledigt. Nach der Installation wollte ich mir ansehen, was da so alles auf der Platte gelandet ist. Das erwartete Unterverzeichnis AIR unter C:\Programme\Adobe gab es nicht. Einträge im Startmenü waren auch nicht auszumachen. Die erweiterte Suche förderte dann aber C:\Programe\Common Files\Adobe AIR als Basisverzeichnis der Installation zutage. Für den Endanwender tritt die Laufzeitumgebung nach der Installation also zunächst nicht in Erscheinung.
Die AIR-Downloadseite hatte auf einen Adobe AIR Marketplace hingewiesen, der aktuelle Anwendungen zum Herunter laden anbietet. Das sieht dann so aus:
Adobe AIR Marketplace
Da ich keine Lust auf das 30. Wetter-Widget hatte, habe ich mich für das Spiel Desktop Blaster entschieden. Die Hersteller-Site hält das Programm zum Download bereit. Nach einem Fortschrittsbalken während des Herunterladens  (den ich Ihnen nicht zeige) wird folgende Meldung ausgegeben:
image
Mit Speichern kann man die herunter geladene Datei für eine spätere Verwendung “parken”. Unter Windows wird .air als Dokumenttyp der AIR Laufzeitumgebung registriert. Ein Doppelklick auf solche Dateien führt aber nicht zum Start der Anwendung, sondern startet einen Installationsvorgang:
Informationen zur Anwendung
Zweite Seite des Installationsassistenten
.air-Dateien sind also Installationsarchive. Ein erneutes Öffnen einer solchen Datei zeigt folgenden Dialog:
Auswahl, was mit bereits installierten Anwendungen geschehen soll
AIR-Anwendungen haben unter Windows jeweils eigene Einträge in der Liste installierte Software, können also auf dem üblichen Weg gelöscht werden. Auch der Start geschieht analog zu nativen Programmen. Wie das auf anderen Plattformen gelöst ist, werde ich noch überprüfen.

2009-07-05

Write once, test everywhere

Nach einer kurzen Pause, die ich unter anderem dazu genutzt habe, mein brandneues 2,8 GHz-MacBook Pro einzurichten :-), melde ich mich mit einer interessanten Detektivgeschichte zurück.

Hätten Sie vermutet dass Java unter Mac OS X 10.5 die Escape-Taste verschluckt?

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class KeyEventTest {

public static void main(String[] args) {
JFrame f = new JFrame("KeyEventTest");
JTextField textfield = new JTextField(20);
textfield.addKeyListener(new KeyListener() {

public void keyTyped(KeyEvent e) {
System.out.println("typed: "
+ Integer.toString(e.getKeyChar()));
}

public void keyReleased(KeyEvent e) {
System.out.println("released: " + e.getKeyCode());
}

public void keyPressed(KeyEvent e) {
System.out.println("pressed: " + e.getKeyCode());
}
});
f.getContentPane().add(textfield);
f.pack();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}

Wenn Sie das Programm unter Vista ausführen und die Escape-Taste drücken, werden wie erwartet drei Meldungen ausgegeben. Auf dem Mac hingegen fehlt keyTyped(). Irgendwo wird das Ereignis also konsumiert. Wo das Ganze passiert, werde ich hoffentlich bald heraus gefunden haben.

2009-06-19

Noch mehr Minimalismus

Vor einiger Zeit hatte ich in meinem Eintrag Reduzierung auf das Wesentliche auf die beiden Programme WriteRoom und Dark Room hingewiesen. Die Idee dieser Anwendungen ist, sich beim Schreiben von Texten auf nichts als den Text zu konzentrieren.
Auf sehr lustige Weise auf die Spitze wird das Ganze durch das Programm Typewriter getrieben, eine Schreibmaschinensimulation in Java. Lesen Sie sich doch einfach das folgende Posting durch...

2009-06-11

Hacking JavaFX Binding

Nach einer etwas längeren Pause habe ich mal wieder einen (englischsprachigen) Artikel auf java.net veröffentlicht. In Hacking JavaFX Binding beschäftige ich mit der Frage, inwieweit auch Swing-Entwickler von JavaFX profitieren können.

JavaFX Script enthält den bind()-Operator, mit dem sich auf extrem einfache und bequeme Weise Bindungen zwischen Variablen und Objekten herstellen lassen. Die JavaFX-Runtime beinhaltet ein kleines Framework, das die notwendige Infrastruktur bereit stellt. Mein Artikel stellt die wichtigsten Klassen dieses Frameworks vor und verwendet es, um in einer kleinen Swing-Anwendung data binding zu realisieren. Insofern ist dieser neue Artikel die konsequente Fortsetzung meines Artikels Binding Beans, der vor einem Jahr erschienen ist.

In dem Artikel hatte ich anhand einer kleinen Lautstärkeregelung zwei Binding-Frameworks für Swing miteinander verglichen. Der neue Artikel greift nicht nur die Anwendung auf, sondern auch deren Struktur. Auf diese Weise lässt sich das JavaFX Binding Framework sehr schön mit den beiden anderen vergleichen. Es ist erstaunlich, wie gut es hier mithalten kann, obwohl die Klassen doch nie für eine öffentliche Nutzung vorgesehen oder freigegeben sind.

2009-06-09

Quelltext zu TKDatePicker online

Ich habe die Arbeiten an meiner Kalenderkomponente TKDatePicker soweit abgeschlossen, dass ich glaube, den Quelltext dieser Version herausgeben zu können.
Screenshot von TKDatePicker
TKDatePicker realisiert eine moderne Datumsauswahl, die mit sehr geringen Aufwand in eigene Swing-Anwendungen integriert werden kann. Sie wird unter der GNU Lesser General Licence v3 zur Verfügung gestellt. Um die Komponente in Aktion zu sehen, klicken Sie bitte auf den folgenden Link:
Demo von TKDatePicker starten
TKDatePicker realisiert insgesamt vier Ansichten: Tage, Monate, Jahre und Jahrzehnte. Zwischen diesen kann durch Anklicken von Elementen der Kopfleiste gewechselt werden.
Für die Folgeversionen steht auf dem Programm:
  • umfangreichere Dokumentation
  • stärkere Java-“Beanifizierung”
Wenn Sie Anregungen, Fragen oder Probleme haben, scheuen Sie sich bitte nicht, mit mir Kontakt aufzunehmen. Selbstverständlich freue ich mich auch über Hinweise auf Programme, die TKDatePicker verwenden.

2009-06-05

Einem Datumscontrol auf die Eigenschaften geschaut

Microsoft liefert mit seinen Common Controls seit langer Zeit eine Datumsauswahl (Date/Time Picker) aus. Früher sah die so aus:
Date / Time Picker v5
Dieser Screenshot zeigt die Komponente unter Vista mit den Common Controls V5. Ab Version 6 können die Common Controls mit Themes versehen werden. Dann präsentiert sich die Datumsauswahl so (ebenfalls unter Vista):
Date / Time Picker v6
Es gibt von Microsoft übrigens ein sehr schönes Programm, mit dem man sich die Komponenten der Common Controls entspannt ansehen kann. Den Control Spy können Sie hier herunter laden. Der Download enthält zwei Versionen des Werkzeugs, die auf die beiden bereits angesprochenen Versionen der Common Controls zugreifen. Das kann man nutzen, um sich Unterschiede in der Implementierung anzusehen. Dies möchte ich im Folgenden tun.
Zunächst zwei Screenshots der alten Version:
Monatsauswahl mittels Popup-Menü
Hier ist sehr schön zu sehen, wie man zu einem bestimmten Monat innerhalb eines Kalenderjahres springt: mit Hilfe eines Popup-Menüs.
Jahresauswahl mittels Up/Down
Dieser Screenshot zeigt, wie man zu einem bestimmten Jahr navigiert. Der Control Spy nennt dieses Element Up/Down. In Swing entspricht dies einem JSpinner.
Jetzt zu der neueren Implementierung. Sie unterscheidet nicht zwischen Klicks auf den Monatsnamen und das Jahr. Stattdessen sieht die Komponente nach dem ersten Klick so aus:
Monatsauswahl
Anstelle der Tages eines Monats sind die Monate eines Jahres zu sehen. Klickt man ein Monat an, landet man wieder in der bekannten Monatsansicht. Ein erneuter Klick in den Kopfbereich (auf das Jahr) schaltet auf die folgende Ansicht um:
Jahresauswahl
Auch hier gilt: ein Klick auf ein Jahr springt wieder eine Ebene nach oben, also in die Monatsauswahl. Ein Klick in den Kopfbereich bringt uns in die letzte Ansicht:
Auswahl von Dekaden
Die Dekadenauswahl funktioniert wie die Jahresauswahl. Ein Klick auf eine Dekade zeigt eine entsprechende Jahresauswahl. In allen Ansichten kann man mit den beiden Scrollpfeilen blättern, also monats-, jahres-, dekaden- und jahrhundertweise.
Die Auswahl eines Monats ist ohne Frage äußerst elegant. Die Bedienung der Komponente wird nicht durch ein Popup-Menü gestört. Ob hingegen der Tausch eines Textfeldes durch drei zusätzliche Ansichten zu einer schnelleren und angenehmeren Bedienung führt, ist Geschmackssache. Ich vermute, die Bedienung wird flüssiger. Kurzum: mir gefällt die neue Variante sehr gut.
Ein letzter Hinweis: Neben der hier gezeigten Date/Time Picker-Komponente gibt es auch eine reine Kalenderkomponente ohne Textfeld: Month Calendar.

2009-06-04

Zurück in die Zukunft

Die im letzten Eintrag vorgestellte Datumsauswahl muss leider noch bis zum Wochenende warten. Zwischenzeitlich möchte ich Ihnen mit einem Schmunzeln eine Reise in die Vergangenheit und wieder zurück präsentieren. Bei der Arbeit am Rechner bot sich mir nämlich folgendes Bild:
Guru Meditation
Die Guru Meditation ist wohl jedem, der sich in den 80ern für Homecomputer interessierte, ein Begriff. Wer mehr darüber wissen will, sollte sich den folgenden Wikipedia-Artikel zu Gemüte führen. …eine schöne Erinnerung, die die VirtualBox-Entwickler uns hier präsentieren.

2009-05-31

Noch eine Datepicker-Komponente (diesmal von mir)

In einem Kommentar auf meinen letzten Eintrag wurde ja auf eine sehr schöne Datepicker-Komponente hingewiesen, die sich zum Beispiel in Vista findet. Ich bin schon vor geraumer Zeit über sie gestolpert und war von ihr recht angetan. Deshalb hatte ich beschlossen, sie sozusagen nach Java zu portieren. Auch wenn ich noch nicht ganz fertig bin, möchte ich doch – schon, um etwas Appetit zu machen – einen ersten Screenshot zeigen.
Screenshot von TKDatePicker
Das Ganze wird TKDatePicker heißen und selbstverständlich als open source veröffentlicht. Die Komponente wird unter der GNU Lesser General Public Licence version 3 zu haben sein. Demnächst mehr in diesem Theater… :-)

2009-05-30

Gestaltung für Smartphones und den Desktop (4)

In dieser Folge werfen wir einen Blick auf zwei ungewöhnliche oder experimentelle Kalenderanzeigen. Es geht also nicht in erster Linie um “Datepicker”, sondern ganz allgemein um Datumsein- und –ausgaben.
Die (leider schon sehr lange nicht mehr aktualisierten) Seiten User Interface Design Patterns von Sari A. Laakso stellen unter anderem den Calendar Strip vor.
Calendar Strip von Sari A. Laakso
Im Gegensatz zu den üblichen Kalendern, in denen aufeinander folgende Monate als abgesetzte Blöcke erkennbar sind, “kleben” sie im Kalenderstreifen aneinander. Die Zeit wird, vergeben Sie mir meinen pathetischen Ton, als Kontinuum greifbar. Allerdings ist der Streifen vergleichsweise ausladend. Auch bin ich nicht sicher, ob man sich nicht zu leicht im Wust der Zahlen verliert. Wie der Screenshot zeigt, gibt es aber Monatsabgrenzungen, die beim Lesen unterstützen.
Fibonacci Calendar UI ist ein weiterer Vorschlag für eine Kalenderansicht. Die ihr zugrunde liegende Idee ist, Informationen zu vier Tagen anzuzeigen. Der aktuelle Tag nimmt den größten Raum ein, jeder darauf folgende Tag erhält etwas weniger Platz.
Fibonacci Calendar UI
Auch diese Kalenderansicht braucht relativ viel Platz.Sie stellt den aktuellen Tag in den Mittelpunkt, erlaubt aber dennoch einen Blick in die nähere Zukunft.
Dieser Post hat uns ziemlich weit weg von mobilen Geräten geführt. Wir werden aber sehr schnell den weg zurück finden. :-) Bleiben Sie also dran. Zum Schluss noch ein Link: Im Calendar and Date Picker Design Showcase stellt Webentwickler Christian Watson eine ganzer Reihe Web-basierter Kalender vor. Die Sammlung ist in jedem Fall einen Blick wert.

2009-05-26

Gestaltung für Smartphones und den Desktop (3)

Willkommen zum dritten Teil meiner losen Serie über die Gestaltung von Benutzeroberflächen für mobile Geräte sowie dem Desktop. Wie versprochen geht es diesmal um die Datumsauswahl. Werfen wir zunächst einen Blick auf ein paar gängige Realisierungsformen.
Screenshot: Widget der Windows Sidebar
Das erste Beispiel ist ein Widget der Windows Sidebar.
Screenshot: Dashboard-Widget unter Mac OS X2
Und hier das Pendant unter Mac OS X, also ein Dashboard-Widget.
Von gestalterischen Unterschieden abgesehen, ist der Aufbau gleich: eine Kopfzeile zeigt Monat und Jahr. Zwei Pfeile gestatten das monatsweise Blättern. Der eigentliche Datumsbereich zeigt 6 Wochen. Der aktuelle Tag ist hervorgehoben.
Nun ein kurzer Blick auf mobile Geräte. Der folgende Screenshot zeigt den Kalender des Palm Pre.
Kalender des Palm Pre
Das große Display des Geräts wird vollständig genutzt. Die Datumsauswahl wirkt elegant und ergonomisch. Ihre Realisierung orientiert sich eindeutig am Desktop.
Schließlich die Datumsauswahl der Android-Plattform:
Screenshot: Datumsauswahl der Android-Plattform 
Sie wirkt auf den ersten Blick spartanisch. Die Funktionsweise ist aber mit der Walzen-Metapher des iPhone, die wir bereits kennen gelernt haben, vergleichbar. Die drei Zahlen sind editierbar, das heißt, auch große Zeitsprünge sind schnell erledigt.
Fassen wir zusammen. Bisher sind wir zwei Ausprägungen der Datumseingabe begegnet. Zum einen die Auswahl durch Anklicken oder Antippen eines Datums aus einem Monatsbereich. Zum anderen die Eingabe durch drei unabhängige Felder. Werte dieser Felder werden durch Gesten (Blättern, Tippen) verändert. Nahe Termine lassen sich sicher mit beiden Varianten schnell und komfortabel selektieren. Wie aber sieht es mit länger zurück liegenden Jahren aus?
Nehmen Sie als Beispiel ein Programm, das Geburtstage verwaltet. Aus Rückmeldungen von Anwendern meines Programms TKBirthdayReminder schließe ich, dass hier die Android-Variante nicht optimal ist. Fairerweise muss man aber sagen, dass dies für alle Drei-Feld-Varianten zutreffen dürfte. Heißt dies im Umkehrschluss, dass die Desktop-übliche Darstellung besser geeignet ist?
Screenshot: Geburtstagseingabe in Apples Addressbuch
Dieser Screenshot zeigt, wie man in Apples Addressbuch Geburtstage einträgt. Erstaunlicherweise finden wir hier eine Variante der Drei-Felder-Eingabe. Ein weiteres Beispiel:
Screenshot: Auswählen eines Datums in iCal
Dieser Screenshot zeigt, wie man unter Mac OS X im Programm iCal zu einem Datum springt.
Was schließen wir daraus? Natürlich ist es nicht weiter verwunderlich, dass die Eingabe von Zahlen der schnellste Weg ist, um zu weit entfernten Datumswerten zu gelangen. Die eigentliche Erkenntnis ist die Bestätigung einer These aus der letzten Folge. Nämlich dass gute Bedienelemente die vorhandenen Ressourcen einer Plattform optimal nutzen. Auf dem Desktop ist eine Tastatur eben immer vorhanden. Auf dem Smartphone hingegen nicht.
Auch in der nächsten Folge bleib ich bei der Datumseingabe. Dann möchte ich Ihnen einige spannende Varianten vorstellen. Bleiben Sie dran. Und wie immer freue ich mich natürlich über Ihre Kommentare.