home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / text / html / FrameView.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  5.2 KB  |  256 lines

  1. package javax.swing.text.html;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Container;
  5. import java.awt.Dimension;
  6. import java.awt.Graphics;
  7. import java.awt.Insets;
  8. import java.awt.Shape;
  9. import java.io.IOException;
  10. import java.net.MalformedURLException;
  11. import java.net.URL;
  12. import javax.swing.JComponent;
  13. import javax.swing.JEditorPane;
  14. import javax.swing.JScrollPane;
  15. import javax.swing.JViewport;
  16. import javax.swing.border.Border;
  17. import javax.swing.event.DocumentEvent;
  18. import javax.swing.event.HyperlinkEvent;
  19. import javax.swing.event.HyperlinkListener;
  20. import javax.swing.event.HyperlinkEvent.EventType;
  21. import javax.swing.text.AttributeSet;
  22. import javax.swing.text.ComponentView;
  23. import javax.swing.text.Document;
  24. import javax.swing.text.Element;
  25. import javax.swing.text.JTextComponent;
  26. import javax.swing.text.View;
  27. import javax.swing.text.ViewFactory;
  28. import javax.swing.text.html.HTML.Attribute;
  29.  
  30. class FrameView extends ComponentView implements HyperlinkListener {
  31.    JEditorPane htmlPane;
  32.    JScrollPane scroller;
  33.    boolean editable;
  34.    float width;
  35.    float height;
  36.    URL src;
  37.    private boolean createdComponent;
  38.  
  39.    public FrameView(Element var1) {
  40.       super(var1);
  41.    }
  42.  
  43.    protected Component createComponent() {
  44.       Element var1 = ((View)this).getElement();
  45.       AttributeSet var2 = var1.getAttributes();
  46.       String var3 = (String)var2.getAttribute(Attribute.SRC);
  47.       if (var3 != null && !var3.equals("")) {
  48.          try {
  49.             URL var4 = ((HTMLDocument)var1.getDocument()).getBase();
  50.             this.src = new URL(var4, var3);
  51.             this.htmlPane = new JEditorPane();
  52.             this.htmlPane.addHyperlinkListener(this);
  53.             JEditorPane var5 = this.getHostPane();
  54.             if (var5 != null) {
  55.                this.htmlPane.setEditable(((JTextComponent)var5).isEditable());
  56.                String var6 = (String)((JComponent)var5).getClientProperty("charset");
  57.                if (var6 != null) {
  58.                   this.htmlPane.putClientProperty("charset", var6);
  59.                }
  60.             }
  61.  
  62.             this.htmlPane.setPage(this.src);
  63.             Document var9 = this.htmlPane.getDocument();
  64.             if (var9 instanceof HTMLDocument) {
  65.                ((HTMLDocument)var9).setFrameDocumentState(true);
  66.             }
  67.  
  68.             this.setMargin();
  69.             this.createScrollPane();
  70.             this.setBorder();
  71.          } catch (MalformedURLException var7) {
  72.             ((Throwable)var7).printStackTrace();
  73.          } catch (IOException var8) {
  74.             ((Throwable)var8).printStackTrace();
  75.          }
  76.       }
  77.  
  78.       this.createdComponent = true;
  79.       return this.scroller;
  80.    }
  81.  
  82.    JEditorPane getHostPane() {
  83.       Container var1;
  84.       for(var1 = ((View)this).getContainer(); var1 != null && !(var1 instanceof JEditorPane); var1 = ((Component)var1).getParent()) {
  85.       }
  86.  
  87.       return (JEditorPane)var1;
  88.    }
  89.  
  90.    public void setParent(View var1) {
  91.       if (var1 != null) {
  92.          JTextComponent var2 = (JTextComponent)var1.getContainer();
  93.          this.editable = var2.isEditable();
  94.       }
  95.  
  96.       super.setParent(var1);
  97.    }
  98.  
  99.    public void paint(Graphics var1, Shape var2) {
  100.       Container var3 = ((View)this).getContainer();
  101.       if (var3 != null && this.htmlPane != null && this.htmlPane.isEditable() != ((JTextComponent)var3).isEditable()) {
  102.          this.editable = ((JTextComponent)var3).isEditable();
  103.          this.htmlPane.setEditable(this.editable);
  104.       }
  105.  
  106.       super.paint(var1, var2);
  107.    }
  108.  
  109.    private void setMargin() {
  110.       int var1 = 0;
  111.       Insets var2 = this.htmlPane.getMargin();
  112.       Insets var3 = new Insets(var2.top, var2.left, var2.right, var2.bottom);
  113.       boolean var4 = false;
  114.       AttributeSet var5 = ((View)this).getElement().getAttributes();
  115.       String var6 = (String)var5.getAttribute(Attribute.MARGINWIDTH);
  116.       if (var6 != null) {
  117.          var1 = Integer.parseInt(var6);
  118.          if (var1 > 0) {
  119.             var3.left = var1;
  120.             var3.right = var1;
  121.             var4 = true;
  122.          }
  123.       }
  124.  
  125.       var6 = (String)var5.getAttribute(Attribute.MARGINHEIGHT);
  126.       if (var6 != null) {
  127.          var1 = Integer.parseInt(var6);
  128.          if (var1 > 0) {
  129.             var3.top = var1;
  130.             var3.bottom = var1;
  131.             var4 = true;
  132.          }
  133.       }
  134.  
  135.       if (var4) {
  136.          this.htmlPane.setMargin(var3);
  137.       }
  138.  
  139.    }
  140.  
  141.    private void setBorder() {
  142.       AttributeSet var1 = ((View)this).getElement().getAttributes();
  143.       String var2 = (String)var1.getAttribute(Attribute.FRAMEBORDER);
  144.       if (var2 != null && (var2.equals("no") || var2.equals("0"))) {
  145.          this.scroller.setBorder((Border)null);
  146.       }
  147.  
  148.    }
  149.  
  150.    private void createScrollPane() {
  151.       AttributeSet var1 = ((View)this).getElement().getAttributes();
  152.       String var2 = (String)var1.getAttribute(Attribute.SCROLLING);
  153.       if (var2 == null) {
  154.          var2 = "auto";
  155.       }
  156.  
  157.       if (!var2.equals("no")) {
  158.          if (var2.equals("yes")) {
  159.             this.scroller = new JScrollPane(22, 32);
  160.          } else {
  161.             this.scroller = new JScrollPane();
  162.          }
  163.       } else {
  164.          this.scroller = new JScrollPane(21, 31);
  165.       }
  166.  
  167.       JViewport var3 = this.scroller.getViewport();
  168.       ((Container)var3).add(this.htmlPane);
  169.       var3.setBackingStoreEnabled(true);
  170.       this.scroller.setMinimumSize(new Dimension(5, 5));
  171.       this.scroller.setMaximumSize(new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE));
  172.    }
  173.  
  174.    private JEditorPane getOutermostJEditorPane() {
  175.       View var1 = ((View)this).getParent();
  176.  
  177.       FrameSetView var2;
  178.       for(var2 = null; var1 != null; var1 = var1.getParent()) {
  179.          if (var1 instanceof FrameSetView) {
  180.             var2 = (FrameSetView)var1;
  181.          }
  182.       }
  183.  
  184.       if (var2 != null) {
  185.          return (JEditorPane)((View)var2).getContainer();
  186.       } else {
  187.          return null;
  188.       }
  189.    }
  190.  
  191.    private boolean inNestedFrameSet() {
  192.       FrameSetView var1 = (FrameSetView)((View)this).getParent();
  193.       return ((View)var1).getParent() instanceof FrameSetView;
  194.    }
  195.  
  196.    public void hyperlinkUpdate(HyperlinkEvent var1) {
  197.       if (var1 instanceof HTMLFrameHyperlinkEvent) {
  198.          HTMLFrameHyperlinkEvent var2 = (HTMLFrameHyperlinkEvent)var1;
  199.          if (((HyperlinkEvent)var2).getEventType() == EventType.ACTIVATED) {
  200.             JEditorPane var3 = this.getOutermostJEditorPane();
  201.             String var4 = var2.getTarget();
  202.             if (var2.getTarget().equals("_parent") && !this.inNestedFrameSet()) {
  203.                var4 = "_top";
  204.             }
  205.  
  206.             if (var3 != null && !((JTextComponent)var3).isEditable()) {
  207.                var3.fireHyperlinkUpdate(new HTMLFrameHyperlinkEvent(var3, ((HyperlinkEvent)var2).getEventType(), ((HyperlinkEvent)var2).getURL(), ((HyperlinkEvent)var2).getDescription(), ((View)this).getElement(), var4));
  208.                if (var4.equals("_top")) {
  209.                   try {
  210.                      var3.setPage(((HyperlinkEvent)var2).getURL());
  211.                   } catch (IOException var6) {
  212.                   }
  213.                }
  214.             }
  215.          }
  216.  
  217.       }
  218.    }
  219.  
  220.    public void changedUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
  221.       Element var4 = ((View)this).getElement();
  222.       AttributeSet var5 = var4.getAttributes();
  223.       URL var6 = this.src;
  224.       String var7 = (String)var5.getAttribute(Attribute.SRC);
  225.       URL var8 = ((HTMLDocument)var4.getDocument()).getBase();
  226.  
  227.       try {
  228.          this.src = new URL(var8, var7);
  229.          if (!this.createdComponent) {
  230.             return;
  231.          }
  232.  
  233.          if (var6.equals(this.src)) {
  234.             return;
  235.          }
  236.  
  237.          this.htmlPane.setPage(this.src);
  238.          Document var9 = this.htmlPane.getDocument();
  239.          if (var9 instanceof HTMLDocument) {
  240.             ((HTMLDocument)var9).setFrameDocumentState(true);
  241.          }
  242.       } catch (MalformedURLException var11) {
  243.       } catch (IOException var12) {
  244.       }
  245.  
  246.    }
  247.  
  248.    public float getMinimumSpan(int var1) {
  249.       return 5.0F;
  250.    }
  251.  
  252.    public float getMaximumSpan(int var1) {
  253.       return (float)Integer.MAX_VALUE;
  254.    }
  255. }
  256.