|
@@ -35,7 +35,6 @@ import com.jme3.asset.AssetEventListener;
|
|
|
import com.jme3.asset.AssetKey;
|
|
|
import com.jme3.asset.AssetManager;
|
|
|
import com.jme3.asset.DesktopAssetManager;
|
|
|
-import com.jme3.system.JmeSystem;
|
|
|
import java.io.FileNotFoundException;
|
|
|
import java.io.InputStream;
|
|
|
import java.net.URL;
|
|
@@ -54,6 +53,7 @@ import org.netbeans.api.java.classpath.ClassPath;
|
|
|
import org.netbeans.api.java.project.JavaProjectConstants;
|
|
|
import org.netbeans.api.project.Project;
|
|
|
import org.netbeans.api.project.ProjectManager;
|
|
|
+import org.netbeans.api.project.ProjectUtils;
|
|
|
import org.netbeans.api.project.SourceGroup;
|
|
|
import org.netbeans.api.project.Sources;
|
|
|
import org.openide.filesystems.FileAttributeEvent;
|
|
@@ -61,7 +61,6 @@ import org.openide.filesystems.FileChangeListener;
|
|
|
import org.openide.filesystems.FileEvent;
|
|
|
import org.openide.filesystems.FileObject;
|
|
|
import org.openide.filesystems.FileRenameEvent;
|
|
|
-import org.openide.filesystems.FileStateInvalidException;
|
|
|
import org.openide.filesystems.XMLFileSystem;
|
|
|
import org.openide.util.Exceptions;
|
|
|
import org.openide.util.Lookup;
|
|
@@ -76,8 +75,8 @@ public class ProjectAssetManager extends DesktopAssetManager {
|
|
|
|
|
|
private Project project;
|
|
|
private List<String> folderNames = new LinkedList<String>();
|
|
|
- private List<AssetEventListener> assetEventListeners = Collections.synchronizedList(new LinkedList<AssetEventListener>());
|
|
|
- private List<ClassPathChangeListener> classPathListeners = Collections.synchronizedList(new LinkedList<ClassPathChangeListener>());
|
|
|
+ private final List<AssetEventListener> assetEventListeners = Collections.synchronizedList(new LinkedList<AssetEventListener>());
|
|
|
+ private final List<ClassPathChangeListener> classPathListeners = Collections.synchronizedList(new LinkedList<ClassPathChangeListener>());
|
|
|
private URLClassLoader loader;
|
|
|
private LinkedList<FileObject> jarItems = new LinkedList<FileObject>();
|
|
|
private LinkedList<ClassPathItem> classPathItems = new LinkedList<ClassPathItem>();
|
|
@@ -119,13 +118,9 @@ public class ProjectAssetManager extends DesktopAssetManager {
|
|
|
|
|
|
private void clearClassLoader() {
|
|
|
for (FileObject fileObject : jarItems) {
|
|
|
- try {
|
|
|
- Logger.getLogger(this.getClass().getName()).log(Level.INFO, "Remove locator:{0}", fileObject.getURL());
|
|
|
- unregisterLocator(fileObject.toURL().toExternalForm(),
|
|
|
- com.jme3.asset.plugins.UrlLocator.class);
|
|
|
- } catch (FileStateInvalidException ex) {
|
|
|
- Exceptions.printStackTrace(ex);
|
|
|
- }
|
|
|
+ Logger.getLogger(this.getClass().getName()).log(Level.INFO, "Remove locator:{0}", fileObject.toURL());
|
|
|
+ unregisterLocator(fileObject.toURL().toExternalForm(),
|
|
|
+ com.jme3.asset.plugins.UrlLocator.class);
|
|
|
}
|
|
|
jarItems.clear();
|
|
|
for (ClassPathItem fileObject : classPathItems) {
|
|
@@ -136,7 +131,7 @@ public class ProjectAssetManager extends DesktopAssetManager {
|
|
|
}
|
|
|
|
|
|
private synchronized void loadClassLoader() {
|
|
|
- Sources sources = project.getLookup().lookup(Sources.class);
|
|
|
+ Sources sources = ProjectUtils.getSources(project);
|
|
|
if (sources != null) {
|
|
|
if (loader != null) {
|
|
|
removeClassLoader(loader);
|
|
@@ -146,53 +141,49 @@ public class ProjectAssetManager extends DesktopAssetManager {
|
|
|
for (SourceGroup sourceGroup : groups) {
|
|
|
ClassPath path = ClassPath.getClassPath(sourceGroup.getRootFolder(), ClassPath.EXECUTE);
|
|
|
if (path != null) {
|
|
|
- try {
|
|
|
- FileObject[] roots = path.getRoots();
|
|
|
- for (FileObject fileObject : roots) {
|
|
|
- if (!fileObject.equals(getAssetFolder())) {
|
|
|
- FileChangeListener listener = new FileChangeListener() {
|
|
|
- public void fileFolderCreated(FileEvent fe) {
|
|
|
+ FileObject[] roots = path.getRoots();
|
|
|
+ for (FileObject fileObject : roots) {
|
|
|
+ if (!fileObject.equals(getAssetFolder())) {
|
|
|
+ FileChangeListener listener = new FileChangeListener() {
|
|
|
+ public void fileFolderCreated(FileEvent fe) {
|
|
|
// notifyClassPathListeners();
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
- public void fileDataCreated(FileEvent fe) {
|
|
|
- if (!fe.isExpected()) {
|
|
|
- notifyClassPathListeners();
|
|
|
- }
|
|
|
+ public void fileDataCreated(FileEvent fe) {
|
|
|
+ if (!fe.isExpected()) {
|
|
|
+ notifyClassPathListeners();
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- public void fileChanged(FileEvent fe) {
|
|
|
- if (!fe.isExpected()) {
|
|
|
- notifyClassPathListeners();
|
|
|
- }
|
|
|
+ public void fileChanged(FileEvent fe) {
|
|
|
+ if (!fe.isExpected()) {
|
|
|
+ notifyClassPathListeners();
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- public void fileDeleted(FileEvent fe) {
|
|
|
+ public void fileDeleted(FileEvent fe) {
|
|
|
// notifyClassPathListeners();
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
- public void fileRenamed(FileRenameEvent fre) {
|
|
|
+ public void fileRenamed(FileRenameEvent fre) {
|
|
|
// notifyClassPathListeners();
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
- public void fileAttributeChanged(FileAttributeEvent fae) {
|
|
|
+ public void fileAttributeChanged(FileAttributeEvent fae) {
|
|
|
// notifyClassPathListeners();
|
|
|
- }
|
|
|
- };
|
|
|
- fileObject.addRecursiveListener(listener);
|
|
|
- Logger.getLogger(this.getClass().getName()).log(Level.INFO, "Add classpath:{0}", fileObject);
|
|
|
- classPathItems.add(new ClassPathItem(fileObject, listener));
|
|
|
- urls.add(fileObject.toURL());
|
|
|
- }
|
|
|
- if (fileObject.toURL().toExternalForm().startsWith("jar")) {
|
|
|
- Logger.getLogger(this.getClass().getName()).log(Level.INFO, "Add locator:{0}", fileObject.getURL());
|
|
|
- jarItems.add(fileObject);
|
|
|
- registerLocator(fileObject.toURL().toExternalForm(),
|
|
|
- "com.jme3.asset.plugins.UrlLocator");
|
|
|
- }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ fileObject.addRecursiveListener(listener);
|
|
|
+ Logger.getLogger(this.getClass().getName()).log(Level.INFO, "Add classpath:{0}", fileObject);
|
|
|
+ classPathItems.add(new ClassPathItem(fileObject, listener));
|
|
|
+ urls.add(fileObject.toURL());
|
|
|
+ }
|
|
|
+ if (fileObject.toURL().toExternalForm().startsWith("jar")) {
|
|
|
+ Logger.getLogger(this.getClass().getName()).log(Level.INFO, "Add locator:{0}", fileObject.toURL());
|
|
|
+ jarItems.add(fileObject);
|
|
|
+ registerLocator(fileObject.toURL().toExternalForm(),
|
|
|
+ "com.jme3.asset.plugins.UrlLocator");
|
|
|
}
|
|
|
- } catch (FileStateInvalidException ex) {
|
|
|
- Exceptions.printStackTrace(ex);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -450,10 +441,12 @@ public class ProjectAssetManager extends DesktopAssetManager {
|
|
|
this.folderNames.add(0, folderName);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
public void addAssetEventListener(AssetEventListener listener) {
|
|
|
assetEventListeners.add(listener);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
public void removeAssetEventListener(AssetEventListener listener) {
|
|
|
assetEventListeners.remove(listener);
|
|
|
}
|