home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.plaf.basic;
-
- import java.awt.Component;
- import java.awt.ComponentOrientation;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.LayoutManager2;
- import java.awt.Rectangle;
- import java.awt.Shape;
- import java.awt.font.TextAttribute;
- import java.beans.PropertyChangeEvent;
- import java.beans.PropertyChangeListener;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Vector;
- import javax.swing.SwingUtilities;
- import javax.swing.event.DocumentEvent;
- import javax.swing.event.DocumentListener;
- import javax.swing.plaf.UIResource;
- import javax.swing.text.AbstractDocument;
- import javax.swing.text.Document;
- import javax.swing.text.View;
- import javax.swing.text.Position.Bias;
-
- class BasicTextUI$UpdateHandler implements PropertyChangeListener, DocumentListener, LayoutManager2, Runnable, UIResource {
- private Hashtable constraints;
- private boolean i18nView;
- // $FF: synthetic field
- private final BasicTextUI this$0;
-
- BasicTextUI$UpdateHandler(BasicTextUI var1) {
- this.this$0 = var1;
- this.i18nView = false;
- }
-
- public final void propertyChange(PropertyChangeEvent var1) {
- Object var2 = var1.getOldValue();
- Object var3 = var1.getNewValue();
- if (var2 instanceof Document || var3 instanceof Document) {
- if (var2 != null) {
- ((Document)var2).removeDocumentListener(this);
- }
-
- if (var3 != null) {
- ((Document)var3).addDocumentListener(this);
- }
-
- this.this$0.modelChanged();
- }
-
- if ("focusAcceleratorKey".equals(var1.getPropertyName())) {
- this.this$0.updateFocusAcceleratorBinding(true);
- } else if ("componentOrientation".equals(var1.getPropertyName())) {
- ComponentOrientation var4 = (ComponentOrientation)var1.getNewValue();
- Boolean var5 = var4.isLeftToRight() ? TextAttribute.RUN_DIRECTION_LTR : TextAttribute.RUN_DIRECTION_RTL;
- Document var6 = this.this$0.editor.getDocument();
- var6.putProperty(TextAttribute.RUN_DIRECTION, var5);
- this.this$0.modelChanged();
- }
-
- this.this$0.propertyChange(var1);
- }
-
- public final void insertUpdate(DocumentEvent var1) {
- Document var2 = var1.getDocument();
- Object var3 = var2.getProperty("i18n");
- if (var3 instanceof Boolean) {
- Boolean var4 = (Boolean)var3;
- if (var4 != this.i18nView) {
- this.i18nView = var4;
- this.this$0.modelChanged();
- return;
- }
- }
-
- Rectangle var5 = this.this$0.painted ? this.this$0.getVisibleEditorRect() : null;
- this.this$0.rootView.insertUpdate(var1, var5, this.this$0.rootView.getViewFactory());
- }
-
- public final void removeUpdate(DocumentEvent var1) {
- if (this.constraints != null && !this.constraints.isEmpty()) {
- if (SwingUtilities.isEventDispatchThread()) {
- this.run();
- } else {
- SwingUtilities.invokeLater(this);
- }
- }
-
- Rectangle var2 = this.this$0.painted ? this.this$0.getVisibleEditorRect() : null;
- this.this$0.rootView.removeUpdate(var1, var2, this.this$0.rootView.getViewFactory());
- }
-
- public final void changedUpdate(DocumentEvent var1) {
- Rectangle var2 = this.this$0.painted ? this.this$0.getVisibleEditorRect() : null;
- this.this$0.rootView.changedUpdate(var1, var2, this.this$0.rootView.getViewFactory());
- }
-
- public void run() {
- Vector var1 = null;
- Enumeration var2 = this.constraints.keys();
-
- while(var2.hasMoreElements()) {
- Component var3 = (Component)var2.nextElement();
- View var4 = (View)this.constraints.get(var3);
- if (var4.getStartOffset() == var4.getEndOffset()) {
- if (var1 == null) {
- var1 = new Vector();
- }
-
- var1.addElement(var3);
- }
- }
-
- if (var1 != null) {
- int var5 = var1.size();
-
- for(int var6 = 0; var6 < var5; ++var6) {
- this.this$0.editor.remove((Component)var1.elementAt(var6));
- }
- }
-
- }
-
- public void addLayoutComponent(String var1, Component var2) {
- }
-
- public void removeLayoutComponent(Component var1) {
- if (this.constraints != null) {
- this.constraints.remove(var1);
- }
-
- }
-
- public Dimension preferredLayoutSize(Container var1) {
- return null;
- }
-
- public Dimension minimumLayoutSize(Container var1) {
- return null;
- }
-
- public void layoutContainer(Container var1) {
- if (this.constraints != null && !this.constraints.isEmpty()) {
- Rectangle var2 = this.this$0.getVisibleEditorRect();
- if (var2 != null) {
- Document var3 = this.this$0.editor.getDocument();
- if (var3 instanceof AbstractDocument) {
- ((AbstractDocument)var3).readLock();
- }
-
- try {
- this.this$0.rootView.setSize((float)var2.width, (float)var2.height);
- Enumeration var4 = this.constraints.keys();
-
- while(var4.hasMoreElements()) {
- Component var5 = (Component)var4.nextElement();
- View var6 = (View)this.constraints.get(var5);
- Shape var7 = this.calculateViewPosition(var2, var6);
- if (var7 != null) {
- Rectangle var8 = var7 instanceof Rectangle ? (Rectangle)var7 : var7.getBounds();
- var5.setBounds(var8);
- }
- }
- } finally {
- if (var3 instanceof AbstractDocument) {
- ((AbstractDocument)var3).readUnlock();
- }
-
- }
- }
- }
-
- }
-
- Shape calculateViewPosition(Shape var1, View var2) {
- int var3 = var2.getStartOffset();
- View var4 = null;
-
- for(Object var5 = this.this$0.rootView; var5 != null && var5 != var2; var5 = var4) {
- int var6 = ((View)var5).getViewIndex(var3, Bias.Forward);
- var1 = ((View)var5).getChildAllocation(var6, var1);
- var4 = ((View)var5).getView(var6);
- }
-
- return var4 != null ? var1 : null;
- }
-
- public void addLayoutComponent(Component var1, Object var2) {
- if (var2 instanceof View) {
- if (this.constraints == null) {
- this.constraints = new Hashtable(7);
- }
-
- this.constraints.put(var1, var2);
- }
-
- }
-
- public Dimension maximumLayoutSize(Container var1) {
- return null;
- }
-
- public float getLayoutAlignmentX(Container var1) {
- return 0.5F;
- }
-
- public float getLayoutAlignmentY(Container var1) {
- return 0.5F;
- }
-
- public void invalidateLayout(Container var1) {
- }
- }
-