Java Swing - ¿Cómo hacer doble clic en un archivo de proyecto en Mac para abrir mi aplicación y cargar el archivo?

He creado una aplicación Mac Java Swing y he establecido una extensión de archivo (* .pkkt) para ella en el archivo "Info.plist", por lo que al hacer doble clic en ese archivo, se abre mi aplicación.

Cuando hago eso el programa se ejecuta bien. Ahora necesito cargar el proyecto (* .pkkt) en el programa, pero la ruta del archivo no se pasa como un argumento al método principal (...) en Mac como ocurre en el sistema operativo Windows.

Después de algunas búsquedas encontré un tarro de manipulación de Apple "MRJToolkitStubs"que tiene elMRJOpenDocumentHandler Interfaz para manejar tales archivos pulsados. He intentado usarlo para cargar ese archivo al implementar esa Interfaz en la clase de programa principal, pero no funciona. El método implementado nunca se llama al inicio del programa.

¿Cómo funciona esta interfaz?

------------------------------------------------- Editar : Agregar una muestra de código

Aquí está el código que estoy usando:

<code>public static void main( final String[] args ) {         
    .                   
    .         
    .       
        MacOpenHandler macOpenHandler = new MacOpenHandler();        
        String projectFilePath = macOpenHandler.getProjectFilePath();  // Always Empty !!           
    }
</code>
<code>class MacOpenHandler implements MRJOpenDocumentHandler {
    private String projectFilePath = ""; 

    public MacOpenHandler () {
        com.apple.mrj.MRJApplicationUtils.registerOpenDocumentHandler(this) ; 
    }

    @Override
    public void handleOpenFile( File projectFile ) { 
        try {
            if( projectFile != null ) {
                projectFilePath = projectFile.getCanonicalPath();
                   System.out.println( projectFilePath );  // Prints the path fine.
            }
        } catch (IOException e) {}  
    }

    public String getProjectFilePath() {
        return projectFilePath;
    }
}
</code>

Como se mencionó en el comentario anterior, "getProjectFilePath ()" siempre está vacío!

Respuestas a la pregunta(2)

Su respuesta a la pregunta