¿Cómo abrir el editor preferido del sistema de usuario para un archivo dado?

Estoy tratando de descubrir cómo abrir el editor preferido del sistema para un archivo determinado.

Say, tenemos un administrador de archivos, escrito en Java. El usuario va a la carpeta y ve la lista de archivos. Y, por ejemplo, hay un archivoIcon.jpg. El usuario hace doble clic en el nombre del archivo y el archivo se abre en el editor preferido del sistema (es decir, Gimp). El problema principal es: ¿cómo hacer eso?

Podemos hacerRuntime.getRuntime().exec("something file"), pero de esta manera debe saber qué programa se prefiere en el entorno del usuario. ¿Pero cómo

También podemos hacerDesktop.getDesktop().edit(File file), pero de esta manera no podemos rastrear el proceso y no podemos saber, entonces este proceso secundario está cerrado. Otro problema: la función no funciona en Linux (al menos en Ubuntu 8.10). También hayDesktop.getDesktop().open(File file), pero obliga a abrir el visor de archivos, en lugar del visor del sistema para ese tipo de archivo.

Estoy buscando una solución durante toda la semana, pero no obtuve ninguna solución adecuada y genérica. ¿Conoces los otros enfoques para esta pregunta? Para mi proyecto sería suficiente si funcionara en Windows + Linux + Mac.

Gracias por sus respuestas y consejos.

Editar el 2009-02-08 23: 04

Otra sugerencia: ¿puedo forzar la ventana de "selección de aplicaciones" en Windows y Linux, como en Mac con "abrir archivo"? Por ejemplo, cuando intentas abrir un archivo, ¿se te pide que elijas la aplicación de la lista de las preferidas del sistema? (algo así como "Abrir con ..." en el explorador de Windows). ¿Tú sabes

Respuestas a la pregunta(4)

Su respuesta a la pregunta