diff options
Diffstat (limited to 'enigma/src/main/java')
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/Enigma.java | 15 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/api/service/ProjectService.java | 13 |
2 files changed, 27 insertions, 1 deletions
diff --git a/enigma/src/main/java/cuchaz/enigma/Enigma.java b/enigma/src/main/java/cuchaz/enigma/Enigma.java index 729a114..13640bc 100644 --- a/enigma/src/main/java/cuchaz/enigma/Enigma.java +++ b/enigma/src/main/java/cuchaz/enigma/Enigma.java | |||
| @@ -36,6 +36,7 @@ import cuchaz.enigma.api.service.EnigmaService; | |||
| 36 | import cuchaz.enigma.api.service.EnigmaServiceFactory; | 36 | import cuchaz.enigma.api.service.EnigmaServiceFactory; |
| 37 | import cuchaz.enigma.api.service.EnigmaServiceType; | 37 | import cuchaz.enigma.api.service.EnigmaServiceType; |
| 38 | import cuchaz.enigma.api.service.JarIndexerService; | 38 | import cuchaz.enigma.api.service.JarIndexerService; |
| 39 | import cuchaz.enigma.api.service.ProjectService; | ||
| 39 | import cuchaz.enigma.classprovider.CachingClassProvider; | 40 | import cuchaz.enigma.classprovider.CachingClassProvider; |
| 40 | import cuchaz.enigma.classprovider.ClassProvider; | 41 | import cuchaz.enigma.classprovider.ClassProvider; |
| 41 | import cuchaz.enigma.classprovider.CombiningClassProvider; | 42 | import cuchaz.enigma.classprovider.CombiningClassProvider; |
| @@ -71,6 +72,10 @@ public class Enigma { | |||
| 71 | } | 72 | } |
| 72 | 73 | ||
| 73 | public EnigmaProject openJars(List<Path> paths, ClassProvider libraryClassProvider, ProgressListener progress) throws IOException { | 74 | public EnigmaProject openJars(List<Path> paths, ClassProvider libraryClassProvider, ProgressListener progress) throws IOException { |
| 75 | return openJars(paths, libraryClassProvider, progress, true); | ||
| 76 | } | ||
| 77 | |||
| 78 | public EnigmaProject openJars(List<Path> paths, ClassProvider libraryClassProvider, ProgressListener progress, boolean callServices) throws IOException { | ||
| 74 | ClassProvider jarClassProvider = getJarClassProvider(paths); | 79 | ClassProvider jarClassProvider = getJarClassProvider(paths); |
| 75 | ClassProvider classProvider = new CachingClassProvider(new CombiningClassProvider(jarClassProvider, libraryClassProvider)); | 80 | ClassProvider classProvider = new CachingClassProvider(new CombiningClassProvider(jarClassProvider, libraryClassProvider)); |
| 76 | Set<String> scope = Set.copyOf(jarClassProvider.getClassNames()); | 81 | Set<String> scope = Set.copyOf(jarClassProvider.getClassNames()); |
| @@ -79,7 +84,15 @@ public class Enigma { | |||
| 79 | ClassProvider classProviderWithFrames = index.indexJar(scope, classProvider, progress); | 84 | ClassProvider classProviderWithFrames = index.indexJar(scope, classProvider, progress); |
| 80 | services.get(JarIndexerService.TYPE).forEach(indexer -> indexer.acceptJar(scope, classProviderWithFrames, index)); | 85 | services.get(JarIndexerService.TYPE).forEach(indexer -> indexer.acceptJar(scope, classProviderWithFrames, index)); |
| 81 | 86 | ||
| 82 | return new EnigmaProject(this, paths, classProvider, index, Utils.zipSha1(paths.toArray(new Path[0]))); | 87 | EnigmaProject project = new EnigmaProject(this, paths, classProvider, index, Utils.zipSha1(paths.toArray(new Path[0]))); |
| 88 | |||
| 89 | if (callServices) { | ||
| 90 | for (ProjectService projectService : services.get(ProjectService.TYPE)) { | ||
| 91 | projectService.onProjectOpen(project); | ||
| 92 | } | ||
| 93 | } | ||
| 94 | |||
| 95 | return project; | ||
| 83 | } | 96 | } |
| 84 | 97 | ||
| 85 | private ClassProvider getJarClassProvider(List<Path> jars) throws IOException { | 98 | private ClassProvider getJarClassProvider(List<Path> jars) throws IOException { |
diff --git a/enigma/src/main/java/cuchaz/enigma/api/service/ProjectService.java b/enigma/src/main/java/cuchaz/enigma/api/service/ProjectService.java new file mode 100644 index 0000000..a9deefc --- /dev/null +++ b/enigma/src/main/java/cuchaz/enigma/api/service/ProjectService.java | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | package cuchaz.enigma.api.service; | ||
| 2 | |||
| 3 | import cuchaz.enigma.api.view.ProjectView; | ||
| 4 | |||
| 5 | public interface ProjectService extends EnigmaService { | ||
| 6 | EnigmaServiceType<ProjectService> TYPE = EnigmaServiceType.create("project"); | ||
| 7 | |||
| 8 | default void onProjectOpen(ProjectView project) { | ||
| 9 | } | ||
| 10 | |||
| 11 | default void onProjectClose(ProjectView project) { | ||
| 12 | } | ||
| 13 | } | ||