/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.jme3.gde.desktop.executables; import com.jme3.gde.core.j2seproject.ProjectExtensionManager; import com.jme3.gde.core.j2seproject.ProjectExtensionProperties; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.IOException; import javax.swing.JComponent; import org.netbeans.api.project.Project; import org.netbeans.spi.project.ui.support.ProjectCustomizer; import org.openide.util.Exceptions; import org.openide.util.Lookup; import org.openide.util.NbBundle; /** * * @author normenhansen */ @ProjectCustomizer.CompositeCategoryProvider.Registration(projectType = "org-netbeans-modules-java-j2seproject", category = "Application", position = 420) public class DesktopExeCompositeProvider implements ProjectCustomizer.CompositeCategoryProvider { private static final String CAT_LWJGL_APPLET = "DesktopExe"; // NOI18N private static ProjectExtensionProperties jwsProps = null; private final String[] keyList = new String[]{ "windows-x86.app.enabled", "windows-x64.app.enabled", "linux-x86.app.enabled", "linux-x64.app.enabled", "macosx-x64.app.enabled", "bundle.jre.enabled" }; public DesktopExeCompositeProvider() { } @Override public ProjectCustomizer.Category createCategory(Lookup context) { return ProjectCustomizer.Category.create(CAT_LWJGL_APPLET, NbBundle.getMessage(DesktopExeCompositeProvider.class, "LBL_Category_Desktop_EXE"), null); } @Override public JComponent createComponent(ProjectCustomizer.Category category, Lookup context) { jwsProps = new ProjectExtensionProperties(context.lookup(Project.class), keyList); DesktopExeCustomizerPanel panel = new DesktopExeCustomizerPanel(jwsProps); category.setStoreListener(new SavePropsListener(jwsProps, context.lookup(Project.class))); category.setOkButtonListener(panel); return panel; } private class SavePropsListener implements ActionListener { private final ProjectExtensionManager desktopDeployment; private final ProjectExtensionProperties properties; private final Project project; public SavePropsListener(ProjectExtensionProperties props, Project project) { this.properties = props; this.project = project; desktopDeployment = new ProjectExtensionManager("desktop-deployment", "v1.0", new String[]{"jar", "-desktop-deployment"}); desktopDeployment.setDataZip("nbres:/com/jme3/gde/desktop/executables/desktop-deployment-data.zip"); } public void actionPerformed(ActionEvent e) { if ("true".equals(properties.getProperty("windows-x86.app.enabled")) || "true".equals(properties.getProperty("windows-x64.app.enabled")) || "true".equals(properties.getProperty("linux-x86.app.enabled")) || "true".equals(properties.getProperty("linux-x64.app.enabled")) || "true".equals(properties.getProperty("macosx-x64.app.enabled"))) { desktopDeployment.loadTargets("nbres:/com/jme3/gde/desktop/executables/desktop-deployment-targets.xml"); desktopDeployment.checkExtension(project); if("true".equals(properties.getProperty("bundle.jre.enabled"))){ checkJreDownloads(); } } else { desktopDeployment.removeExtension(project); } try { properties.store(); } catch (IOException ioe) { Exceptions.printStackTrace(ioe); } } public void checkJreDownloads() { String projectPath = project.getProjectDirectory().getPath(); if ("true".equals(properties.getProperty("windows-x86.app.enabled"))) { String jreName = projectPath + File.separator + "resources" + File.separator + "desktop-deployment" + File.separator + "jre-windows-x86.tar.gz"; if (!new File(jreName).exists()) { JreDownloader.downloadJre("windows-i586", jreName); } } if ("true".equals(properties.getProperty("windows-x64.app.enabled"))) { String jreName = projectPath + File.separator + "resources" + File.separator + "desktop-deployment" + File.separator + "jre-windows-x64.tar.gz"; if (!new File(jreName).exists()) { JreDownloader.downloadJre("windows-x64", jreName); } } if ("true".equals(properties.getProperty("linux-x86.app.enabled"))) { String jreName = projectPath + File.separator + "resources" + File.separator + "desktop-deployment" + File.separator + "jre-linux-x86.tar.gz"; if (!new File(jreName).exists()) { JreDownloader.downloadJre("linux-i586", jreName); } } if ("true".equals(properties.getProperty("linux-x64.app.enabled"))) { String jreName = projectPath + File.separator + "resources" + File.separator + "desktop-deployment" + File.separator + "jre-linux-x64.tar.gz"; if (!new File(jreName).exists()) { JreDownloader.downloadJre("linux-x64", jreName); } } if ("true".equals(properties.getProperty("macosx-x64.app.enabled"))) { String jreName = projectPath + File.separator + "resources" + File.separator + "desktop-deployment" + File.separator + "jre-macosx-x64.tar.gz"; if (!new File(jreName).exists()) { JreDownloader.downloadJre("macosx-x64", jreName); } } } } }