Java Swing - Como clicar duas vezes em um arquivo de projeto no Mac para abrir meu aplicativo e carregar o arquivo?

Eu criei um aplicativo Mac Java Swing, e eu configurei uma extensão de arquivo (* .pkkt) para ele no arquivo "Info.plist", então, ao clicar duas vezes nesse arquivo, ele abre meu aplicativo.

Quando eu faço isso, o programa funciona bem. Agora eu preciso carregar o projeto (* .pkkt) no programa, mas o caminho do arquivo não é passado como um argumento para o método principal (...) no Mac, como acontece no sistema operacional Windows.

Depois de alguma pesquisa eu encontrei um frasco de manipulação da Apple "MRJToolkitStubs"que tem oMRJOpenDocumentHandler interface para lidar com esses arquivos clicados. Eu tentei usá-lo para carregar esse arquivo implementando essa interface na classe de programa principal, mas não está funcionando. O método implementado nunca é chamado na inicialização do programa.

Como esta interface é executada?

------------------------------------------------- Editar : Adicionar um exemplo de código

Aqui está o código que estou 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 mencionado no comentário acima, "getProjectFilePath ()" está sempre vazio!

questionAnswers(2)

yourAnswerToTheQuestion