Voici ce qui doit être fait:
Première partie:
Vous devez d'abord configurer les paramètres pour qu'OS X sache que l'extension .example
doit être associée à votre application. Ceci est fait avec le fichier Info.plist de votre application, à condition que vous ayez déjà intégré votre code Java dans un paquet .app
(voir les autres questions pour savoir comment faire).
This example vous montre exactement ce qu'il faut ajouter à votre fichier Info.plist (notez que bien que l'exemple soit pour iOS, il fonctionne exactement de la même manière sur OS X). Je ne vais pas répéter ce qu'il dit, mais en bref, vous devez ajouter deux clés:
CFBundleDocumentTypes
: Lets OS X connaître le type de documents qui peut être ouvert par l'application
UTExportedTypeDeclarations
: Raconte OS X sur le type de document personnalisé spécifique à cette application, qui dans ce cas est .example
fichiers
Notez qu'il existe un certain nombre de clés telles que CFBundleTypeExtensions
qui font la même chose que les clés ci-dessus, mais ils ont été désapprouvés depuis OS 10.5, vous ne voulez pas les utiliser au cas où Apple les supprime complètement.
Si vous ajoutez tout cela et que l'association de type de fichier ne semble pas fonctionner, vous pouvez essayer debug the problem using lsregister, un outil Terminal qui vous signalera tout problème. S'il revient sans erreur, tout devrait être configuré.
Deuxième partie:
Maintenant que OS X va ouvrir votre application lorsque vous double-cliquez sur un fichier se terminant par .example
, vous devez laisser votre application Java savoir comment gérer le fichier en cours d'ouverture.
Votre application recevra un événement de type com.apple.eawt.AppEvent.OpenFilesEvent
, que vous devrez gérer.Vous vous demandez peut-être comment gérer un événement déclenché avant même le démarrage de l'application Java, mais il semble que Java exécute tout d'abord tout dans la méthode principale de l'application, puis déclenche l'événement. Donc, quelque part dans la principale méthode sur le même thread, créez l'auditeur avec le code suivant:
//First, check for if we are on OS X so that it doesn't execute on
//other platforms. Note that we are using contains() because it was
//called Mac OS X before 10.8 and simply OS X afterwards
if (System.getProperty("os.name").contains("OS X")){
Application a = Application.getApplication();
a.setOpenFileHandler(new OpenFilesHandler() {
@Override
public void openFiles(OpenFilesEvent e) {
for (File file : e.getFiles()){
//Handle your file however you'd like
}
}
});
}
Une fois que vous faites cela, votre application va gérer les fichiers de documents qui ont été ouverts avant votre application a été lancée et après votre application A été lancé.
Pseudo-réponse: lire les docs. C'est là. (Ne cherchez pas seulement Java mais le développement de Mac en général – JoePasq
Un lieu ou un lien particulier? J'ai regardé les docs mais ne peux pas sembler le faire fonctionner, un exemple serait gentil. – steve