home *** CD-ROM | disk | FTP | other *** search
/ PC-X 1997 June / pcx11_9706.iso / shutils / internet / browser / p32e40b5.exe / nav40.z / java40.jar / netscape / applet / DefaultEmbeddedOwner.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-05-23  |  8.4 KB  |  399 lines

  1. package netscape.applet;
  2.  
  3. import java.awt.Component;
  4. import java.lang.reflect.InvocationTargetException;
  5. import java.lang.reflect.Method;
  6. import netscape.application.BezelBorder;
  7. import netscape.application.Border;
  8. import netscape.application.Color;
  9. import netscape.application.Font;
  10. import netscape.application.Image;
  11. import netscape.application.Rect;
  12. import netscape.application.ScrollGroup;
  13. import netscape.application.Sound;
  14. import netscape.application.View;
  15. import netscape.util.Enumeration;
  16.  
  17. class DefaultEmbeddedOwner implements EmbeddedBeanOwner, EmbeddedProgramOwner {
  18.    public void embeddedBeanDidInit(EmbeddedBeanTracker var1) {
  19.       String var2 = var1.className();
  20.       Object var3 = this.objectFor(var1, var2);
  21.       if (var3 != null) {
  22.          if (var3 instanceof Component && !(var3 instanceof EmbeddedAppletFrame)) {
  23.             this.embedComponent(var1, var3, var3.getClass());
  24.          } else if (var3 instanceof View) {
  25.             this.embedView(var1, var3, var3.getClass());
  26.          } else {
  27.             System.err.println("Error: " + var2 + " is not derived from View or Component.");
  28.          }
  29.       }
  30.    }
  31.  
  32.    public void embeddedBeanDidStart(EmbeddedBeanTracker var1) {
  33.    }
  34.  
  35.    public void embeddedBeanDidStop(EmbeddedBeanTracker var1) {
  36.    }
  37.  
  38.    public void embeddedBeanDidDestroy(EmbeddedBeanTracker var1) {
  39.    }
  40.  
  41.    public boolean programCanShutdown(EmbeddedProgramTracker var1) {
  42.       return true;
  43.    }
  44.  
  45.    void embedView(EmbeddedBeanTracker var1, Object var2, Class var3) {
  46.       View var4 = (View)var2;
  47.       ScrollGroup var5 = null;
  48.       boolean var6 = "true".equalsIgnoreCase(var1.parameter("View Has Vertical Scroll Bar"));
  49.       boolean var7 = "true".equalsIgnoreCase(var1.parameter("View Has Horizontal Scroll Bar"));
  50.       if (!var6 && !var7) {
  51.          var4.setBounds(var1.bounds());
  52.       } else {
  53.          var5 = new ScrollGroup();
  54.          ((View)var5).setBounds(var1.bounds());
  55.          if (var6) {
  56.             var5.setHasVertScrollBar(true);
  57.          }
  58.  
  59.          if (var7) {
  60.             var5.setHasHorizScrollBar(true);
  61.          }
  62.  
  63.          var5.setContentView(var4);
  64.          Rect var8 = var5.scrollView().bounds();
  65.          var4.setBounds(0, 0, var8.width, var8.height);
  66.       }
  67.  
  68.       Enumeration var15 = var1.parameterKeys();
  69.       Enumeration var9 = var1.parameterValues();
  70.  
  71.       while(var15.hasMoreElements() && var9.hasMoreElements()) {
  72.          String var10 = (String)var15.nextElement();
  73.          String var11 = (String)var9.nextElement();
  74.          Object var13 = var2;
  75.  
  76.          int var12;
  77.          while((var12 = var10.indexOf(46)) != -1) {
  78.             String var14 = var10.substring(0, var12);
  79.             if (var10.length() == var12 + 1) {
  80.                var10 = "";
  81.             } else {
  82.                var10 = var10.substring(var12 + 1);
  83.                var13 = this.getSubObject(var1, var13, var13.getClass(), var14);
  84.                if (var13 == null) {
  85.                   var10 = "";
  86.                }
  87.             }
  88.          }
  89.  
  90.          if (var13 != var2 && var13 != null) {
  91.             this.setObjectValue(var1, var13, var13.getClass(), var10, var11);
  92.          }
  93.       }
  94.  
  95.       this.setObjectValues(var1, var2, var3);
  96.       if (var5 != null) {
  97.          var1.rootView().addSubview(var5);
  98.       } else {
  99.          var1.rootView().addSubview(var4);
  100.       }
  101.  
  102.       var4.setDirty(true);
  103.       var1.setActualObject(var4);
  104.    }
  105.  
  106.    void embedComponent(EmbeddedBeanTracker var1, Object var2, Class var3) {
  107.       Component var4 = (Component)var2;
  108.       Rect var5 = var1.bounds();
  109.       var4.reshape(var5.x, var5.y, var5.width, var5.height);
  110.       var1.frame().add(var4);
  111.       var1.setActualObject(var4);
  112.    }
  113.  
  114.    Object getSubObject(EmbeddedBeanTracker var1, Object var2, Class var3, String var4) {
  115.       Object var5 = null;
  116.       Method[] var6 = var3.getMethods();
  117.  
  118.       for(int var7 = 0; var7 < var6.length; ++var7) {
  119.          String var8 = var6[var7].getName();
  120.          if (var8.equalsIgnoreCase(var4) || var8.equalsIgnoreCase("get" + var4)) {
  121.             if (var6[var7].getParameterTypes().length == 0 && !var6[var7].getReturnType().isPrimitive()) {
  122.                try {
  123.                   var5 = var6[var7].invoke(var2, (Object[])null);
  124.                } catch (NullPointerException var9) {
  125.                } catch (IllegalArgumentException var10) {
  126.                } catch (IllegalAccessException var11) {
  127.                } catch (InvocationTargetException var12) {
  128.                }
  129.             }
  130.             break;
  131.          }
  132.       }
  133.  
  134.       return var5;
  135.    }
  136.  
  137.    void setObjectValue(EmbeddedBeanTracker var1, Object var2, Class var3, String var4, String var5) {
  138.       Method[] var6 = var3.getMethods();
  139.  
  140.       for(int var7 = 0; var7 < var6.length; ++var7) {
  141.          String var8 = var6[var7].getName();
  142.          if (var8.length() > 3 && var8.substring(0, 3).equalsIgnoreCase("set") && var8.substring(3).equalsIgnoreCase(var4)) {
  143.             Class[] var9 = var6[var7].getParameterTypes();
  144.             if (var9.length == 1) {
  145.                Object[] var10 = new Object[1];
  146.                boolean var11 = false;
  147.                if (var5.equals("null")) {
  148.                   var10[0] = null;
  149.                   var11 = true;
  150.                } else {
  151.                   var10[0] = this.getParameterValue(var1, var9[0], var5);
  152.                }
  153.  
  154.                if (var11 || var10[0] != null) {
  155.                   try {
  156.                      var6[var7].invoke(var2, var10);
  157.                   } catch (NullPointerException var12) {
  158.                   } catch (IllegalArgumentException var13) {
  159.                   } catch (IllegalAccessException var14) {
  160.                   } catch (InvocationTargetException var15) {
  161.                   }
  162.                }
  163.             }
  164.          }
  165.       }
  166.  
  167.    }
  168.  
  169.    void setObjectValues(EmbeddedBeanTracker var1, Object var2, Class var3) {
  170.       Method[] var4 = var3.getMethods();
  171.  
  172.       for(int var5 = 0; var5 < var4.length; ++var5) {
  173.          String var6 = var4[var5].getName();
  174.          if (var6.length() > 3 && var6.substring(0, 3).equalsIgnoreCase("set")) {
  175.             String var7 = var6.substring(3);
  176.             String var8 = var1.parameter(var7);
  177.             if (var8 != null) {
  178.                Class[] var9 = var4[var5].getParameterTypes();
  179.                if (var9.length == 1) {
  180.                   Object[] var10 = new Object[1];
  181.                   boolean var11 = false;
  182.                   if (var8.equals("null")) {
  183.                      var10[0] = null;
  184.                      var11 = true;
  185.                   } else {
  186.                      var10[0] = this.getParameterValue(var1, var9[0], var8);
  187.                   }
  188.  
  189.                   if (var11 || var10[0] != null) {
  190.                      try {
  191.                         var4[var5].invoke(var2, var10);
  192.                      } catch (NullPointerException var12) {
  193.                      } catch (IllegalArgumentException var13) {
  194.                      } catch (IllegalAccessException var14) {
  195.                      } catch (InvocationTargetException var15) {
  196.                      }
  197.                   }
  198.                }
  199.             }
  200.          }
  201.       }
  202.  
  203.    }
  204.  
  205.    Object objectFor(EmbeddedBeanTracker var1, String var2) {
  206.       if (var2.length() > 16 && var2.substring(0, 16).equals("netscape.applet.")) {
  207.          System.err.println("Illegal attemp to load class from netscape.applet");
  208.          return null;
  209.       } else {
  210.          Class var3;
  211.          try {
  212.             var3 = var1.eop.task.loadClass(var2);
  213.          } catch (ClassNotFoundException var9) {
  214.             System.err.println(((Throwable)var9).toString());
  215.             return null;
  216.          } catch (IllegalArgumentException var10) {
  217.             System.err.println(((Throwable)var10).toString());
  218.             return null;
  219.          }
  220.  
  221.          try {
  222.             Object var4 = var3.newInstance();
  223.             return var4;
  224.          } catch (InstantiationException var6) {
  225.             System.err.println(((Throwable)var6).toString());
  226.             return null;
  227.          } catch (IllegalAccessException var7) {
  228.             System.err.println(((Throwable)var7).toString());
  229.             return null;
  230.          } catch (NoSuchMethodError var8) {
  231.             System.err.println(((Throwable)var8).toString());
  232.             System.err.println("   Class does not have default constructor: " + var2);
  233.             return null;
  234.          }
  235.       }
  236.    }
  237.  
  238.    Font fontFor(String var1) {
  239.       Font var2 = Font.fontNamed(var1);
  240.       if (var2 == null) {
  241.          var2 = Font.defaultFont();
  242.       }
  243.  
  244.       return var2;
  245.    }
  246.  
  247.    Color colorFor(String var1) {
  248.       Color var2 = null;
  249.       if ("red".equalsIgnoreCase(var1)) {
  250.          var2 = Color.red;
  251.       } else if ("green".equalsIgnoreCase(var1)) {
  252.          var2 = Color.green;
  253.       } else if ("blue".equalsIgnoreCase(var1)) {
  254.          var2 = Color.blue;
  255.       } else if ("cyan".equalsIgnoreCase(var1)) {
  256.          var2 = Color.cyan;
  257.       } else if ("magenta".equalsIgnoreCase(var1)) {
  258.          var2 = Color.magenta;
  259.       } else if ("yellow".equalsIgnoreCase(var1)) {
  260.          var2 = Color.yellow;
  261.       } else if ("orange".equalsIgnoreCase(var1)) {
  262.          var2 = Color.orange;
  263.       } else if ("pink".equalsIgnoreCase(var1)) {
  264.          var2 = Color.pink;
  265.       } else if ("white".equalsIgnoreCase(var1)) {
  266.          var2 = Color.white;
  267.       } else if ("lightGray".equalsIgnoreCase(var1)) {
  268.          var2 = Color.lightGray;
  269.       } else if ("gray".equalsIgnoreCase(var1)) {
  270.          var2 = Color.gray;
  271.       } else if ("darkGray".equalsIgnoreCase(var1)) {
  272.          var2 = Color.darkGray;
  273.       } else if ("black".equalsIgnoreCase(var1)) {
  274.          var2 = Color.black;
  275.       }
  276.  
  277.       if (var2 == null) {
  278.          try {
  279.             if (var1.charAt(0) == '#' && var1.length() > 1) {
  280.                var1 = var1.substring(1);
  281.             }
  282.  
  283.             int var3 = Integer.parseInt(var1, 16);
  284.             var2 = new Color(var3);
  285.          } catch (NumberFormatException var4) {
  286.          }
  287.       }
  288.  
  289.       if (var2 == null) {
  290.          var2 = Color.white;
  291.       }
  292.  
  293.       return var2;
  294.    }
  295.  
  296.    Image imageFor(String var1) {
  297.       Image var2 = Image.imageNamed(var1);
  298.       return var2;
  299.    }
  300.  
  301.    Sound soundFor(String var1) {
  302.       Sound var2 = Sound.soundNamed(var1);
  303.       return var2;
  304.    }
  305.  
  306.    Border borderFor(EmbeddedBeanTracker var1, String var2) {
  307.       Border var3 = null;
  308.       if ("raisedBezel".equalsIgnoreCase(var2)) {
  309.          var3 = BezelBorder.raisedBezel();
  310.       } else if ("loweredBezel".equalsIgnoreCase(var2)) {
  311.          var3 = BezelBorder.loweredBezel();
  312.       } else if ("groovedBezel".equalsIgnoreCase(var2)) {
  313.          var3 = BezelBorder.groovedBezel();
  314.       } else if ("raisedButtonBezel".equalsIgnoreCase(var2)) {
  315.          var3 = BezelBorder.raisedButtonBezel();
  316.       } else if ("loweredButtonBezel".equalsIgnoreCase(var2)) {
  317.          var3 = BezelBorder.loweredButtonBezel();
  318.       }
  319.  
  320.       if (var3 == null) {
  321.          Object var4 = this.objectFor(var1, var2);
  322.          if (var4 instanceof Border) {
  323.             var3 = (Border)var4;
  324.          }
  325.       }
  326.  
  327.       return var3;
  328.    }
  329.  
  330.    Object getParameterValue(EmbeddedBeanTracker var1, Class var2, String var3) {
  331.       Object var4 = null;
  332.       if (var2.isPrimitive()) {
  333.          if (var2 == Boolean.TYPE) {
  334.             var4 = new Boolean(var3);
  335.          } else if (var2 == Character.TYPE) {
  336.             var4 = new Character(var3.charAt(0));
  337.          } else if (var2 == Byte.TYPE) {
  338.             try {
  339.                var4 = new Byte(var3);
  340.             } catch (NumberFormatException var11) {
  341.                var4 = new Byte((byte)0);
  342.             }
  343.          } else if (var2 == Short.TYPE) {
  344.             try {
  345.                var4 = new Short(var3);
  346.             } catch (NumberFormatException var10) {
  347.                var4 = new Short((short)0);
  348.             }
  349.          } else if (var2 == Integer.TYPE) {
  350.             try {
  351.                var4 = new Integer(var3);
  352.             } catch (NumberFormatException var9) {
  353.                var4 = new Integer(0);
  354.             }
  355.          } else if (var2 == Long.TYPE) {
  356.             try {
  357.                var4 = new Long(var3);
  358.             } catch (NumberFormatException var8) {
  359.                var4 = new Long(0L);
  360.             }
  361.          } else if (var2 == Float.TYPE) {
  362.             try {
  363.                var4 = new Float(var3);
  364.             } catch (NumberFormatException var7) {
  365.                var4 = new Float((double)0.0F);
  366.             }
  367.          } else if (var2 == Double.TYPE) {
  368.             try {
  369.                var4 = new Double(var3);
  370.             } catch (NumberFormatException var6) {
  371.                var4 = new Double((double)0.0F);
  372.             }
  373.          }
  374.       } else {
  375.          String var5 = var2.getName();
  376.          if (var5.equals("java.lang.String")) {
  377.             var4 = var3;
  378.          } else if (var5.equals("netscape.application.Font")) {
  379.             var4 = this.fontFor(var3);
  380.          } else if (var5.equals("netscape.application.Color")) {
  381.             var4 = this.colorFor(var3);
  382.          } else if (var5.equals("netscape.application.Image")) {
  383.             var4 = this.imageFor(var3);
  384.          } else if (var5.equals("netscape.application.Sound")) {
  385.             var4 = this.soundFor(var3);
  386.          } else if (var5.equals("netscape.application.Border")) {
  387.             var4 = this.borderFor(var1, var3);
  388.          } else {
  389.             var4 = this.objectFor(var1, var3);
  390.             if (var4 != null && var4.getClass() != var2) {
  391.                var4 = null;
  392.             }
  393.          }
  394.       }
  395.  
  396.       return var4;
  397.    }
  398. }
  399.