home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 1999 March / maximum-cd-1999-03.iso / Feature / Lotus / ORGANIZE / COMPNENT / LTOUIN21.ZIP / sun / activator / plugin / win32 / PluginObject.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-03-12  |  7.7 KB  |  327 lines

  1. package sun.activator.plugin.win32;
  2.  
  3. import java.awt.Frame;
  4. import java.awt.Panel;
  5. import java.lang.reflect.Field;
  6. import java.lang.reflect.InvocationTargetException;
  7. import java.lang.reflect.Method;
  8. import java.net.URL;
  9. import java.util.Hashtable;
  10. import sun.activator.plugin.URLDecoder;
  11.  
  12. abstract class PluginObject {
  13.    PluginFrame frame = null;
  14.    PluginPanel panel = null;
  15.    URL documentURL;
  16.    // $FF: renamed from: id int
  17.    int field_0 = -1;
  18.    boolean javaEnabled = true;
  19.    Hashtable atts = new Hashtable(20);
  20.    int handle = 0;
  21.  
  22.    PluginObject(String[] var1, String[] var2, int var3, boolean var4) {
  23.       for(int var5 = 0; var5 < var1.length; ++var5) {
  24.          this.atts.put(var1[var5].toLowerCase(), var2[var5]);
  25.       }
  26.  
  27.       this.field_0 = var3;
  28.       this.javaEnabled = var4;
  29.    }
  30.  
  31.    PluginFrame createFrame(int var1, int var2, int var3, int var4) {
  32.       return new PluginFrame(var1, var2, var3, var4);
  33.    }
  34.  
  35.    abstract PluginPanel createPanel(URL var1, boolean var2);
  36.  
  37.    Frame getFrame() {
  38.       return this.frame;
  39.    }
  40.  
  41.    Object getLiveConnectObject() {
  42.       try {
  43.          Object var1 = null;
  44.          synchronized(this){}
  45.  
  46.          try {
  47.             while(this.panel == null) {
  48.                this.wait();
  49.             }
  50.          } catch (Throwable var5) {
  51.             throw var5;
  52.          }
  53.  
  54.          for(var1 = this.panel.getJavaObject(); var1 == null; var1 = this.panel.getJavaObject()) {
  55.             Thread.sleep(200L);
  56.          }
  57.  
  58.          return var1;
  59.       } catch (Exception var6) {
  60.          System.err.println("Exception: " + var6);
  61.          return null;
  62.       }
  63.    }
  64.  
  65.    public String getParameter(String var1) {
  66.       return (String)this.atts.get(var1.toLowerCase());
  67.    }
  68.  
  69.    Object getPluginField(String var1) {
  70.       try {
  71.          Object var2 = this.getLiveConnectObject();
  72.          Class var3 = var2.getClass();
  73.          Field[] var4 = var3.getFields();
  74.  
  75.          for(int var5 = 0; var5 < var4.length; ++var5) {
  76.             String var6 = var4[var5].getName();
  77.             if (var6.equals(var1)) {
  78.                return var4[var5].get(var2);
  79.             }
  80.          }
  81.       } catch (IllegalAccessException var7) {
  82.          System.err.println("Illegal Access Exception: " + var7);
  83.       } catch (Exception var8) {
  84.          System.err.println("Exception: " + var8);
  85.       }
  86.  
  87.       return null;
  88.    }
  89.  
  90.    Object invokePluginMethod(String var1, String[] var2) {
  91.       try {
  92.          Object var3 = this.getLiveConnectObject();
  93.          Class var4 = var3.getClass();
  94.          Method[] var5 = var4.getMethods();
  95.  
  96.          for(int var6 = 0; var6 < var5.length; ++var6) {
  97.             String var7 = var5[var6].getName();
  98.             if (var7.equals(var1)) {
  99.                Class[] var8 = var5[var6].getParameterTypes();
  100.                if (var2 == null || var8 == null || var8.length == var2.length) {
  101.                   Object[] var9 = null;
  102.                   if (var2 != null && var2.length > 0) {
  103.                      var9 = new Object[var2.length];
  104.                   }
  105.  
  106.                   for(int var10 = 0; var2 != null && var10 < var2.length; ++var10) {
  107.                      String var11 = var8[var10].getName();
  108.                      if (!var11.equals("java.lang.Integer") && !var11.equals("int")) {
  109.                         if (!var11.equals("java.lang.Float") && !var11.equals("float")) {
  110.                            if (!var11.equals("java.lang.Double") && !var11.equals("double")) {
  111.                               if (!var11.equals("java.lang.Byte") && !var11.equals("byte")) {
  112.                                  if (!var11.equals("java.lang.Long") && !var11.equals("long")) {
  113.                                     if (!var11.equals("java.lang.Short") && !var11.equals("short")) {
  114.                                        if (!var11.equals("java.lang.Character") && !var11.equals("char")) {
  115.                                           if (!var11.equals("java.lang.Boolean") && !var11.equals("boolean")) {
  116.                                              var9[var10] = var2[var10];
  117.                                           } else {
  118.                                              var9[var10] = Boolean.valueOf(var2[var10]);
  119.                                           }
  120.                                        } else {
  121.                                           var9[var10] = new Character(var2[var10].charAt(0));
  122.                                        }
  123.                                     } else {
  124.                                        var9[var10] = Short.valueOf(var2[var10]);
  125.                                     }
  126.                                  } else {
  127.                                     var9[var10] = Long.valueOf(var2[var10]);
  128.                                  }
  129.                               } else {
  130.                                  var9[var10] = Byte.valueOf(var2[var10]);
  131.                               }
  132.                            } else {
  133.                               var9[var10] = Double.valueOf(var2[var10]);
  134.                            }
  135.                         } else {
  136.                            var9[var10] = Float.valueOf(var2[var10]);
  137.                         }
  138.                      } else {
  139.                         var9[var10] = Integer.valueOf(var2[var10]);
  140.                      }
  141.                   }
  142.  
  143.                   return var5[var6].invoke(var3, var9);
  144.                }
  145.             }
  146.          }
  147.       } catch (IllegalAccessException var12) {
  148.          System.err.println("Illegal Access Exception: " + var12);
  149.       } catch (IllegalArgumentException var13) {
  150.          System.err.println("Illegal Argument Exception: " + var13);
  151.       } catch (InvocationTargetException var14) {
  152.          System.err.println("Invocation Target Exception: " + var14);
  153.       } catch (Exception var15) {
  154.          System.err.println("Exception: " + var15);
  155.       }
  156.  
  157.       return null;
  158.    }
  159.  
  160.    boolean isActive() {
  161.       boolean var1 = false;
  162.       if (this.panel != null) {
  163.          var1 = this.panel.isActive();
  164.       }
  165.  
  166.       return var1;
  167.    }
  168.  
  169.    synchronized void setDocumentURL(String var1) {
  170.       var1 = URLDecoder.decode(var1);
  171.  
  172.       try {
  173.          this.documentURL = new URL(var1);
  174.          if (this.panel == null) {
  175.             this.panel = this.createPanel(this.documentURL, this.javaEnabled);
  176.             this.notifyAll();
  177.          }
  178.  
  179.          this.startPlugin();
  180.       } catch (Throwable var3) {
  181.          var3.printStackTrace();
  182.       }
  183.  
  184.    }
  185.  
  186.    void setPluginField(String var1, String var2) {
  187.       try {
  188.          Object var3 = this.getLiveConnectObject();
  189.          Class var4 = var3.getClass();
  190.          Field[] var5 = var4.getFields();
  191.  
  192.          for(int var6 = 0; var6 < var5.length; ++var6) {
  193.             String var7 = var5[var6].getName();
  194.             if (var7.equals(var1)) {
  195.                String var8 = var5[var6].getType().getName();
  196.                if (var8.equals("int")) {
  197.                   var5[var6].setInt(var3, Integer.valueOf(var2));
  198.                   return;
  199.                }
  200.  
  201.                if (var8.equals("float")) {
  202.                   var5[var6].setFloat(var3, Float.valueOf(var2));
  203.                   return;
  204.                }
  205.  
  206.                if (var8.equals("double")) {
  207.                   var5[var6].setDouble(var3, Double.valueOf(var2));
  208.                   return;
  209.                }
  210.  
  211.                if (var8.equals("byte")) {
  212.                   var5[var6].setByte(var3, Byte.valueOf(var2));
  213.                   return;
  214.                }
  215.  
  216.                if (var8.equals("long")) {
  217.                   var5[var6].setLong(var3, Long.valueOf(var2));
  218.                   return;
  219.                }
  220.  
  221.                if (var8.equals("short")) {
  222.                   var5[var6].setShort(var3, Short.valueOf(var2));
  223.                   return;
  224.                }
  225.  
  226.                if (var8.equals("char")) {
  227.                   var5[var6].setChar(var3, var2.charAt(0));
  228.                   return;
  229.                }
  230.  
  231.                if (var8.equals("boolean")) {
  232.                   var5[var6].setBoolean(var3, Boolean.valueOf(var2));
  233.                   return;
  234.                }
  235.  
  236.                Object var9;
  237.                if (var8.equals("java.lang.Integer")) {
  238.                   var9 = Integer.valueOf(var2);
  239.                } else if (var8.equals("java.lang.Float")) {
  240.                   var9 = Float.valueOf(var2);
  241.                } else if (var8.equals("java.lang.Double")) {
  242.                   var9 = Double.valueOf(var2);
  243.                } else if (var8.equals("java.lang.Byte")) {
  244.                   var9 = Byte.valueOf(var2);
  245.                } else if (var8.equals("java.lang.Long")) {
  246.                   var9 = Long.valueOf(var2);
  247.                } else if (var8.equals("java.lang.Short")) {
  248.                   var9 = Short.valueOf(var2);
  249.                } else if (var8.equals("java.lang.Character")) {
  250.                   var9 = new Character(var2.charAt(0));
  251.                } else if (var8.equals("java.lang.Boolean")) {
  252.                   var9 = Boolean.valueOf(var2);
  253.                } else {
  254.                   var9 = var2;
  255.                }
  256.  
  257.                var5[var6].set(var3, var9);
  258.                return;
  259.             }
  260.          }
  261.       } catch (IllegalArgumentException var10) {
  262.          System.err.println("Illegal Argument Exception: " + var10);
  263.       } catch (IllegalAccessException var11) {
  264.          System.err.println("Illegal Access Exception: " + var11);
  265.       } catch (Exception var12) {
  266.          System.err.println("Exception: " + var12);
  267.       }
  268.  
  269.    }
  270.  
  271.    Frame setWindow(int var1) {
  272.       if (this.handle == var1) {
  273.          return this.frame;
  274.       } else {
  275.          if (this.frame != null) {
  276.             if (this.panel != null) {
  277.                this.frame.remove(this.panel.getPanel());
  278.             }
  279.  
  280.             this.frame.dispose();
  281.          }
  282.  
  283.          this.frame = null;
  284.          this.handle = var1;
  285.          if (var1 != 0) {
  286.             this.frame = this.createFrame(var1, this.field_0, Integer.parseInt(this.getParameter("width")), Integer.parseInt(this.getParameter("height")));
  287.             this.startPlugin();
  288.          }
  289.  
  290.          return this.frame;
  291.       }
  292.    }
  293.  
  294.    void startPlugin() {
  295.       if (this.frame != null && this.panel != null) {
  296.          Panel var1 = this.panel.getPanel();
  297.          if (var1 != null) {
  298.             this.frame.add(var1);
  299.             this.frame.setVisible(true);
  300.          }
  301.  
  302.          this.panel.startPanel();
  303.       }
  304.  
  305.    }
  306.  
  307.    void stopPlugin() {
  308.       if (this.panel != null) {
  309.          if (this.frame != null) {
  310.             this.frame.setVisible(false);
  311.          }
  312.  
  313.          if (this.panel.isActive()) {
  314.             this.panel.stopPanel();
  315.          }
  316.  
  317.          if (this.frame != null) {
  318.             Panel var1 = this.panel.getPanel();
  319.             this.frame.remove(var1);
  320.             this.frame.dispose();
  321.             this.frame = null;
  322.          }
  323.       }
  324.  
  325.    }
  326. }
  327.