home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / plaf / basic / BasicTextUI$UpdateHandler.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  5.3 KB  |  214 lines

  1. package javax.swing.plaf.basic;
  2.  
  3. import java.awt.Component;
  4. import java.awt.ComponentOrientation;
  5. import java.awt.Container;
  6. import java.awt.Dimension;
  7. import java.awt.LayoutManager2;
  8. import java.awt.Rectangle;
  9. import java.awt.Shape;
  10. import java.awt.font.TextAttribute;
  11. import java.beans.PropertyChangeEvent;
  12. import java.beans.PropertyChangeListener;
  13. import java.util.Enumeration;
  14. import java.util.Hashtable;
  15. import java.util.Vector;
  16. import javax.swing.SwingUtilities;
  17. import javax.swing.event.DocumentEvent;
  18. import javax.swing.event.DocumentListener;
  19. import javax.swing.plaf.UIResource;
  20. import javax.swing.text.AbstractDocument;
  21. import javax.swing.text.Document;
  22. import javax.swing.text.View;
  23. import javax.swing.text.Position.Bias;
  24.  
  25. class BasicTextUI$UpdateHandler implements PropertyChangeListener, DocumentListener, LayoutManager2, Runnable, UIResource {
  26.    private Hashtable constraints;
  27.    private boolean i18nView;
  28.    // $FF: synthetic field
  29.    private final BasicTextUI this$0;
  30.  
  31.    BasicTextUI$UpdateHandler(BasicTextUI var1) {
  32.       this.this$0 = var1;
  33.       this.i18nView = false;
  34.    }
  35.  
  36.    public final void propertyChange(PropertyChangeEvent var1) {
  37.       Object var2 = var1.getOldValue();
  38.       Object var3 = var1.getNewValue();
  39.       if (var2 instanceof Document || var3 instanceof Document) {
  40.          if (var2 != null) {
  41.             ((Document)var2).removeDocumentListener(this);
  42.          }
  43.  
  44.          if (var3 != null) {
  45.             ((Document)var3).addDocumentListener(this);
  46.          }
  47.  
  48.          this.this$0.modelChanged();
  49.       }
  50.  
  51.       if ("focusAcceleratorKey".equals(var1.getPropertyName())) {
  52.          this.this$0.updateFocusAcceleratorBinding(true);
  53.       } else if ("componentOrientation".equals(var1.getPropertyName())) {
  54.          ComponentOrientation var4 = (ComponentOrientation)var1.getNewValue();
  55.          Boolean var5 = var4.isLeftToRight() ? TextAttribute.RUN_DIRECTION_LTR : TextAttribute.RUN_DIRECTION_RTL;
  56.          Document var6 = this.this$0.editor.getDocument();
  57.          var6.putProperty(TextAttribute.RUN_DIRECTION, var5);
  58.          this.this$0.modelChanged();
  59.       }
  60.  
  61.       this.this$0.propertyChange(var1);
  62.    }
  63.  
  64.    public final void insertUpdate(DocumentEvent var1) {
  65.       Document var2 = var1.getDocument();
  66.       Object var3 = var2.getProperty("i18n");
  67.       if (var3 instanceof Boolean) {
  68.          Boolean var4 = (Boolean)var3;
  69.          if (var4 != this.i18nView) {
  70.             this.i18nView = var4;
  71.             this.this$0.modelChanged();
  72.             return;
  73.          }
  74.       }
  75.  
  76.       Rectangle var5 = this.this$0.painted ? this.this$0.getVisibleEditorRect() : null;
  77.       this.this$0.rootView.insertUpdate(var1, var5, this.this$0.rootView.getViewFactory());
  78.    }
  79.  
  80.    public final void removeUpdate(DocumentEvent var1) {
  81.       if (this.constraints != null && !this.constraints.isEmpty()) {
  82.          if (SwingUtilities.isEventDispatchThread()) {
  83.             this.run();
  84.          } else {
  85.             SwingUtilities.invokeLater(this);
  86.          }
  87.       }
  88.  
  89.       Rectangle var2 = this.this$0.painted ? this.this$0.getVisibleEditorRect() : null;
  90.       this.this$0.rootView.removeUpdate(var1, var2, this.this$0.rootView.getViewFactory());
  91.    }
  92.  
  93.    public final void changedUpdate(DocumentEvent var1) {
  94.       Rectangle var2 = this.this$0.painted ? this.this$0.getVisibleEditorRect() : null;
  95.       this.this$0.rootView.changedUpdate(var1, var2, this.this$0.rootView.getViewFactory());
  96.    }
  97.  
  98.    public void run() {
  99.       Vector var1 = null;
  100.       Enumeration var2 = this.constraints.keys();
  101.  
  102.       while(var2.hasMoreElements()) {
  103.          Component var3 = (Component)var2.nextElement();
  104.          View var4 = (View)this.constraints.get(var3);
  105.          if (var4.getStartOffset() == var4.getEndOffset()) {
  106.             if (var1 == null) {
  107.                var1 = new Vector();
  108.             }
  109.  
  110.             var1.addElement(var3);
  111.          }
  112.       }
  113.  
  114.       if (var1 != null) {
  115.          int var5 = var1.size();
  116.  
  117.          for(int var6 = 0; var6 < var5; ++var6) {
  118.             this.this$0.editor.remove((Component)var1.elementAt(var6));
  119.          }
  120.       }
  121.  
  122.    }
  123.  
  124.    public void addLayoutComponent(String var1, Component var2) {
  125.    }
  126.  
  127.    public void removeLayoutComponent(Component var1) {
  128.       if (this.constraints != null) {
  129.          this.constraints.remove(var1);
  130.       }
  131.  
  132.    }
  133.  
  134.    public Dimension preferredLayoutSize(Container var1) {
  135.       return null;
  136.    }
  137.  
  138.    public Dimension minimumLayoutSize(Container var1) {
  139.       return null;
  140.    }
  141.  
  142.    public void layoutContainer(Container var1) {
  143.       if (this.constraints != null && !this.constraints.isEmpty()) {
  144.          Rectangle var2 = this.this$0.getVisibleEditorRect();
  145.          if (var2 != null) {
  146.             Document var3 = this.this$0.editor.getDocument();
  147.             if (var3 instanceof AbstractDocument) {
  148.                ((AbstractDocument)var3).readLock();
  149.             }
  150.  
  151.             try {
  152.                this.this$0.rootView.setSize((float)var2.width, (float)var2.height);
  153.                Enumeration var4 = this.constraints.keys();
  154.  
  155.                while(var4.hasMoreElements()) {
  156.                   Component var5 = (Component)var4.nextElement();
  157.                   View var6 = (View)this.constraints.get(var5);
  158.                   Shape var7 = this.calculateViewPosition(var2, var6);
  159.                   if (var7 != null) {
  160.                      Rectangle var8 = var7 instanceof Rectangle ? (Rectangle)var7 : var7.getBounds();
  161.                      var5.setBounds(var8);
  162.                   }
  163.                }
  164.             } finally {
  165.                if (var3 instanceof AbstractDocument) {
  166.                   ((AbstractDocument)var3).readUnlock();
  167.                }
  168.  
  169.             }
  170.          }
  171.       }
  172.  
  173.    }
  174.  
  175.    Shape calculateViewPosition(Shape var1, View var2) {
  176.       int var3 = var2.getStartOffset();
  177.       View var4 = null;
  178.  
  179.       for(Object var5 = this.this$0.rootView; var5 != null && var5 != var2; var5 = var4) {
  180.          int var6 = ((View)var5).getViewIndex(var3, Bias.Forward);
  181.          var1 = ((View)var5).getChildAllocation(var6, var1);
  182.          var4 = ((View)var5).getView(var6);
  183.       }
  184.  
  185.       return var4 != null ? var1 : null;
  186.    }
  187.  
  188.    public void addLayoutComponent(Component var1, Object var2) {
  189.       if (var2 instanceof View) {
  190.          if (this.constraints == null) {
  191.             this.constraints = new Hashtable(7);
  192.          }
  193.  
  194.          this.constraints.put(var1, var2);
  195.       }
  196.  
  197.    }
  198.  
  199.    public Dimension maximumLayoutSize(Container var1) {
  200.       return null;
  201.    }
  202.  
  203.    public float getLayoutAlignmentX(Container var1) {
  204.       return 0.5F;
  205.    }
  206.  
  207.    public float getLayoutAlignmentY(Container var1) {
  208.       return 0.5F;
  209.    }
  210.  
  211.    public void invalidateLayout(Container var1) {
  212.    }
  213. }
  214.