2012-04-06 10 views
11

Quiero abrir archivos arbitrarios desde Eclipse. Actualmente lo estoy haciendo así:Eclipse: ¿Cómo solicitarle al usuario que elija una aplicación para abrir un archivo?

if (((File) selectedElement).isFile()) { 
    try { 
      Desktop.getDesktop().open((File) selectedElement); 
    } catch (IOException e) { 
     //TODO prompt for the appropriate application to open this file. 
     e.printStackTrace(); 
    } 
} 

Lamentablemente, esto solo funciona, si el sistema operativo tiene una aplicación predeterminada asociada con el tipo de archivo. Es por eso que, si no hay ninguna aplicación predeterminada definida, quiero preguntarle al usuario qué aplicación debería usar. Pero no tengo idea de cómo 1) encontrar una lista de aplicaciones disponibles y 2) abrir el archivo con esa aplicación. ¿Alguna pista sobre cómo implementar eso de una manera independiente de la plataforma?

+0

Qué quiere decir "de Eclipse", como en, esta es una aplicación RCP o plug-in; ¿O simplemente te refieres a que Eclipse es tu IDE? Porque usar Desktop.open() no es la forma de hacerlo de Eclipse en primer lugar. –

+0

Estoy escribiendo un complemento. Este complemento tiene la posibilidad de navegar a través de todos los archivos del sistema operativo. Ahora, si los archivos no son archivos de texto o archivos java, quiero abrir los archivos con la aplicación predeterminada en el sistema operativo. Por ejemplo documentos docx con MS Word. Esto funciona siempre que el tipo de archivo esté asociado a una aplicación en el sistema operativo. Si el tipo de archivo aún no tiene una aplicación predeterminada en el sistema operativo, mi enfoque falla y quiero preguntarle al usuario qué aplicación debo usar. Pero no sé cómo puedo hacer eso. –

Respuesta

4

Cualquier solución que pueda pensar dependerá del sistema operativo. Por ejemplo, si su aplicación se ejecuta en Windows, puede proporcionar al usuario una lista de todos los archivos * .exe en la carpeta Archivos de programa. O todas las aplicaciones en/bin,/sbin,/usr/bin,/usr/share/bin para un sistema operativo Linux.

Cuestiones relacionadas