home *** CD-ROM | disk | FTP | other *** search
- package sun.awt.im;
-
- import java.awt.AWTEvent;
- import java.awt.Component;
- import java.awt.Rectangle;
- import java.awt.event.InputMethodEvent;
- import java.awt.event.InputMethodListener;
- import java.awt.font.TextAttribute;
- import java.awt.font.TextHitInfo;
- import java.awt.im.InputMethodRequests;
- import java.text.AttributedCharacterIterator;
- import java.text.AttributedString;
- import java.util.EventObject;
-
- class CompositionAreaHandler implements InputMethodListener, InputMethodRequests {
- private static CompositionArea compositionArea;
- private static CompositionAreaHandler compositionAreaOwner;
- private AttributedCharacterIterator composedText;
- private TextHitInfo caret = null;
- private Component clientComponent = null;
- private InputMethodContext inputMethodContext;
- private static final AttributedCharacterIterator.Attribute[] IM_ATTRIBUTES;
- private static final AttributedCharacterIterator EMPTY_TEXT;
- // $FF: synthetic field
- static Class class$sun$awt$im$CompositionAreaHandler;
-
- CompositionAreaHandler(InputMethodContext var1) {
- Class var2 = class$sun$awt$im$CompositionAreaHandler == null ? (class$sun$awt$im$CompositionAreaHandler = class$("sun.awt.im.CompositionAreaHandler")) : class$sun$awt$im$CompositionAreaHandler;
- synchronized(var2) {
- if (compositionArea == null) {
- compositionArea = new CompositionArea();
- }
- }
-
- this.inputMethodContext = var1;
- }
-
- void setClientComponent(Component var1) {
- this.clientComponent = var1;
- }
-
- void grabCompositionArea(boolean var1) {
- CompositionArea var2 = compositionArea;
- synchronized(var2) {
- if (compositionAreaOwner != this) {
- compositionAreaOwner = this;
- compositionArea.setHandlerInfo(this, this.inputMethodContext);
- if (var1) {
- compositionArea.setText(this.composedText, this.caret);
- }
- }
-
- }
- }
-
- void releaseCompositionArea() {
- CompositionArea var1 = compositionArea;
- synchronized(var1) {
- if (compositionAreaOwner == this) {
- compositionAreaOwner = null;
- compositionArea.setHandlerInfo((CompositionAreaHandler)null, (InputContext)null);
- compositionArea.setText((AttributedCharacterIterator)null, (TextHitInfo)null);
- }
-
- }
- }
-
- static void closeCompositionArea() {
- if (compositionArea != null) {
- CompositionArea var0 = compositionArea;
- synchronized(var0) {
- compositionAreaOwner = null;
- compositionArea.setHandlerInfo((CompositionAreaHandler)null, (InputContext)null);
- compositionArea.setText((AttributedCharacterIterator)null, (TextHitInfo)null);
- }
- }
-
- }
-
- boolean isCompositionAreaVisible() {
- return compositionArea.getParent().isVisible();
- }
-
- void processInputMethodEvent(InputMethodEvent var1) {
- if (((AWTEvent)var1).getID() == 1100) {
- this.inputMethodTextChanged(var1);
- } else {
- this.caretPositionChanged(var1);
- }
-
- }
-
- public void inputMethodTextChanged(InputMethodEvent var1) {
- AttributedCharacterIterator var2 = var1.getText();
- int var3 = var1.getCommittedCharacterCount();
- this.composedText = null;
- this.caret = null;
- if (var2 != null && var3 < var2.getEndIndex() - var2.getBeginIndex()) {
- AttributedString var4 = new AttributedString(var2, var2.getBeginIndex() + var3, var2.getEndIndex(), IM_ATTRIBUTES);
- var4.addAttribute(TextAttribute.FONT, compositionArea.getFont());
- this.composedText = var4.getIterator();
- this.caret = var1.getCaret();
- }
-
- compositionArea.setText(this.composedText, this.caret);
- if (var3 > 0) {
- this.inputMethodContext.dispatchCommittedText((Component)((EventObject)var1).getSource(), var2, var3);
- if (this.isCompositionAreaVisible()) {
- compositionArea.updateWindowLocation();
- }
- }
-
- var1.consume();
- }
-
- public void caretPositionChanged(InputMethodEvent var1) {
- compositionArea.setCaret(var1.getCaret());
- var1.consume();
- }
-
- InputMethodRequests getClientInputMethodRequests() {
- return this.clientComponent.getInputMethodRequests();
- }
-
- public Rectangle getTextLocation(TextHitInfo var1) {
- CompositionArea var2 = compositionArea;
- synchronized(var2) {
- if (compositionAreaOwner == this && this.isCompositionAreaVisible()) {
- Rectangle var8 = compositionArea.getTextLocation(var1);
- return var8;
- } else if (this.composedText != null) {
- Rectangle var7 = new Rectangle(0, 0, 0, 10);
- return var7;
- } else {
- InputMethodRequests var3 = this.getClientInputMethodRequests();
- if (var3 != null) {
- Rectangle var9 = var3.getTextLocation(var1);
- return var9;
- } else {
- Rectangle var4 = new Rectangle(0, 0, 0, 10);
- return var4;
- }
- }
- }
- }
-
- public TextHitInfo getLocationOffset(int var1, int var2) {
- CompositionArea var3 = compositionArea;
- synchronized(var3) {
- if (compositionAreaOwner == this && this.isCompositionAreaVisible()) {
- TextHitInfo var7 = compositionArea.getLocationOffset(var1, var2);
- return var7;
- } else {
- Object var4 = null;
- return (TextHitInfo)var4;
- }
- }
- }
-
- public int getInsertPositionOffset() {
- InputMethodRequests var1 = this.getClientInputMethodRequests();
- return var1 != null ? var1.getInsertPositionOffset() : 0;
- }
-
- public AttributedCharacterIterator getCommittedText(int var1, int var2, AttributedCharacterIterator.Attribute[] var3) {
- InputMethodRequests var4 = this.getClientInputMethodRequests();
- return var4 != null ? var4.getCommittedText(var1, var2, var3) : EMPTY_TEXT;
- }
-
- public int getCommittedTextLength() {
- InputMethodRequests var1 = this.getClientInputMethodRequests();
- return var1 != null ? var1.getCommittedTextLength() : 0;
- }
-
- public AttributedCharacterIterator cancelLatestCommittedText(AttributedCharacterIterator.Attribute[] var1) {
- InputMethodRequests var2 = this.getClientInputMethodRequests();
- return var2 != null ? var2.cancelLatestCommittedText(var1) : null;
- }
-
- public AttributedCharacterIterator getSelectedText(AttributedCharacterIterator.Attribute[] var1) {
- InputMethodRequests var2 = this.getClientInputMethodRequests();
- return var2 != null ? var2.getSelectedText(var1) : EMPTY_TEXT;
- }
-
- // $FF: synthetic method
- static Class class$(String var0) {
- try {
- return Class.forName(var0);
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
- }
-
- static {
- IM_ATTRIBUTES = new AttributedCharacterIterator.Attribute[]{TextAttribute.INPUT_METHOD_HIGHLIGHT};
- EMPTY_TEXT = (new AttributedString("")).getIterator();
- }
- }
-