{"id":124706,"date":"2018-05-29T11:14:49","date_gmt":"2018-05-29T09:14:49","guid":{"rendered":"https:\/\/www.justinmind.com\/blog\/how-to-use-justinminds-api\/"},"modified":"2025-02-03T16:44:29","modified_gmt":"2025-02-03T15:44:29","slug":"how-to-use-justinminds-api","status":"publish","type":"post","link":"https:\/\/www.justinmind.com\/fr\/aide\/comment-utiliser-justinmind-api","title":{"rendered":"Comment cr\u00e9er des plugins pour Justinmind ?"},"content":{"rendered":"<p>Lancez l&rsquo;application Eclipse dans votre dossier JustinmindSDK. S\u00e9lectionnez ensuite un dossier pour enregistrer votre espace de travail et cliquez sur \u00ab\u00a0Use this as the default and do not ask again\u00a0\u00bb. <\/p>\n<h2><a id=\"plugin-setup\"><\/a>Premi\u00e8re installation<\/h2>\n<p>Ensuite, s\u00e9lectionnez \u00ab\u00a0Cr\u00e9er un nouveau projet Java&#8230;\u00a0\u00bb<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-14303\" src=\"https:\/\/www.justinmind.com\/wp-content\/uploads\/2021\/02\/welcome-justinmindsdk.png\" alt=\"bienvenue-justinmindsdk\"><\/p>\n<p>Choisissez un nom pour votre plugin et assurez-vous que l&rsquo;environnement d&rsquo;ex\u00e9cution JRE s\u00e9lectionn\u00e9 est &lsquo;JavaSE-11&rsquo;. Cliquez ensuite sur Suivant.<br \/>\n<img decoding=\"async\" class=\"alignnone size-full wp-image-14303\" src=\"https:\/\/www.justinmind.com\/wp-content\/uploads\/2021\/02\/new-plugin-justinmindsdk.png\" alt=\"newplugin-justinmindsdk\"><\/p>\n<p>Dans Java Settings, cliquez sur l&rsquo;onglet Libraries. S\u00e9lectionnez \u00ab\u00a0ModulePath\u00a0\u00bb et ajoutez tous les modules JavaFX que vous trouverez dans le dossier \u00ab\u00a0javafx\u00a0\u00bb \u00e0 l&rsquo;int\u00e9rieur du dossier \u00ab\u00a0JustinmindPluginSDK\u00a0\u00bb en utilisant l&rsquo;option Add External JARS. Pour Windows : JustinmindPluginSDK\/javafx\/lib Pour MacOS : Applications\/JustinmindPluginSDK\/javafx\/lib <\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-14303\" src=\"https:\/\/www.justinmind.com\/wp-content\/uploads\/2021\/02\/setup-modules-justinmindskd.png\" alt=\"modules-justinmindsdk\"><\/p>\n<p>S\u00e9lectionnez \u00ab\u00a0Classpath\u00a0\u00bb et ajoutez tous les jars contenus dans le dossier \u00ab\u00a0api_plugins\u00a0\u00bb que vous trouverez dans le dossier JustinmindSDK. Pour Windows : JustinmindPluginSDK\/api_plugins\/ Pour MacOS : \/Applications\/JustinmindPluginSDK\/api_plugins\/<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-14303\" src=\"https:\/\/www.justinmind.com\/wp-content\/uploads\/2021\/02\/setup-classpath-justinmindsdk.png\" alt=\"classpath-justinmindsdk\"><\/p>\n<p>Cliquez sur Terminer. S\u00e9lectionnez Don&rsquo;t create module-info.java lorsque vous y \u00eates invit\u00e9. Nous avons maintenant cr\u00e9\u00e9 le projet Java principal qui contiendra le code de notre plugin.<\/p>\n<h2><a id=\"write-your-plugin\"><\/a>R\u00e9digez votre plugin<\/h2>\n<p><strong>Structure<\/strong><\/p>\n<p>La structure d&rsquo;un plugin Justinmind est tr\u00e8s simple. Vous avez juste besoin d&rsquo;un fichier de classe principal qui contiendra le code d&rsquo;ex\u00e9cution de l&rsquo;action de votre plugin. Cette classe doit impl\u00e9menter l&rsquo;interface API de Justinmind \u00ab\u00a0IPlugin\u00a0\u00bb. IPlugin d\u00e9finit deux m\u00e9thodes : getName() &#8211; cette m\u00e9thode d\u00e9finira le nom qui sera affich\u00e9 dans l&rsquo;UI de Justinmind une fois votre plugin install\u00e9. run() &#8211; ce que fait votre plugin. Cr\u00e9ez le fichier de classe. Faites un clic droit sur le dossier &lsquo;src&rsquo; de votre plugin et s\u00e9lectionnez New&gt;Class. Donnez un nom \u00e0 votre classe principale et s\u00e9lectionnez l&rsquo;interface IPlugin du paquetage com.justinmind.prototyper.api.plugins. Cliquez sur Terminer.  <\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-14303\" src=\"https:\/\/www.justinmind.com\/wp-content\/uploads\/2021\/02\/create-plugin-class-justinmindsdk.png\" alt=\"createplugin-justinmindsdk\"><\/p>\n<p>Vous pouvez maintenant \u00e9crire votre code.<\/p>\n<h2><a id=\"example-plugin-one\"><\/a>Exemple : exporter tous les textes vers un fichier CSV<\/h2>\n<pre>import java.awt.Desktop;\nimport java.io.BufferedWriter;\nimport java.io.File;\nimport java.io.FileWriter;\nimport java.io.IOException;\nimport java.io.Writer;\nimport java.util.List;\nimport com.justinmind.pcontrols.ControlUtils;\nimport com.justinmind.prototyper.api.API;\nimport com.justinmind.prototyper.api.IPrototype;\nimport com.justinmind.prototyper.api.plugins.IPlugin;\nimport com.justinmind.prototyper.api.ui.canvas.ICanvas;\nimport com.justinmind.prototyper.api.ui.component.ICanvasComponent;\nimport com.justinmind.prototyper.api.ui.component.IImage;\nimport com.justinmind.prototyper.api.ui.component.IInput;\nimport com.justinmind.prototyper.api.ui.component.IValuedComponent;\nimport javafx.stage.FileChooser;\n\npublic class TestPlugin implements IPlugin { \n\n  @Override\n  public void run() {\n    try {\n      IPrototype prototype = API.getPrototypeLoader().loadPrototype();\n      List canvas = prototype.getApiCanvases();\n      String content = \"Word in prototype\\n\\n\";\n      for (ICanvas current : canvas) {\n        content += \"Screen: \" + current.getApiName() + \"\\n\";\n        List components = current.getApiRoot().getApiChildren();\n        for (ICanvasComponent iComponent : components) {\n          content += addTextsToContent(iComponent);\n        }\n      }\n \n      FileChooser dialog = new FileChooser();\n      FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter(\"CSV files (*.csv)\", \"*.csv\");\n      dialog.getExtensionFilters().add(extFilter);\n      File file = dialog.showSaveDialog(ControlUtils.getMainWindow());\n      if (file != null) {\n        Writer output = null;\n        FileWriter fw = null;\n        try {\n          fw = new FileWriter(file);\n          output = new BufferedWriter(fw);\n          output.write(content);\n          output.close();\n          Desktop.getDesktop().open(file);\n        } catch (IOException e) {\n          Alert a = new Alert(AlertType.ERROR);\n          a.setContentText(e.getLocalizedMessage());\n          a.show();\n        }\n      } else {\n        \/\/ show error\n      }\n    } catch (Exception e) {\n      Alert a = new Alert(AlertType.ERROR);\n      a.setContentText(e.getLocalizedMessage());\n      a.show();\n    }\n  } \n\n  private String addTextsToContent(ICanvasComponent iComponent) {\n    String content = \"\";\n    if (iComponent instanceof IValuedComponent &amp;&amp; !(iComponent instanceof IImage) &amp;&amp; !(iComponent instanceof IInput)) {\n      content += ((IValuedComponent) iComponent).getApiValue() + \"\\n\";\n    }\n    List components = iComponent.getApiChildren();\n    for (ICanvasComponent current_child : components) {\n      content += addTextsToContent(current_child);\n    }\n    return content;\n  }\n\n  @Override\n  public String getName() {\n    return \"Test Plugin\";\n  }\n}\n<\/pre>\n<h2><a id=\"deploy-plugin\"><\/a>D\u00e9ploiement<\/h2>\n<p>Une fois votre code termin\u00e9, vous devez l&rsquo;exporter sous forme de fichier JAR afin de cr\u00e9er un plugin installable valide dans Justinmind. Faites un clic droit sur votre projet de plugin et s\u00e9lectionnez Exporter. S\u00e9lectionnez JAR file sous Java et cliquez sur Next.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-14303\" src=\"https:\/\/www.justinmind.com\/wp-content\/uploads\/2021\/02\/select-jar-justinmindsdk.png\" alt=\"selectjar-justinmindsdk\"><\/p>\n<p>S\u00e9lectionnez une destination d&rsquo;exportation en laissant toutes les autres options par d\u00e9faut et cliquez sur Terminer.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-14303\" src=\"https:\/\/www.justinmind.com\/wp-content\/uploads\/2021\/02\/export-plugin-justinmindsdk.png\" alt=\"export-justinmindsdk\"><\/p>\n<h2><a id=\"install-plugin\"><\/a>Installez et ex\u00e9cutez<\/h2>\n<p>Une fois que notre plugin est emball\u00e9 dans un fichier JAR, nous devons l&rsquo;installer dans notre application Justinmind afin de le faire fonctionner. Ouvrez Justinmind et ouvrez le menu Plug-ins. S\u00e9lectionnez l&rsquo;option Installer un plug-in&#8230; S\u00e9lectionnez le fichier JAR export\u00e9 contenant votre plugin et cliquez sur Ouvrir. Apr\u00e8s cela, votre plug-in sera install\u00e9 et une nouvelle option appara\u00eetra dans le menu Plug-ins avec le nom que vous avez choisi lors de l&rsquo;impl\u00e9mentation de votre plug-in. Pour l&rsquo;ex\u00e9cuter, il vous suffit de cliquer dessus.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lancez l&rsquo;application Eclipse dans votre dossier JustinmindSDK. S\u00e9lectionnez ensuite un dossier pour enregistrer votre espace de travail et cliquez sur \u00ab\u00a0Use this as the default and&#8230;<\/p>\n","protected":false},"author":18,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[8436,8456],"tags":[],"class_list":["post-124706","post","type-post","status-publish","format-standard","hentry","category-guide-de-lutilisateur","category-api-et-plugins"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.justinmind.com\/fr\/wp-json\/wp\/v2\/posts\/124706"}],"collection":[{"href":"https:\/\/www.justinmind.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.justinmind.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.justinmind.com\/fr\/wp-json\/wp\/v2\/users\/18"}],"replies":[{"embeddable":true,"href":"https:\/\/www.justinmind.com\/fr\/wp-json\/wp\/v2\/comments?post=124706"}],"version-history":[{"count":2,"href":"https:\/\/www.justinmind.com\/fr\/wp-json\/wp\/v2\/posts\/124706\/revisions"}],"predecessor-version":[{"id":126156,"href":"https:\/\/www.justinmind.com\/fr\/wp-json\/wp\/v2\/posts\/124706\/revisions\/126156"}],"wp:attachment":[{"href":"https:\/\/www.justinmind.com\/fr\/wp-json\/wp\/v2\/media?parent=124706"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.justinmind.com\/fr\/wp-json\/wp\/v2\/categories?post=124706"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.justinmind.com\/fr\/wp-json\/wp\/v2\/tags?post=124706"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}