diff --git a/sdk/jme3-obfuscate/build.xml b/sdk/jme3-obfuscate/build.xml new file mode 100644 index 000000000..1114532fa --- /dev/null +++ b/sdk/jme3-obfuscate/build.xml @@ -0,0 +1,8 @@ + + + + + + Builds, tests, and runs the project com.jme3.gde.obfuscate. + + diff --git a/sdk/jme3-obfuscate/manifest.mf b/sdk/jme3-obfuscate/manifest.mf new file mode 100644 index 000000000..dcfd4f871 --- /dev/null +++ b/sdk/jme3-obfuscate/manifest.mf @@ -0,0 +1,6 @@ +Manifest-Version: 1.0 +OpenIDE-Module: com.jme3.gde.obfuscate +OpenIDE-Module-Implementation-Version: 0 +OpenIDE-Module-Layer: com/jme3/gde/obfuscate/layer.xml +OpenIDE-Module-Localizing-Bundle: com/jme3/gde/obfuscate/Bundle.properties + diff --git a/sdk/jme3-obfuscate/nbproject/build-impl.xml b/sdk/jme3-obfuscate/nbproject/build-impl.xml new file mode 100644 index 000000000..4ce7d4cff --- /dev/null +++ b/sdk/jme3-obfuscate/nbproject/build-impl.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + You must set 'suite.dir' to point to your containing module suite + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdk/jme3-obfuscate/nbproject/genfiles.properties b/sdk/jme3-obfuscate/nbproject/genfiles.properties new file mode 100644 index 000000000..e094c1c1b --- /dev/null +++ b/sdk/jme3-obfuscate/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +build.xml.data.CRC32=db46de11 +build.xml.script.CRC32=69663b9b +build.xml.stylesheet.CRC32=a56c6a5b@1.42.2 +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +nbproject/build-impl.xml.data.CRC32=db46de11 +nbproject/build-impl.xml.script.CRC32=c9f3ae73 +nbproject/build-impl.xml.stylesheet.CRC32=238281d1@1.42.2 diff --git a/sdk/jme3-obfuscate/nbproject/project.properties b/sdk/jme3-obfuscate/nbproject/project.properties new file mode 100644 index 000000000..6780df9a4 --- /dev/null +++ b/sdk/jme3-obfuscate/nbproject/project.properties @@ -0,0 +1,6 @@ +javac.source=1.5 +javac.compilerargs=-Xlint -Xlint:-serial +nbm.homepage=http://proguard.sourceforge.net/ +nbm.module.author=Normen Hansen +nbm.needs.restart=true +spec.version.base=0.8.0 diff --git a/sdk/jme3-obfuscate/nbproject/project.xml b/sdk/jme3-obfuscate/nbproject/project.xml new file mode 100644 index 000000000..9e38e99ba --- /dev/null +++ b/sdk/jme3-obfuscate/nbproject/project.xml @@ -0,0 +1,73 @@ + + + org.netbeans.modules.apisupport.project + + + com.jme3.gde.obfuscate + + + + com.jme3.gde.core + + + + 1 + 0.12 + + + + org.netbeans.modules.project.ant + + + + 1 + 1.40 + + + + org.netbeans.modules.projectapi + + + + 1 + 1.35 + + + + org.netbeans.modules.projectuiapi + + + + 1 + 1.50.0.8 + + + + org.openide.filesystems + + + + 7.46 + + + + org.openide.util + + + + 8.14 + + + + org.openide.util.lookup + + + + 8.6 + + + + + + + diff --git a/sdk/jme3-obfuscate/nbproject/suite.properties b/sdk/jme3-obfuscate/nbproject/suite.properties new file mode 100644 index 000000000..29d7cc9bd --- /dev/null +++ b/sdk/jme3-obfuscate/nbproject/suite.properties @@ -0,0 +1 @@ +suite.dir=${basedir}/.. diff --git a/sdk/jme3-obfuscate/release/libs/proguard.jar b/sdk/jme3-obfuscate/release/libs/proguard.jar new file mode 100644 index 000000000..f688284c7 Binary files /dev/null and b/sdk/jme3-obfuscate/release/libs/proguard.jar differ diff --git a/sdk/jme3-obfuscate/release/libs/retrace.jar b/sdk/jme3-obfuscate/release/libs/retrace.jar new file mode 100644 index 000000000..0c405bb77 Binary files /dev/null and b/sdk/jme3-obfuscate/release/libs/retrace.jar differ diff --git a/sdk/jme3-obfuscate/src/com/jme3/gde/obfuscate/Bundle.properties b/sdk/jme3-obfuscate/src/com/jme3/gde/obfuscate/Bundle.properties new file mode 100644 index 000000000..9d412a0fe --- /dev/null +++ b/sdk/jme3-obfuscate/src/com/jme3/gde/obfuscate/Bundle.properties @@ -0,0 +1,8 @@ +OpenIDE-Module-Display-Category=jMonkeyPlatform +OpenIDE-Module-Long-Description=\ + Support for obfuscating distributions using ProGuard +OpenIDE-Module-Name=Obfuscation Support +OpenIDE-Module-Short-Description=Support for obfuscating distributions +ObfuscateCustomizerPanel.jCheckBox1.text=Obfuscate Build +ProGuard=ProGuard +LBL_Category_Obfuscate=Obfuscation diff --git a/sdk/jme3-obfuscate/src/com/jme3/gde/obfuscate/ObfuscateCompositeProvider.java b/sdk/jme3-obfuscate/src/com/jme3/gde/obfuscate/ObfuscateCompositeProvider.java new file mode 100644 index 000000000..7db9f27b1 --- /dev/null +++ b/sdk/jme3-obfuscate/src/com/jme3/gde/obfuscate/ObfuscateCompositeProvider.java @@ -0,0 +1,107 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.jme3.gde.obfuscate; + +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.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 = 510) +public class ObfuscateCompositeProvider implements ProjectCustomizer.CompositeCategoryProvider { + + private static final String CAT_OBFUSCATION = "Obfuscation"; // NOI18N + private static ProjectExtensionProperties jwsProps = null; + private String[] keyList = new String[]{ + "obfuscate" + }; + + public ObfuscateCompositeProvider() { + } + + @Override + public ProjectCustomizer.Category createCategory(Lookup context) { + return ProjectCustomizer.Category.create(CAT_OBFUSCATION, + NbBundle.getMessage(ObfuscateCompositeProvider.class, "LBL_Category_Obfuscate"), null); + } + + @Override + public JComponent createComponent(ProjectCustomizer.Category category, Lookup context) { + jwsProps = new ProjectExtensionProperties(context.lookup(Project.class), keyList); + ObfuscateCustomizerPanel panel = new ObfuscateCustomizerPanel(jwsProps); + category.setStoreListener(new SavePropsListener(jwsProps, context.lookup(Project.class))); + category.setOkButtonListener(panel); + return panel; + } + + private class SavePropsListener implements ActionListener { + + private String extensionName = "obfuscate"; + private String extensionVersion = "v0.9"; + private String[] extensionDependencies = new String[]{"-post-jar", "-obfuscate"}; + private ProjectExtensionManager manager = new ProjectExtensionManager(extensionName, extensionVersion, extensionDependencies); + private ProjectExtensionProperties properties; + private Project project; + + public SavePropsListener(ProjectExtensionProperties props, Project project) { + this.properties = props; + this.project = project; + manager.setAntTaskLibrary("pro-guard"); + } + + public void actionPerformed(ActionEvent e) { + if ("true".equals(properties.getProperty("obfuscate"))) { + manager.loadTargets("nbres:/com/jme3/gde/obfuscate/pro-guard-targets.xml"); + manager.checkExtension(project); + } else { + manager.removeExtension(project); + } + try { + properties.store(); + } catch (IOException ioe) { + Exceptions.printStackTrace(ioe); + } + } + +// private void unZipFile(InputStream source, FileObject projectRoot) throws IOException { +// try { +// ZipInputStream str = new ZipInputStream(source); +// ZipEntry entry; +// while ((entry = str.getNextEntry()) != null) { +// if (entry.isDirectory()) { +// FileUtil.createFolder(projectRoot, entry.getName()); +// } else { +// FileObject fo = FileUtil.createData(projectRoot, entry.getName()); +// writeFile(str, fo); +// } +// } +// } finally { +// source.close(); +// } +// } +// +// private void writeFile(ZipInputStream str, FileObject fo) throws IOException { +// OutputStream out = fo.getOutputStream(); +// try { +// FileUtil.copy(str, out); +// } finally { +// out.close(); +// } +// } + } +} diff --git a/sdk/jme3-obfuscate/src/com/jme3/gde/obfuscate/ObfuscateCustomizerPanel.form b/sdk/jme3-obfuscate/src/com/jme3/gde/obfuscate/ObfuscateCustomizerPanel.form new file mode 100644 index 000000000..23cb97c48 --- /dev/null +++ b/sdk/jme3-obfuscate/src/com/jme3/gde/obfuscate/ObfuscateCustomizerPanel.form @@ -0,0 +1,45 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/sdk/jme3-obfuscate/src/com/jme3/gde/obfuscate/ObfuscateCustomizerPanel.java b/sdk/jme3-obfuscate/src/com/jme3/gde/obfuscate/ObfuscateCustomizerPanel.java new file mode 100644 index 000000000..feaba966a --- /dev/null +++ b/sdk/jme3-obfuscate/src/com/jme3/gde/obfuscate/ObfuscateCustomizerPanel.java @@ -0,0 +1,88 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +/* + * LwjglAppletCustomizerPanel.java + * + * Created on 11.11.2010, 16:56:53 + */ +package com.jme3.gde.obfuscate; + +import com.jme3.gde.core.j2seproject.ProjectExtensionProperties; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import org.openide.util.HelpCtx; + +/** + * + * @author normenhansen + */ +public class ObfuscateCustomizerPanel extends javax.swing.JPanel implements ActionListener { + + private ProjectExtensionProperties properties; + + /** Creates new form LwjglAppletCustomizerPanel */ + public ObfuscateCustomizerPanel(ProjectExtensionProperties properties) { + this.properties = properties; + initComponents(); + loadProperties(); + HelpCtx.setHelpIDString(this, "sdk.application_deployment"); + } + + private void loadProperties() { + String str = properties.getProperty("obfuscate"); + if ("true".equals(str)) { + jCheckBox1.setSelected(true); + } else { + jCheckBox1.setSelected(false); + } + } + + private void saveProperties() { + if (jCheckBox1.isSelected()) { + properties.setProperty("obfuscate", "true"); + } else { + properties.setProperty("obfuscate", ""); + } + } + + public void actionPerformed(ActionEvent e) { + saveProperties(); + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jCheckBox1 = new javax.swing.JCheckBox(); + + jCheckBox1.setText(org.openide.util.NbBundle.getMessage(ObfuscateCustomizerPanel.class, "ObfuscateCustomizerPanel.jCheckBox1.text")); // NOI18N + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(jCheckBox1, javax.swing.GroupLayout.DEFAULT_SIZE, 328, Short.MAX_VALUE) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(jCheckBox1) + .addContainerGap(241, Short.MAX_VALUE)) + ); + }// //GEN-END:initComponents + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JCheckBox jCheckBox1; + // End of variables declaration//GEN-END:variables +} diff --git a/sdk/jme3-obfuscate/src/com/jme3/gde/obfuscate/layer.xml b/sdk/jme3-obfuscate/src/com/jme3/gde/obfuscate/layer.xml new file mode 100644 index 000000000..3b540d710 --- /dev/null +++ b/sdk/jme3-obfuscate/src/com/jme3/gde/obfuscate/layer.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/sdk/jme3-obfuscate/src/com/jme3/gde/obfuscate/pro-guard-targets.xml b/sdk/jme3-obfuscate/src/com/jme3/gde/obfuscate/pro-guard-targets.xml new file mode 100644 index 000000000..e1b9435ba --- /dev/null +++ b/sdk/jme3-obfuscate/src/com/jme3/gde/obfuscate/pro-guard-targets.xml @@ -0,0 +1,36 @@ + + + + -libraryjars ${proguard.library.path} + -injars ${dist.jar} + -outjars ${dist.jar}.obfuscated.jar + -keepclasseswithmembers public class * { + public static void main(java.lang.String[]); + } + -keep public class * implements de.lessvoid.nifty.screen.ScreenController + -keep public class * extends com.jme3.app.Application + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sdk/jme3-obfuscate/src/com/jme3/gde/obfuscate/pro-guard.xml b/sdk/jme3-obfuscate/src/com/jme3/gde/obfuscate/pro-guard.xml new file mode 100644 index 000000000..d2cbc8d69 --- /dev/null +++ b/sdk/jme3-obfuscate/src/com/jme3/gde/obfuscate/pro-guard.xml @@ -0,0 +1,22 @@ + + + + + pro-guard + j2se + com.jme3.gde.obfuscate.Bundle + + classpath + jar:nbinst://com.jme3.gde.obfuscate/libs/proguard.jar!/ + jar:nbinst://com.jme3.gde.obfuscate/libs/retrace.jar!/ + + + src + + + javadoc + +