You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
3.8 KiB
93 lines
3.8 KiB
/*
|
|
* 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 = "BuildCategory", 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",
|
|
"obfuscate.options"
|
|
};
|
|
private static String defaultOpts = "-keep public class * extends com.jme3.app.Application{public *;}\n"
|
|
+ "-keep public class * extends com.jme3.system.JmeSystemDelegate{public *;}\n"
|
|
+ "-keep public class * implements com.jme3.renderer.Renderer{public *;}\n"
|
|
+ "-keep public class * implements com.jme3.asset.AssetLoader{public *;}\n"
|
|
+ "-keep public class * implements com.jme3.asset.AssetLocator{public *;}\n"
|
|
+ "-keep public class * implements de.lessvoid.nifty.screen.ScreenController{public *;}\n"
|
|
+ "-dontwarn\n"
|
|
+ "-dontnote\n";
|
|
|
|
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);
|
|
if(jwsProps.getProperty("obfuscate.options")==null){
|
|
jwsProps.setProperty("obfuscate.options", defaultOpts);
|
|
}
|
|
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.11";
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|