2008-11-28

Bildergalerie

Microsoft hat mit Office 2007 und den dort verwendeten Ribbons neue Wege in der Gestaltung von Bedienoberflächen gesucht. Derzeit wird viel darüber spekuliert, wie viel davon im Nachfolger von Windows Vista zu sehen sein wird. Für mich ist das genau der richtige Moment, um einen Schnappschuss der aktuell vorhandenen Ausprägungen zu machen. Zunächst also ein Blick auf Programme, die zu Vista gehören.
Windows Media Player 
Windows Media Player
Der große schwarze Balken wirkt dominierend, allerdings ästhetisch durchaus ansprechend. Auffällig ist die fehlende Menüleiste.
Windows Movie Maker
Windows Movie Maker
Der Movie Maker erinnert an den Media Player, hat aber eine, ebenfalls in schwarz gehauchte, Menüleiste. Optisch bildet sie mit der Toolbar-ähnlichen Leiste eine Einheit, die allerdings sehr füllig wirkt.
Windows Fotogalerie
Windows Fotogalerie
Die Fotogalerie ähnelt wieder stärker dem Media Player, eine Menüleiste fehlt.
Windows DVD Maker
Windows DVD Maker
Auch der DVD Maker hat einen schwarzen Balken am oberen Rand, weicht durch den großen Fensterrahmen aber stark vom bisher gezeigten ab.
Zum Schluss der Windows Kalender:
Windows Kalender
Windows Kalender
Er zeigt eine Menüleiste mit einem Toolbar-ähnlichemn Element darunter, das aber nicht in schwarz gehalten ist, sondern in blau.
Hier nun ein Blick auf die Produkte der Windows Live-Reihe, zunächst der Klassiker Windows Live Messenger:
Windows Live Messenger
Wndows Live Messenger
Optisch sicher sehr ansprechend...
Windows Live OneCare
Windows Live OneCare
Windows Live Writer
Windows Live Writer
Der Weblog-Editor Windows Live Writer grieft aus meiner Sicht nur wenige Stil-Elemente der bisher gezeigten Live-Produkte auf.
Windows Live Mail
Windows Live Mail
Und Windows Live Mail wirkt irgendwie ähnlich, und doch im Detail unterschiedlich.
Wenn tatsächlich, wie derzeit zu lesen ist, Windows Live-Produkte bestimmte Programme aus Vista ablösen, stellt sich die Frage, ob Microsoft die Optik bis zum Erscheinen des Vista-Nachfolgers nochmals ändert, ggf. vereinheitlicht. Derzeit bietet sich dem Anwender jedenfalls ein bunter Strauß an Gestaltung. Davon ausgehend das Aussehen eines typischen Windows-Desktops in 3 oder 5 Jahren ableiten zu wollen, entspräche sicher dem Lösen einer Gleichung mit sehr vielen Variablen...

2008-11-26

Be-Swing-t den Fokus wechseln

Traditionell wechselt man mit Tab den Fokus. Der Anwender ist dieses Verhalten gewohnt, und deshalb sollte man sich sehr genau überlegen, ob man davon abweicht. Wenn es hierfür zwingende Gründe gibt, ist einem Swing zumindest bei der Realisierung sehr behilflich:

package com.thomaskuenneth;

import java.awt.AWTKeyStroke;
import java.awt.KeyboardFocusManager;
import java.awt.event.KeyEvent;
import java.util.HashSet;
import java.util.Set;
import javax.swing.FocusManager;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class TabEnterTest {

  public static void main(String[] args) {
    JFrame f = new JFrame(TabEnterTest.class.getName());
    f.setBounds(100, 50, 600, 300);
    JPanel p = new JPanel();
    for (int i = 0; i < 3; i++) {
      p.add(new JButton("Button#" + Integer.toString(i + 1)));
    }
    f.setContentPane(p);
    f.validate();
    KeyboardFocusManager keyboardFocusManager = FocusManager
               .getCurrentKeyboardFocusManager();
    Set keystrokes = keyboardFocusManager
        .getDefaultFocusTraversalKeys(
            KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS);
    HashSet hashSet = new HashSet(keystrokes);
    hashSet.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_ENTER, 0));
    keyboardFocusManager.setDefaultFocusTraversalKeys(
    KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, hashSet);
    f.setVisible(true);
  }
}

Dieses kleine Progrämmchen öffnet ein Fenster und versieht es mit drei Schaltflächen. Der Fokuswechsel erfolgt wie gewohnt mit Tab oder aber mit Enter.

Screenshot von TabEnterTest

Schlüssel zum Erfolg ist die Klasse KeyboardFocusManager. Der Ausdruck FocusManager.getCurrentKeyboardFocusManager() liefert eine solche Instanz. Deren Methode getDefaultFocusTraversalKeys() liefert ein (leider nicht veränderbares) Set. Damit wir diesem einen Wert hinzufügen können, instantiieren wir einfach ein HashSet. add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_ENTER, 0)) fügt ihm ein Element hinzu, das die Enter-Taste repräsentiert. In einem abschließenden Schritt wird das neue Set dem aktuellen KeyboardFocusManager übergeben. Das wars.

2008-11-25

Neues von jasconn

Diesmal gibt es Neuigkeiten zu jasconn, meinem Java-AppleScript-Connector. Ich habe eine neue Version in das CVS-Repository eingecheckt und eine fertige Version des Jars hochgeladen, die bei Langläufer-Scripts nicht mehr blockiert.
tell application "iTunes"
get {id, name} of every track of playlist 1
end tell

