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