Cómo crear plugins Justinmind
Inicia la aplicación Eclipse dentro de tu carpeta JustinmindSDK. A continuación, selecciona una carpeta para guardar tu espacio de trabajo y haz clic en «Usar esta como predeterminada y no volver a preguntar».
Primera configuración
A continuación, selecciona «Crear un nuevo proyecto Java…».
Elige un nombre para tu plugin y asegúrate de que el entorno de ejecución JRE seleccionado es ‘JavaSE-11’. A continuación, haz clic en Siguiente.
En Configuración de Java haz clic en la pestaña Bibliotecas. Selecciona «ModulePath» y añade todos los módulos JavaFX que encontrarás en la carpeta ‘javafx’ dentro de la carpeta ‘JustinmindPluginSDK’ utilizando la opción Añadir JARS externos. Para Windows : JustinmindPluginSDK/javafx/lib Para MacOS: Applications/JustinmindPluginSDK/javafx/lib
Selecciona «Classpath» y añade todos los jars contenidos en la carpeta ‘api_plugins’ que encontrarás en la carpeta JustinmindSDK. Para Windows : JustinmindPluginSDK/api_plugins/ Para MacOS: /Aplicaciones/JustinmindPluginSDK/api_plugins/
Pulsa Finalizar. Selecciona No crear module-info.java cuando te lo pida. Ahora hemos creado el proyecto Java principal que contendrá el código de nuestro plugin.
Escribe tu plugin
Estructura
La estructura de un plugin Justinmind es muy sencilla. Sólo necesitas un archivo de clase principal que contendrá el código de ejecución de la acción de tu plugin. Esta clase debe implementar la interfaz ‘IPlugin’ de la API de Justinmind. IPlugin define dos métodos: getName() – este método definirá el nombre que se mostrará en la UI de Justinmind una vez instalado tu plugin. run() – lo que hace tu plugin. Crea el archivo de clase. Haz clic con el botón derecho del ratón en la carpeta ‘src’ de tu plugin y selecciona Nueva clase>. Dale un nombre a tu clase principal y selecciona la interfaz IPlugin del paquete com.justinmind.prototyper.api.plugins. Haz clic en Finalizar.
Ahora puedes escribir tu código.
Ejemplo: exportar todos los textos a un archivo CSV
import java.awt.Desktop; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.util.List; import com.justinmind.pcontrols.ControlUtils; import com.justinmind.prototyper.api.API; import com.justinmind.prototyper.api.IPrototype; import com.justinmind.prototyper.api.plugins.IPlugin; import com.justinmind.prototyper.api.ui.canvas.ICanvas; import com.justinmind.prototyper.api.ui.component.ICanvasComponent; import com.justinmind.prototyper.api.ui.component.IImage; import com.justinmind.prototyper.api.ui.component.IInput; import com.justinmind.prototyper.api.ui.component.IValuedComponent; import javafx.stage.FileChooser; public class TestPlugin implements IPlugin { @Override public void run() { try { IPrototype prototype = API.getPrototypeLoader().loadPrototype(); List canvas = prototype.getApiCanvases(); String content = "Word in prototype\n\n"; for (ICanvas current : canvas) { content += "Screen: " + current.getApiName() + "\n"; List components = current.getApiRoot().getApiChildren(); for (ICanvasComponent iComponent : components) { content += addTextsToContent(iComponent); } } FileChooser dialog = new FileChooser(); FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("CSV files (*.csv)", "*.csv"); dialog.getExtensionFilters().add(extFilter); File file = dialog.showSaveDialog(ControlUtils.getMainWindow()); if (file != null) { Writer output = null; FileWriter fw = null; try { fw = new FileWriter(file); output = new BufferedWriter(fw); output.write(content); output.close(); Desktop.getDesktop().open(file); } catch (IOException e) { Alert a = new Alert(AlertType.ERROR); a.setContentText(e.getLocalizedMessage()); a.show(); } } else { // show error } } catch (Exception e) { Alert a = new Alert(AlertType.ERROR); a.setContentText(e.getLocalizedMessage()); a.show(); } } private String addTextsToContent(ICanvasComponent iComponent) { String content = ""; if (iComponent instanceof IValuedComponent && !(iComponent instanceof IImage) && !(iComponent instanceof IInput)) { content += ((IValuedComponent) iComponent).getApiValue() + "\n"; } List components = iComponent.getApiChildren(); for (ICanvasComponent current_child : components) { content += addTextsToContent(current_child); } return content; } @Override public String getName() { return "Test Plugin"; } }
Despliegue
Una vez terminado tu código, tienes que exportarlo como archivo JAR para crear un plugin instalable válido en Justinmind. Haz clic con el botón derecho en tu proyecto de plugin y selecciona Exportar. Selecciona Archivo JAR en Java y haz clic en Siguiente.
Selecciona un destino de exportación dejando todas las demás opciones por defecto y pulsa Finalizar.
Instalar y ejecutar
Una vez que tengamos nuestro plugin empaquetado en un archivo JAR, tenemos que instalarlo en nuestra aplicación Justinmind para poder ejecutarlo. Abre Justinmind y abre el menú Plug-ins. Selecciona la opción Instalar un Plug-in… Selecciona el archivo JAR exportado que contiene tu plugin y haz clic en Abrir. Después de este punto tu plugin se instalará y aparecerá una nueva opción en el menú Plug-ins con el nombre que elegiste al implementar tu plugin. Para Ejecutarlo sólo tienes que hacer clic sobre él.