2010-06-30 10 views
1

Je suis confronté à ce problème depuis quelques jours et je ne peux pas déterminer ce que je fais de mal (ou s'il s'agit d'un bug):Déposer des fichiers sur l'icône de l'application dans le Dock

J'ai une application Mac personnalisée (en Java, si c'est important). Il prend essentiellement un type spécifique d'ensemble de documents, y effectue des traitements et envoie les résultats à un serveur. J'ai tout fonctionné, excepté le cas d'utilisation d'un utilisateur déposant un "dossier" sur l'icône de dock de l'application. Tout ce que j'ai lu jusqu'ici semble indiquer que la suppression d'une icône Mac Dock utilise les mêmes services de lancement que ceux utilisés par le Finder. Et pourtant, en ouvrant le répertoire Applications et en déposant sur l'application il fonctionne, alors que déposer sur l'icône de l'application dans le Dock ne fait rien.

Alors, voici quelques détails de ce que je l'ai essayé jusqu'à présent:

  • documents poignées App avec une extension * .foo, qui sont le document Bundles (c.-à-opt-clic donne l'option "Afficher le contenu")
  • Le document a UTI de org.example.foo, qui est conforme aux UTIs com.apple.package et public.composite-content (toutes les informations copiées à partir de l'application propriétaire Info.plist Exported Type UTIs key)
  • Info.plist déclare ce type de document dans Imported Type UTIs (UTImportedTypeDeclarations key)
  • également dans Info.plist, l'infection urinaire est déclarée dans les types de documents (clé CFBundleDocumentTypes)
    • CFBundleTypeExtensions comprend "foo"
    • CFBundleTypeOSTypes réglé sur "****"

Cmd -Out-drop sur l'icône Dock (pour forcer la baisse) ne fait rien. Déposer dans Finder fonctionne exactement comme prévu. Donc, cela semble être un problème avec la suppression de l'icône Dock spécifiquement.

Des idées sur quoi changer?

+0

Quelle version de Mac OS X utilisez-vous? Parce que l'API Java était obsolète dans 10.4 http://developer.apple.com/mac/library/qa/qa2001/qa1342.html – Maz

+0

Est-ce que vous faites des suppositions sur le répertoire de travail actuel lorsque l'application est lancée (par exemple en utilisant des chemins relatifs aux fichiers de données ou certains tels?)? Le répertoire de travail lorsqu'il est lancé à partir du Dock peut être différent que lorsque l'application est lancée à partir du Finder. –

+0

Sous CFBundleDocumentTypes, avez-vous spécifié LSTypeIsPackage? – JWWalker

Répondre

2

Maz a frappé le coeur du problème, je pense. L'application est configurée pour s'exécuter sous Mac OS X 10.5 ou 10.6, et les API Java que j'utilise (com.apple.eawt. *) Semblent être obsolètes sans être remplacées; ce qui explique probablement pourquoi cela fonctionne principalement, mais ne fonctionne pas de manière agaçante.

Il semblerait que la solution actuelle impliquera l'ingénierie inverse de l'exécutable JavaApplicationStub pour fonctionner avec les nouvelles API, et que les connexions JNI soient faites pour que les événements appropriés soient transmis à mon application.