Ein solches Script kann bei einer umfangreichen Bibliothek schon etwas länger dauern. Da Apple die Java-Cocoa-Bridge schon vor längerer Zeit für deprecated erklärt hat, greift jasconn auf das Kommando osascript zurück. Die Ausgaben des Scripts, sowie etwaige Fehler, werden aus dem Standardausgabe- bzw. Standardfehlerstrom gelesen. An dieser Stelle konnte es bei früheren Versionen passieren, dass jasconn blockiert wurde. Dies ist nun behoben.

2008-11-16

Pfad von javaws.exe ermitteln (nur Windows)

Manchmal kann es notwendig sein, den Pfad von javaws.exe zu kennen. Das folgende Rezept beschreibt keine "offizielle" Vorgehensweise, sondern basiert auf der Erkenntnis, dass es bisher immer so war.
In der Registry findet sich unter HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft der Zweig Java Web Start. Dieser Schlüssel (HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Web Start) hat den Wert CurrentVersion und ist vom Typ REG_SZ. Dessen Inhalt ist der Name eines Unterschlüssels, beispielsweise 1.5.0_10. Es gibt also einen Zweig HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Web Start\1.5.0_10, der wiederum den Eintrag Home (REG_SZ) hat. Sein Inhalt ist zum Beispiel C:\Programme\Java\jre1.5.0\bin. Man muss also nur noch \javaws.exe anhängen. Also...:
  1. den Schlüssel HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Web Start öffnen
  2. dessen Wert CurrentVersion  auslesen
  3. versuchen, einen Unterschlüssel zu öffnen, der so heißt, wie der ausgelesene Inhalt
  4. dessen Wert Home auslesen
  5. prüfen, ob er auf \ endet, falls nein, anfügen
  6. javaws.exe anfügen
  7. prüfen, ob der so zusammen gebaute Pfad gültig ist

2008-11-08

Kein Schwung mehr?

Offen gesagt hat es mich gewundert, wie lange es gedauert hat, bis die Nachricht von Jeanette Winzenburg bzgl. Suns "Ausstieg" aus dem SwingX-Projekt so richtig Wellen schlug. Die Swing-Szene hat eben nur wenige prominente Köpfe. Einer davon ist Kirill Grouchnikov, der mit seinem Weblog-Eintrag den "global panic"-Knopf gedrückt hat. Logsich, dass Chris Adamson sogar im Editor's Daily Blog auf java.net darauf Bezug nimmt.
Dabei ist es doch zumindest für jeden, der sich etwas intensiver mit Swing befasst, ein alter Hut, dass clientseitiges Java schon sehr lange vor sich hin dümpelt. Die so wichtigen JSRs 295 und 296 halten Winterschlaf. Alte Haudegen wie Scott Violet, Chet Haase und Hans Muller haben Sun verlassen. Und alle, die geblieben sind, schuften für JavaFX. Sie versuchen im Moment natürlich, die Wellen zu glätten. Die Bekenntnisse zu Swing und die Weiterentwicklung der Klassenbibliothek wirken für mich aber zur Zeit blass. Die Roadmap für JavaFX und das erste Vierteljahr nach Veröffentlichung des SDKs werden wohl erst Klarheit schaffen.

2008-11-05

Eine gute Frage

Es gibt viele Möglichkeiten, Ja oder Nein zu sagen. Ein paar davon möchte ich Ihnen in diesem Eintrag vorstellen. Hier die Vista-Rückfrage beim Löschen von Dateien.
image
Um keinen falschen Eindruck zu erwecken... mir geht es nicht um den Inhalt, sondern nur um die äussere Form, also die Gestaltung des Dialogs. Nun ein Dialog aus den Windows Live Writer.
image
Dieser Dialog ist dem ersten recht ähnlich, hat aber einen weißen Hintergrund im Inhaltsbereich. Eine Variation dieses Musters sehen Sie nun (Internet Explorer 7):
image
Auch sehr hübsch, jetzt aber mit dezenter Trennlinie zwischen Inhalts- und Schaltflächenbereich. Um keine Langeweile aufkommen zu lassen, hat der Internet Explorer auch die klassische Version parat:
image
Hier nochmals der Internet Explorer, nur ein anderer Dialog:
image
Sehen Sie den Unterschied?
Zum Schluss nochmals ein Beispiel aus der Windows Live-Reihe:
image
Die Grundform des Dialogs kennen wir schon, nur hat sich diesmal die Schaltfläche Abbrechen hinzu gesellt.
Nun liegt es mir, das möchte ich in aller Deutlichkeit klarstellen, fern, andere zu kritisieren. Das ist nicht mein Job. Was ich hier beispielhaft zeigen möchte ist: Vorgaben in Bezug auf die Ausgestaltung von Benutzeroberflächen zu machen ist ein erster, wichtiger Schritt. Ein zweiter, meiner Meinung nach genauso wichtiger Schritt ist, das Einhalten dieser Vorgaben zu überprüfen und ggf. einzufordern.

Reduzierung auf das Wesentliche

Oft sind die einfachsten Ideen die besten. Schon seit geraumer Zeit gibt es für den Mac das Programm WriteRoom, das die Eingabe von Text auf das Nötigste reduziert: die Eingabe von Text. Der Anwender sieht seine bereits geschriebenen Wörter und Sätze. Sonst nichts.
Wer selbst ab und an auf dem Computer schreibt, kann wahrscheinlich nachvollziehen, wie ablenkend das "Drumherum" sein kann. Wer keinen Mac hat, kann auf das mit Hilfe des .Net-Frameworks geschriebene (und ebenfalls seit geraumer Zeit verfügbare) Dark Room zurückgreifen.

Ich kann Jedem nur raten, diese Schlichtheit auszuprobieren.

Update 25.12.14: Screenshot entfernt