home *** CD-ROM | disk | FTP | other *** search
- package netscape.plugin.composer;
-
- import java.io.File;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.StringBufferInputStream;
- import java.net.URL;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Properties;
- import java.util.StringTokenizer;
- import java.util.Vector;
-
- class PluginManager {
- private SortedStringTable categories = new SortedStringTable();
- private SortedStringTable encoders = new SortedStringTable();
- private SortedStringTable events = new SortedStringTable();
- private Hashtable pluginThreads = new Hashtable();
- private PluginKiller pluginKiller = new PluginKiller();
-
- public PluginManager() {
- }
-
- public void registerPlugin(String var1, String var2) {
- Properties var3 = new Properties();
- File var4 = new File(var1);
-
- try {
- StringBufferInputStream var5 = new StringBufferInputStream(var2);
- var3.load(var5);
- ((InputStream)var5).close();
- } catch (IOException var6) {
- System.err.println("Caught exception while parsing .ini contents:\n" + var2);
- ((Throwable)var6).printStackTrace();
- }
-
- this.registerPlugins(var4, var3);
- this.registerEncoders(var4, var3);
- this.registerEvents(var3);
- }
-
- public void registerPlugins(File var1, Properties var2) {
- Enumeration var3 = null;
- Object var4 = null;
-
- try {
- String var7 = trimWhitespace(var2.getProperty("netscape.plugin.composer.Factory", "netscape.plugin.composer.Factory"));
- Factory var5 = (Factory)Class.forName(var7).newInstance();
- var3 = var5.getPlugins(var1, var2);
- } catch (Throwable var6) {
- System.err.println("Caught exception while instantiating " + var4);
- var6.printStackTrace();
- }
-
- registerPlugins(this.categories, var3);
- }
-
- public static Enumeration instantiateClassList(String var0) {
- Vector var1 = new Vector();
- if (var0 != null) {
- StringTokenizer var2 = new StringTokenizer(var0, ":");
-
- while(var2.hasMoreTokens()) {
- String var3 = trimWhitespace(var2.nextToken());
-
- try {
- Object var4 = Class.forName(var3).newInstance();
- var1.addElement(var4);
- } catch (Throwable var5) {
- System.err.println("Caught exception while instantiating " + var3);
- var5.printStackTrace();
- }
- }
- }
-
- return var1.elements();
- }
-
- protected void registerEvents(Properties var1) {
- String var2 = var1.getProperty("netscape.plugin.composer.eventHandlers", "");
- registerPlugins(this.events, var2);
- }
-
- protected static void registerPlugins(SortedStringTable var0, String var1) {
- registerPlugins(var0, instantiateClassList(var1));
- }
-
- protected static void registerPlugins(SortedStringTable var0, Enumeration var1) {
- if (var1 != null) {
- while(var1.hasMoreElements()) {
- Plugin var2 = (Plugin)var1.nextElement();
- if (var2 != null) {
- try {
- var0.getOrCreateTable(var2.getCategory()).put(var2.getName(), var2);
- } catch (Throwable var4) {
- System.err.println("Trouble registering plugin:" + var2);
- var4.printStackTrace();
- }
- }
- }
- }
-
- }
-
- public static String trimWhitespace(String var0) {
- int var1 = var0.length();
- StringBuffer var2 = new StringBuffer(var1);
-
- for(int var3 = 0; var3 < var1; ++var3) {
- char var4 = var0.charAt(var3);
- if (!Character.isSpace(var4)) {
- var2.append(var4);
- }
- }
-
- return var2.toString();
- }
-
- public void registerEncoders(File var1, Properties var2) {
- Enumeration var3 = null;
- Object var4 = null;
-
- try {
- String var9 = trimWhitespace(var2.getProperty("netscape.plugin.composer.ImageEncoderFactory", "netscape.plugin.composer.ImageEncoderFactory"));
- ImageEncoderFactory var5 = (ImageEncoderFactory)Class.forName(var9).newInstance();
- var3 = var5.getImageEncoders(var1, var2);
- } catch (Throwable var8) {
- System.err.println("Caught exception while instantiating " + var4);
- var8.printStackTrace();
- }
-
- if (var3 != null) {
- while(var3.hasMoreElements()) {
- Object var10 = null;
-
- try {
- var10 = var3.nextElement();
- ImageEncoder var6 = (ImageEncoder)var10;
- this.registerEncoderInstance(var6);
- } catch (Throwable var7) {
- System.err.println("Caught exception while processing " + var10);
- var7.printStackTrace();
- }
- }
- }
-
- }
-
- private void registerEncoderInstance(ImageEncoder var1) {
- ImageEncoder.register(var1);
- String var2 = var1.getName();
- this.encoders.put(var2, var1);
- }
-
- public int getNumberOfCategories() {
- return this.categories.length();
- }
-
- public int getNumberOfPlugins(int var1) {
- SortedStringTable var2 = (SortedStringTable)this.categories.get(var1);
- return var2 == null ? 0 : var2.length();
- }
-
- public String getCategoryName(int var1) {
- return this.categories.getKey(var1);
- }
-
- public String getPluginName(int var1, int var2) {
- return this.getPlugin(var1, var2).getName();
- }
-
- public String getPluginHint(int var1, int var2) {
- return this.getPlugin(var1, var2).getHint();
- }
-
- public boolean performPlugin(Composer var1, int var2, int var3, String var4, String var5, String var6, String var7) {
- return this.performPlugin2(var1, this.getPlugin(var2, var3), var4, var5, var6, var7, (String)null, (String)null);
- }
-
- public boolean performPluginByName(Composer var1, String var2, String var3, String var4, String var5, String var6) {
- Object var7 = null;
- String var8 = null;
- String var9 = null;
-
- try {
- int var10 = var2.indexOf(58);
- if (var10 >= 0) {
- var9 = var2.substring(0, var10);
- var8 = var2.substring(var10 + 1);
- if (var8.length() == 0) {
- var8 = null;
- }
-
- SortedStringTable var11 = this.events;
- if (var11 != null) {
- var7 = new GroupPlugin(var11);
- }
- } else {
- var7 = (Plugin)Class.forName(var2).newInstance();
- }
-
- if (var7 != null) {
- return this.performPlugin2(var1, (Plugin)var7, var3, var4, var5, var6, var9, var8);
- }
- } catch (Throwable var12) {
- var12.printStackTrace();
- }
-
- return false;
- }
-
- public boolean performPlugin2(Composer var1, Plugin var2, String var3, String var4, String var5, String var6, String var7, String var8) {
- if (var2 != null) {
- try {
- URL var9 = var4 != null ? new URL(var4) : null;
- URL var10 = null;
- URL var11 = null;
- if (var6 != null) {
- if (!var6.endsWith("/")) {
- var6 = var6 + "/";
- }
-
- if (var6.indexOf("file:") == 0) {
- var10 = new URL("file", "", var6.substring("file:".length()));
- } else {
- var10 = new URL(var6);
- }
- }
-
- if (var8 != null) {
- if (var8.indexOf("file:") == 0) {
- var11 = new URL("file", "", var8.substring("file:".length()));
- } else {
- var11 = new URL(var8);
- }
- }
-
- ComposerDocument var12 = new ComposerDocument(var1, var3, var9, var5, var10, var7, var11);
- SecurityManager.enablePrivilege("SuperUser");
- ThreadGroup var13 = new ThreadGroup(Thread.currentThread().getThreadGroup(), var2.getName());
- Thread var14 = new Thread(var13, new PluginRunner(var2, var12, this), var2.getName());
- var14.start();
- this.pluginThreads.put(var1, var13);
- return true;
- } catch (IOException var15) {
- System.err.println("Composer plugin runner threw this exception:");
- ((Throwable)var15).printStackTrace();
- return false;
- }
- } else {
- return false;
- }
- }
-
- public void stopPlugin(Composer var1) {
- this.killGroup(var1);
- }
-
- public int getNumberOfEncoders() {
- return this.encoders.length();
- }
-
- public String getEncoderName(int var1) {
- return this.getEncoder(var1).getName();
- }
-
- public String getEncoderFileType(int var1) {
- byte[] var2 = new byte[4];
- this.getEncoder(var1).getFileType(var2);
- return new String(var2, 0);
- }
-
- public boolean getEncoderNeedsQuantizedSource(int var1) {
- return this.getEncoder(var1).needsQuantizedSource();
- }
-
- public String getEncoderFileExtension(int var1) {
- return this.getEncoder(var1).getFileExtension();
- }
-
- public String getEncoderHint(int var1) {
- return this.getEncoder(var1).getHint();
- }
-
- protected ImageEncoder getEncoder(int var1) {
- return (ImageEncoder)this.encoders.get(var1);
- }
-
- public boolean startEncoder(Composer var1, int var2, int var3, int var4, byte[][] var5, String var6) {
- ImageEncoderPlugin var7 = new ImageEncoderPlugin(this.getEncoder(var2), var3, var4, var5, var6);
- return this.performPlugin2(var1, var7, (String)null, (String)null, (String)null, (String)null, (String)null, (String)null);
- }
-
- protected Plugin getPlugin(int var1, int var2) {
- Plugin var3 = null;
- SortedStringTable var4 = (SortedStringTable)this.categories.get(var1);
- if (var4 != null) {
- var3 = (Plugin)var4.get(var2);
- }
-
- return var3;
- }
-
- void pluginFinished(Composer var1, int var2, Object var3) {
- var1.pluginFinished(var2, var3);
- this.killGroup(var1);
- }
-
- void killGroup(Composer var1) {
- ThreadGroup var2 = (ThreadGroup)this.pluginThreads.remove(var1);
- if (var2 != null) {
- this.pluginKiller.kill(var2);
- }
-
- }
- }
-