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 / sun / awt / im / CompositionAreaHandler.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  4.9 KB  |  199 lines

  1. package sun.awt.im;
  2.  
  3. import java.awt.AWTEvent;
  4. import java.awt.Component;
  5. import java.awt.Rectangle;
  6. import java.awt.event.InputMethodEvent;
  7. import java.awt.event.InputMethodListener;
  8. import java.awt.font.TextAttribute;
  9. import java.awt.font.TextHitInfo;
  10. import java.awt.im.InputMethodRequests;
  11. import java.text.AttributedCharacterIterator;
  12. import java.text.AttributedString;
  13. import java.util.EventObject;
  14.  
  15. class CompositionAreaHandler implements InputMethodListener, InputMethodRequests {
  16.    private static CompositionArea compositionArea;
  17.    private static CompositionAreaHandler compositionAreaOwner;
  18.    private AttributedCharacterIterator composedText;
  19.    private TextHitInfo caret = null;
  20.    private Component clientComponent = null;
  21.    private InputMethodContext inputMethodContext;
  22.    private static final AttributedCharacterIterator.Attribute[] IM_ATTRIBUTES;
  23.    private static final AttributedCharacterIterator EMPTY_TEXT;
  24.    // $FF: synthetic field
  25.    static Class class$sun$awt$im$CompositionAreaHandler;
  26.  
  27.    CompositionAreaHandler(InputMethodContext var1) {
  28.       Class var2 = class$sun$awt$im$CompositionAreaHandler == null ? (class$sun$awt$im$CompositionAreaHandler = class$("sun.awt.im.CompositionAreaHandler")) : class$sun$awt$im$CompositionAreaHandler;
  29.       synchronized(var2) {
  30.          if (compositionArea == null) {
  31.             compositionArea = new CompositionArea();
  32.          }
  33.       }
  34.  
  35.       this.inputMethodContext = var1;
  36.    }
  37.  
  38.    void setClientComponent(Component var1) {
  39.       this.clientComponent = var1;
  40.    }
  41.  
  42.    void grabCompositionArea(boolean var1) {
  43.       CompositionArea var2 = compositionArea;
  44.       synchronized(var2) {
  45.          if (compositionAreaOwner != this) {
  46.             compositionAreaOwner = this;
  47.             compositionArea.setHandlerInfo(this, this.inputMethodContext);
  48.             if (var1) {
  49.                compositionArea.setText(this.composedText, this.caret);
  50.             }
  51.          }
  52.  
  53.       }
  54.    }
  55.  
  56.    void releaseCompositionArea() {
  57.       CompositionArea var1 = compositionArea;
  58.       synchronized(var1) {
  59.          if (compositionAreaOwner == this) {
  60.             compositionAreaOwner = null;
  61.             compositionArea.setHandlerInfo((CompositionAreaHandler)null, (InputContext)null);
  62.             compositionArea.setText((AttributedCharacterIterator)null, (TextHitInfo)null);
  63.          }
  64.  
  65.       }
  66.    }
  67.  
  68.    static void closeCompositionArea() {
  69.       if (compositionArea != null) {
  70.          CompositionArea var0 = compositionArea;
  71.          synchronized(var0) {
  72.             compositionAreaOwner = null;
  73.             compositionArea.setHandlerInfo((CompositionAreaHandler)null, (InputContext)null);
  74.             compositionArea.setText((AttributedCharacterIterator)null, (TextHitInfo)null);
  75.          }
  76.       }
  77.  
  78.    }
  79.  
  80.    boolean isCompositionAreaVisible() {
  81.       return compositionArea.getParent().isVisible();
  82.    }
  83.  
  84.    void processInputMethodEvent(InputMethodEvent var1) {
  85.       if (((AWTEvent)var1).getID() == 1100) {
  86.          this.inputMethodTextChanged(var1);
  87.       } else {
  88.          this.caretPositionChanged(var1);
  89.       }
  90.  
  91.    }
  92.  
  93.    public void inputMethodTextChanged(InputMethodEvent var1) {
  94.       AttributedCharacterIterator var2 = var1.getText();
  95.       int var3 = var1.getCommittedCharacterCount();
  96.       this.composedText = null;
  97.       this.caret = null;
  98.       if (var2 != null && var3 < var2.getEndIndex() - var2.getBeginIndex()) {
  99.          AttributedString var4 = new AttributedString(var2, var2.getBeginIndex() + var3, var2.getEndIndex(), IM_ATTRIBUTES);
  100.          var4.addAttribute(TextAttribute.FONT, compositionArea.getFont());
  101.          this.composedText = var4.getIterator();
  102.          this.caret = var1.getCaret();
  103.       }
  104.  
  105.       compositionArea.setText(this.composedText, this.caret);
  106.       if (var3 > 0) {
  107.          this.inputMethodContext.dispatchCommittedText((Component)((EventObject)var1).getSource(), var2, var3);
  108.          if (this.isCompositionAreaVisible()) {
  109.             compositionArea.updateWindowLocation();
  110.          }
  111.       }
  112.  
  113.       var1.consume();
  114.    }
  115.  
  116.    public void caretPositionChanged(InputMethodEvent var1) {
  117.       compositionArea.setCaret(var1.getCaret());
  118.       var1.consume();
  119.    }
  120.  
  121.    InputMethodRequests getClientInputMethodRequests() {
  122.       return this.clientComponent.getInputMethodRequests();
  123.    }
  124.  
  125.    public Rectangle getTextLocation(TextHitInfo var1) {
  126.       CompositionArea var2 = compositionArea;
  127.       synchronized(var2) {
  128.          if (compositionAreaOwner == this && this.isCompositionAreaVisible()) {
  129.             Rectangle var8 = compositionArea.getTextLocation(var1);
  130.             return var8;
  131.          } else if (this.composedText != null) {
  132.             Rectangle var7 = new Rectangle(0, 0, 0, 10);
  133.             return var7;
  134.          } else {
  135.             InputMethodRequests var3 = this.getClientInputMethodRequests();
  136.             if (var3 != null) {
  137.                Rectangle var9 = var3.getTextLocation(var1);
  138.                return var9;
  139.             } else {
  140.                Rectangle var4 = new Rectangle(0, 0, 0, 10);
  141.                return var4;
  142.             }
  143.          }
  144.       }
  145.    }
  146.  
  147.    public TextHitInfo getLocationOffset(int var1, int var2) {
  148.       CompositionArea var3 = compositionArea;
  149.       synchronized(var3) {
  150.          if (compositionAreaOwner == this && this.isCompositionAreaVisible()) {
  151.             TextHitInfo var7 = compositionArea.getLocationOffset(var1, var2);
  152.             return var7;
  153.          } else {
  154.             Object var4 = null;
  155.             return (TextHitInfo)var4;
  156.          }
  157.       }
  158.    }
  159.  
  160.    public int getInsertPositionOffset() {
  161.       InputMethodRequests var1 = this.getClientInputMethodRequests();
  162.       return var1 != null ? var1.getInsertPositionOffset() : 0;
  163.    }
  164.  
  165.    public AttributedCharacterIterator getCommittedText(int var1, int var2, AttributedCharacterIterator.Attribute[] var3) {
  166.       InputMethodRequests var4 = this.getClientInputMethodRequests();
  167.       return var4 != null ? var4.getCommittedText(var1, var2, var3) : EMPTY_TEXT;
  168.    }
  169.  
  170.    public int getCommittedTextLength() {
  171.       InputMethodRequests var1 = this.getClientInputMethodRequests();
  172.       return var1 != null ? var1.getCommittedTextLength() : 0;
  173.    }
  174.  
  175.    public AttributedCharacterIterator cancelLatestCommittedText(AttributedCharacterIterator.Attribute[] var1) {
  176.       InputMethodRequests var2 = this.getClientInputMethodRequests();
  177.       return var2 != null ? var2.cancelLatestCommittedText(var1) : null;
  178.    }
  179.  
  180.    public AttributedCharacterIterator getSelectedText(AttributedCharacterIterator.Attribute[] var1) {
  181.       InputMethodRequests var2 = this.getClientInputMethodRequests();
  182.       return var2 != null ? var2.getSelectedText(var1) : EMPTY_TEXT;
  183.    }
  184.  
  185.    // $FF: synthetic method
  186.    static Class class$(String var0) {
  187.       try {
  188.          return Class.forName(var0);
  189.       } catch (ClassNotFoundException var2) {
  190.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  191.       }
  192.    }
  193.  
  194.    static {
  195.       IM_ATTRIBUTES = new AttributedCharacterIterator.Attribute[]{TextAttribute.INPUT_METHOD_HIGHLIGHT};
  196.       EMPTY_TEXT = (new AttributedString("")).getIterator();
  197.    }
  198. }
  199.