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 / JTextComponent.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  18.7 KB  |  883 lines

  1. package javax.swing.text;
  2.  
  3. import java.awt.AWTEvent;
  4. import java.awt.Color;
  5. import java.awt.Component;
  6. import java.awt.Container;
  7. import java.awt.Cursor;
  8. import java.awt.Dimension;
  9. import java.awt.Insets;
  10. import java.awt.LayoutManager;
  11. import java.awt.Point;
  12. import java.awt.Rectangle;
  13. import java.awt.datatransfer.Clipboard;
  14. import java.awt.datatransfer.ClipboardOwner;
  15. import java.awt.datatransfer.DataFlavor;
  16. import java.awt.datatransfer.StringSelection;
  17. import java.awt.datatransfer.Transferable;
  18. import java.awt.event.ActionEvent;
  19. import java.awt.event.InputMethodEvent;
  20. import java.awt.event.InputMethodListener;
  21. import java.awt.event.KeyEvent;
  22. import java.awt.font.TextHitInfo;
  23. import java.awt.im.InputMethodRequests;
  24. import java.io.IOException;
  25. import java.io.ObjectInputStream;
  26. import java.io.Reader;
  27. import java.io.Writer;
  28. import java.security.AccessController;
  29. import java.text.AttributedCharacterIterator;
  30. import java.text.AttributedString;
  31. import java.util.Hashtable;
  32. import javax.accessibility.Accessible;
  33. import javax.accessibility.AccessibleContext;
  34. import javax.swing.Action;
  35. import javax.swing.ActionMap;
  36. import javax.swing.InputMap;
  37. import javax.swing.JComponent;
  38. import javax.swing.JViewport;
  39. import javax.swing.KeyStroke;
  40. import javax.swing.Scrollable;
  41. import javax.swing.UIManager;
  42. import javax.swing.event.CaretEvent;
  43. import javax.swing.event.CaretListener;
  44. import javax.swing.plaf.TextUI;
  45.  
  46. public abstract class JTextComponent extends JComponent implements Scrollable, Accessible {
  47.    public static final String FOCUS_ACCELERATOR_KEY = "focusAcceleratorKey";
  48.    private Document model;
  49.    private transient Caret caret;
  50.    private transient Highlighter highlighter;
  51.    private transient Keymap keymap;
  52.    private transient MutableCaretEvent caretEvent;
  53.    private Color caretColor;
  54.    private Color selectionColor;
  55.    private Color selectedTextColor;
  56.    private Color disabledTextColor;
  57.    private boolean editable;
  58.    private Insets margin;
  59.    private char focusAccelerator;
  60.    private static ClipboardOwner defaultClipboardOwner = new ClipboardObserver();
  61.    private static Hashtable keymapTable = null;
  62.    private JTextComponent editor;
  63.    private static JTextComponent focusedComponent;
  64.    private InputMethodRequests inputMethodRequestsHandler;
  65.    private AttributedString composedText;
  66.    private String composedTextContent;
  67.    private Position composedTextStart;
  68.    private Position composedTextEnd;
  69.    private ComposedTextCaret composedTextCaret;
  70.    private transient Caret originalCaret;
  71.    private boolean needToSendKeyTypedEvent;
  72.    public static final String DEFAULT_KEYMAP = "default";
  73.    // $FF: synthetic field
  74.    static Class class$javax$swing$event$CaretListener;
  75.  
  76.    public JTextComponent() {
  77.       ((Component)this).enableEvents(2056L);
  78.       this.needToSendKeyTypedEvent = !this.isProcessInputMethodEventOverridden();
  79.       this.caretEvent = new MutableCaretEvent(this);
  80.       ((Component)this).addMouseListener(this.caretEvent);
  81.       ((Component)this).addFocusListener(this.caretEvent);
  82.       this.setEditable(true);
  83.       ((Container)this).setLayout((LayoutManager)null);
  84.       this.updateUI();
  85.    }
  86.  
  87.    public TextUI getUI() {
  88.       return (TextUI)super.ui;
  89.    }
  90.  
  91.    public void setUI(TextUI var1) {
  92.       super.setUI(var1);
  93.    }
  94.  
  95.    public void updateUI() {
  96.       this.setUI((TextUI)UIManager.getUI(this));
  97.       ((Container)this).invalidate();
  98.    }
  99.  
  100.    public void addCaretListener(CaretListener var1) {
  101.       super.listenerList.add(class$javax$swing$event$CaretListener == null ? (class$javax$swing$event$CaretListener = class$("javax.swing.event.CaretListener")) : class$javax$swing$event$CaretListener, var1);
  102.    }
  103.  
  104.    public void removeCaretListener(CaretListener var1) {
  105.       super.listenerList.remove(class$javax$swing$event$CaretListener == null ? (class$javax$swing$event$CaretListener = class$("javax.swing.event.CaretListener")) : class$javax$swing$event$CaretListener, var1);
  106.    }
  107.  
  108.    protected void fireCaretUpdate(CaretEvent var1) {
  109.       Object[] var2 = super.listenerList.getListenerList();
  110.  
  111.       for(int var3 = var2.length - 2; var3 >= 0; var3 -= 2) {
  112.          if (var2[var3] == (class$javax$swing$event$CaretListener == null ? (class$javax$swing$event$CaretListener = class$("javax.swing.event.CaretListener")) : class$javax$swing$event$CaretListener)) {
  113.             ((CaretListener)var2[var3 + 1]).caretUpdate(var1);
  114.          }
  115.       }
  116.  
  117.    }
  118.  
  119.    public void setDocument(Document var1) {
  120.       if (super.accessibleContext != null) {
  121.          this.model.removeDocumentListener((AccessibleJTextComponent)super.accessibleContext);
  122.       }
  123.  
  124.       Document var2 = this.model;
  125.       this.model = var1;
  126.       ((JComponent)this).firePropertyChange("document", var2, var1);
  127.       ((JComponent)this).revalidate();
  128.       ((Component)this).repaint();
  129.       if (super.accessibleContext != null) {
  130.          this.model.addDocumentListener((AccessibleJTextComponent)super.accessibleContext);
  131.       }
  132.  
  133.    }
  134.  
  135.    public Document getDocument() {
  136.       return this.model;
  137.    }
  138.  
  139.    public Action[] getActions() {
  140.       return this.getUI().getEditorKit(this).getActions();
  141.    }
  142.  
  143.    public void setMargin(Insets var1) {
  144.       Insets var2 = this.margin;
  145.       this.margin = var1;
  146.       ((JComponent)this).firePropertyChange("margin", var2, var1);
  147.       ((Container)this).invalidate();
  148.    }
  149.  
  150.    public Insets getMargin() {
  151.       return this.margin;
  152.    }
  153.  
  154.    public Caret getCaret() {
  155.       return this.caret;
  156.    }
  157.  
  158.    public void setCaret(Caret var1) {
  159.       if (this.caret != null) {
  160.          this.caret.removeChangeListener(this.caretEvent);
  161.          this.caret.deinstall(this);
  162.       }
  163.  
  164.       Caret var2 = this.caret;
  165.       this.caret = var1;
  166.       if (this.caret != null) {
  167.          this.caret.install(this);
  168.          this.caret.addChangeListener(this.caretEvent);
  169.       }
  170.  
  171.       ((JComponent)this).firePropertyChange("caret", var2, this.caret);
  172.    }
  173.  
  174.    public Highlighter getHighlighter() {
  175.       return this.highlighter;
  176.    }
  177.  
  178.    public void setHighlighter(Highlighter var1) {
  179.       if (this.highlighter != null) {
  180.          this.highlighter.deinstall(this);
  181.       }
  182.  
  183.       Highlighter var2 = this.highlighter;
  184.       this.highlighter = var1;
  185.       if (this.highlighter != null) {
  186.          this.highlighter.install(this);
  187.       }
  188.  
  189.       ((JComponent)this).firePropertyChange("highlighter", var2, var1);
  190.    }
  191.  
  192.    public void setKeymap(Keymap var1) {
  193.       Keymap var2 = this.keymap;
  194.       this.keymap = var1;
  195.       ((JComponent)this).firePropertyChange("keymap", var2, this.keymap);
  196.       this.updateInputMap(var2, var1);
  197.    }
  198.  
  199.    void updateInputMap(Keymap var1, Keymap var2) {
  200.       InputMap var3 = ((JComponent)this).getInputMap(0);
  201.  
  202.       InputMap var4;
  203.       for(var4 = var3; var3 != null && !(var3 instanceof KeymapWrapper); var3 = var3.getParent()) {
  204.          var4 = var3;
  205.       }
  206.  
  207.       if (var3 != null) {
  208.          if (var2 == null) {
  209.             if (var4 != var3) {
  210.                var4.setParent(var3.getParent());
  211.             } else {
  212.                var4.setParent((InputMap)null);
  213.             }
  214.          } else {
  215.             KeymapWrapper var5 = new KeymapWrapper(var2);
  216.             var4.setParent(var5);
  217.             if (var4 != var3) {
  218.                ((InputMap)var5).setParent(var3.getParent());
  219.             }
  220.          }
  221.       } else if (var2 != null) {
  222.          var3 = ((JComponent)this).getInputMap(0);
  223.          if (var3 != null) {
  224.             KeymapWrapper var9 = new KeymapWrapper(var2);
  225.             ((InputMap)var9).setParent(var3.getParent());
  226.             var3.setParent(var9);
  227.          }
  228.       }
  229.  
  230.       ActionMap var10 = ((JComponent)this).getActionMap();
  231.  
  232.       ActionMap var6;
  233.       for(var6 = var10; var10 != null && !(var10 instanceof KeymapActionMap); var10 = var10.getParent()) {
  234.          var6 = var10;
  235.       }
  236.  
  237.       if (var10 != null) {
  238.          if (var2 == null) {
  239.             if (var6 != var10) {
  240.                var6.setParent(var10.getParent());
  241.             } else {
  242.                var6.setParent((ActionMap)null);
  243.             }
  244.          } else {
  245.             KeymapActionMap var7 = new KeymapActionMap(var2);
  246.             var6.setParent(var7);
  247.             if (var6 != var10) {
  248.                ((ActionMap)var7).setParent(var10.getParent());
  249.             }
  250.          }
  251.       } else if (var2 != null) {
  252.          var10 = ((JComponent)this).getActionMap();
  253.          if (var10 != null) {
  254.             KeymapActionMap var12 = new KeymapActionMap(var2);
  255.             ((ActionMap)var12).setParent(var10.getParent());
  256.             var10.setParent(var12);
  257.          }
  258.       }
  259.  
  260.    }
  261.  
  262.    public Keymap getKeymap() {
  263.       return this.keymap;
  264.    }
  265.  
  266.    public static Keymap addKeymap(String var0, Keymap var1) {
  267.       DefaultKeymap var2 = new DefaultKeymap(var0, var1);
  268.       if (var0 != null) {
  269.          keymapTable.put(var0, var2);
  270.       }
  271.  
  272.       return var2;
  273.    }
  274.  
  275.    public static Keymap removeKeymap(String var0) {
  276.       return (Keymap)keymapTable.remove(var0);
  277.    }
  278.  
  279.    public static Keymap getKeymap(String var0) {
  280.       return (Keymap)keymapTable.get(var0);
  281.    }
  282.  
  283.    public static void loadKeymap(Keymap var0, KeyBinding[] var1, Action[] var2) {
  284.       Hashtable var3 = new Hashtable();
  285.  
  286.       for(int var4 = 0; var4 < var2.length; ++var4) {
  287.          Action var5 = var2[var4];
  288.          String var6 = (String)var5.getValue("Name");
  289.          var3.put(var6 != null ? var6 : "", var5);
  290.       }
  291.  
  292.       for(int var7 = 0; var7 < var1.length; ++var7) {
  293.          Action var8 = (Action)var3.get(var1[var7].actionName);
  294.          if (var8 != null) {
  295.             var0.addActionForKeyStroke(var1[var7].key, var8);
  296.          }
  297.       }
  298.  
  299.    }
  300.  
  301.    public Color getCaretColor() {
  302.       return this.caretColor;
  303.    }
  304.  
  305.    public void setCaretColor(Color var1) {
  306.       Color var2 = this.caretColor;
  307.       this.caretColor = var1;
  308.       ((JComponent)this).firePropertyChange("caretColor", var2, this.caretColor);
  309.    }
  310.  
  311.    public Color getSelectionColor() {
  312.       return this.selectionColor;
  313.    }
  314.  
  315.    public void setSelectionColor(Color var1) {
  316.       Color var2 = this.selectionColor;
  317.       this.selectionColor = var1;
  318.       ((JComponent)this).firePropertyChange("selectionColor", var2, this.selectionColor);
  319.    }
  320.  
  321.    public Color getSelectedTextColor() {
  322.       return this.selectedTextColor;
  323.    }
  324.  
  325.    public void setSelectedTextColor(Color var1) {
  326.       Color var2 = this.selectedTextColor;
  327.       this.selectedTextColor = var1;
  328.       ((JComponent)this).firePropertyChange("selectedTextColor", var2, this.selectedTextColor);
  329.    }
  330.  
  331.    public Color getDisabledTextColor() {
  332.       return this.disabledTextColor;
  333.    }
  334.  
  335.    public void setDisabledTextColor(Color var1) {
  336.       Color var2 = this.disabledTextColor;
  337.       this.disabledTextColor = var1;
  338.       ((JComponent)this).firePropertyChange("disabledTextColor", var2, this.disabledTextColor);
  339.    }
  340.  
  341.    public void replaceSelection(String var1) {
  342.       Document var2 = this.getDocument();
  343.       if (var2 != null) {
  344.          try {
  345.             int var3 = Math.min(this.caret.getDot(), this.caret.getMark());
  346.             int var4 = Math.max(this.caret.getDot(), this.caret.getMark());
  347.             if (var3 != var4) {
  348.                var2.remove(var3, var4 - var3);
  349.             }
  350.  
  351.             if (var1 != null && var1.length() > 0) {
  352.                var2.insertString(var3, var1, (AttributeSet)null);
  353.             }
  354.          } catch (BadLocationException var5) {
  355.             ((Component)this).getToolkit().beep();
  356.          }
  357.       }
  358.  
  359.    }
  360.  
  361.    public String getText(int var1, int var2) throws BadLocationException {
  362.       return this.getDocument().getText(var1, var2);
  363.    }
  364.  
  365.    public Rectangle modelToView(int var1) throws BadLocationException {
  366.       return this.getUI().modelToView(this, var1);
  367.    }
  368.  
  369.    public int viewToModel(Point var1) {
  370.       return this.getUI().viewToModel(this, var1);
  371.    }
  372.  
  373.    public void cut() {
  374.       if (this.isEditable() && ((Component)this).isEnabled()) {
  375.          try {
  376.             Clipboard var1 = ((Component)this).getToolkit().getSystemClipboard();
  377.             int var2 = Math.min(this.caret.getDot(), this.caret.getMark());
  378.             int var3 = Math.max(this.caret.getDot(), this.caret.getMark());
  379.             if (var2 != var3) {
  380.                Document var4 = this.getDocument();
  381.                String var5 = var4.getText(var2, var3 - var2);
  382.                StringSelection var6 = new StringSelection(var5);
  383.                var1.setContents(var6, defaultClipboardOwner);
  384.                var4.remove(var2, var3 - var2);
  385.             }
  386.          } catch (BadLocationException var7) {
  387.          }
  388.       } else {
  389.          ((Component)this).getToolkit().beep();
  390.       }
  391.  
  392.    }
  393.  
  394.    public void copy() {
  395.       try {
  396.          Clipboard var1 = ((Component)this).getToolkit().getSystemClipboard();
  397.          int var2 = Math.min(this.caret.getDot(), this.caret.getMark());
  398.          int var3 = Math.max(this.caret.getDot(), this.caret.getMark());
  399.          if (var2 != var3) {
  400.             Document var4 = this.getDocument();
  401.             String var5 = var4.getText(var2, var3 - var2);
  402.             StringSelection var6 = new StringSelection(var5);
  403.             var1.setContents(var6, defaultClipboardOwner);
  404.          }
  405.       } catch (BadLocationException var7) {
  406.       }
  407.  
  408.    }
  409.  
  410.    public void paste() {
  411.       Clipboard var1 = ((Component)this).getToolkit().getSystemClipboard();
  412.       Transferable var2 = var1.getContents(this);
  413.       if (this.isEditable() && ((Component)this).isEnabled() && var2 != null) {
  414.          try {
  415.             String var3 = (String)var2.getTransferData(DataFlavor.stringFlavor);
  416.             this.replaceSelection(var3);
  417.          } catch (Exception var4) {
  418.             ((Component)this).getToolkit().beep();
  419.          }
  420.       } else {
  421.          ((Component)this).getToolkit().beep();
  422.       }
  423.  
  424.    }
  425.  
  426.    public void moveCaretPosition(int var1) {
  427.       this.caret.moveDot(var1);
  428.    }
  429.  
  430.    public void setFocusAccelerator(char var1) {
  431.       var1 = Character.toUpperCase(var1);
  432.       char var2 = this.focusAccelerator;
  433.       this.focusAccelerator = var1;
  434.       ((JComponent)this).firePropertyChange("focusAcceleratorKey", var2, this.focusAccelerator);
  435.    }
  436.  
  437.    public char getFocusAccelerator() {
  438.       return this.focusAccelerator;
  439.    }
  440.  
  441.    public void read(Reader var1, Object var2) throws IOException {
  442.       EditorKit var3 = this.getUI().getEditorKit(this);
  443.       Document var4 = var3.createDefaultDocument();
  444.       if (var2 != null) {
  445.          var4.putProperty("stream", var2);
  446.       }
  447.  
  448.       try {
  449.          var3.read(var1, var4, 0);
  450.          this.setDocument(var4);
  451.       } catch (BadLocationException var6) {
  452.          throw new IOException(((Throwable)var6).getMessage());
  453.       }
  454.    }
  455.  
  456.    public void write(Writer var1) throws IOException {
  457.       Document var2 = this.getDocument();
  458.  
  459.       try {
  460.          this.getUI().getEditorKit(this).write(var1, var2, 0, var2.getLength());
  461.       } catch (BadLocationException var4) {
  462.          throw new IOException(((Throwable)var4).getMessage());
  463.       }
  464.    }
  465.  
  466.    public void removeNotify() {
  467.       super.removeNotify();
  468.       if (focusedComponent == this) {
  469.          focusedComponent = null;
  470.       }
  471.  
  472.    }
  473.  
  474.    public boolean isFocusTraversable() {
  475.       return ((Component)this).isEnabled();
  476.    }
  477.  
  478.    public void setCaretPosition(int var1) {
  479.       Document var2 = this.getDocument();
  480.       if (var2 != null) {
  481.          if (var1 > var2.getLength() || var1 < 0) {
  482.             throw new IllegalArgumentException("bad position: " + var1);
  483.          }
  484.  
  485.          this.caret.setDot(var1);
  486.       }
  487.  
  488.    }
  489.  
  490.    public int getCaretPosition() {
  491.       return this.caret.getDot();
  492.    }
  493.  
  494.    public void setText(String var1) {
  495.       try {
  496.          Document var2 = this.getDocument();
  497.          var2.remove(0, var2.getLength());
  498.          var2.insertString(0, var1, (AttributeSet)null);
  499.       } catch (BadLocationException var3) {
  500.          ((Component)this).getToolkit().beep();
  501.       }
  502.  
  503.    }
  504.  
  505.    public String getText() {
  506.       Document var1 = this.getDocument();
  507.  
  508.       String var2;
  509.       try {
  510.          var2 = var1.getText(0, var1.getLength());
  511.       } catch (BadLocationException var4) {
  512.          var2 = null;
  513.       }
  514.  
  515.       return var2;
  516.    }
  517.  
  518.    public String getSelectedText() {
  519.       String var1 = null;
  520.       int var2 = Math.min(this.caret.getDot(), this.caret.getMark());
  521.       int var3 = Math.max(this.caret.getDot(), this.caret.getMark());
  522.       if (var2 != var3) {
  523.          try {
  524.             Document var4 = this.getDocument();
  525.             var1 = var4.getText(var2, var3 - var2);
  526.          } catch (BadLocationException var5) {
  527.             throw new IllegalArgumentException(((Throwable)var5).getMessage());
  528.          }
  529.       }
  530.  
  531.       return var1;
  532.    }
  533.  
  534.    public boolean isEditable() {
  535.       return this.editable;
  536.    }
  537.  
  538.    public void setEditable(boolean var1) {
  539.       if (var1 != this.editable) {
  540.          boolean var2 = this.editable;
  541.          this.editable = var1;
  542.          if (this.editable) {
  543.             ((Component)this).setCursor(Cursor.getPredefinedCursor(2));
  544.          } else {
  545.             ((Component)this).setCursor(Cursor.getPredefinedCursor(0));
  546.          }
  547.  
  548.          ((JComponent)this).firePropertyChange("editable", new Boolean(var2), new Boolean(this.editable));
  549.          ((Component)this).repaint();
  550.       }
  551.  
  552.    }
  553.  
  554.    public int getSelectionStart() {
  555.       int var1 = Math.min(this.caret.getDot(), this.caret.getMark());
  556.       return var1;
  557.    }
  558.  
  559.    public void setSelectionStart(int var1) {
  560.       this.select(var1, this.getSelectionEnd());
  561.    }
  562.  
  563.    public int getSelectionEnd() {
  564.       int var1 = Math.max(this.caret.getDot(), this.caret.getMark());
  565.       return var1;
  566.    }
  567.  
  568.    public void setSelectionEnd(int var1) {
  569.       this.select(this.getSelectionStart(), var1);
  570.    }
  571.  
  572.    public void select(int var1, int var2) {
  573.       if (var1 < 0) {
  574.          var1 = 0;
  575.       }
  576.  
  577.       if (var2 > this.getDocument().getLength()) {
  578.          var2 = this.getDocument().getLength();
  579.       }
  580.  
  581.       if (var2 < var1) {
  582.          var2 = var1;
  583.       }
  584.  
  585.       if (var1 > var2) {
  586.          var1 = var2;
  587.       }
  588.  
  589.       this.setCaretPosition(var1);
  590.       this.moveCaretPosition(var2);
  591.    }
  592.  
  593.    public void selectAll() {
  594.       Document var1 = this.getDocument();
  595.       if (var1 != null) {
  596.          this.setCaretPosition(0);
  597.          this.moveCaretPosition(var1.getLength());
  598.       }
  599.  
  600.    }
  601.  
  602.    public Dimension getPreferredScrollableViewportSize() {
  603.       return ((JComponent)this).getPreferredSize();
  604.    }
  605.  
  606.    public int getScrollableUnitIncrement(Rectangle var1, int var2, int var3) {
  607.       switch (var2) {
  608.          case 0:
  609.             return var1.width / 10;
  610.          case 1:
  611.             return var1.height / 10;
  612.          default:
  613.             throw new IllegalArgumentException("Invalid orientation: " + var2);
  614.       }
  615.    }
  616.  
  617.    public int getScrollableBlockIncrement(Rectangle var1, int var2, int var3) {
  618.       switch (var2) {
  619.          case 0:
  620.             return var1.width;
  621.          case 1:
  622.             return var1.height;
  623.          default:
  624.             throw new IllegalArgumentException("Invalid orientation: " + var2);
  625.       }
  626.    }
  627.  
  628.    public boolean getScrollableTracksViewportWidth() {
  629.       if (((Component)this).getParent() instanceof JViewport) {
  630.          return ((JViewport)((Component)this).getParent()).getWidth() > ((JComponent)this).getPreferredSize().width;
  631.       } else {
  632.          return false;
  633.       }
  634.    }
  635.  
  636.    public boolean getScrollableTracksViewportHeight() {
  637.       if (((Component)this).getParent() instanceof JViewport) {
  638.          return ((JViewport)((Component)this).getParent()).getHeight() > ((JComponent)this).getPreferredSize().height;
  639.       } else {
  640.          return false;
  641.       }
  642.    }
  643.  
  644.    public AccessibleContext getAccessibleContext() {
  645.       if (super.accessibleContext == null) {
  646.          super.accessibleContext = new AccessibleJTextComponent(this);
  647.       }
  648.  
  649.       return super.accessibleContext;
  650.    }
  651.  
  652.    private void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
  653.       var1.defaultReadObject();
  654.       this.caretEvent = new MutableCaretEvent(this);
  655.       ((Component)this).addMouseListener(this.caretEvent);
  656.       ((Component)this).addFocusListener(this.caretEvent);
  657.    }
  658.  
  659.    protected String paramString() {
  660.       String var1 = this.editable ? "true" : "false";
  661.       String var2 = this.caretColor != null ? this.caretColor.toString() : "";
  662.       String var3 = this.selectionColor != null ? this.selectionColor.toString() : "";
  663.       String var4 = this.selectedTextColor != null ? this.selectedTextColor.toString() : "";
  664.       String var5 = this.disabledTextColor != null ? this.disabledTextColor.toString() : "";
  665.       String var6 = this.margin != null ? this.margin.toString() : "";
  666.       return super.paramString() + ",caretColor=" + var2 + ",disabledTextColor=" + var5 + ",editable=" + var1 + ",margin=" + var6 + ",selectedTextColor=" + var4 + ",selectionColor=" + var3;
  667.    }
  668.  
  669.    static final JTextComponent getFocusedComponent() {
  670.       return focusedComponent;
  671.    }
  672.  
  673.    protected void processInputMethodEvent(InputMethodEvent var1) {
  674.       super.processInputMethodEvent(var1);
  675.       if (!var1.isConsumed()) {
  676.          if (!this.isEditable()) {
  677.             return;
  678.          }
  679.  
  680.          switch (((AWTEvent)var1).getID()) {
  681.             case 1100:
  682.                this.replaceInputMethodText(var1);
  683.             case 1101:
  684.                this.setInputMethodCaretPosition(var1);
  685.             default:
  686.                var1.consume();
  687.          }
  688.       }
  689.  
  690.    }
  691.  
  692.    public InputMethodRequests getInputMethodRequests() {
  693.       if (this.inputMethodRequestsHandler == null) {
  694.          this.inputMethodRequestsHandler = new InputMethodRequestsHandler(this);
  695.       }
  696.  
  697.       return this.inputMethodRequestsHandler;
  698.    }
  699.  
  700.    public void addInputMethodListener(InputMethodListener var1) {
  701.       super.addInputMethodListener(var1);
  702.       if (var1 != null) {
  703.          this.needToSendKeyTypedEvent = false;
  704.       }
  705.  
  706.    }
  707.  
  708.    private void replaceInputMethodText(InputMethodEvent var1) {
  709.       int var2 = var1.getCommittedCharacterCount();
  710.       AttributedCharacterIterator var3 = var1.getText();
  711.       Document var5 = this.getDocument();
  712.       if (this.composedTextStart != null) {
  713.          try {
  714.             int var6 = this.composedTextStart.getOffset();
  715.             var5.remove(var6, this.composedTextEnd.getOffset() - var6);
  716.          } catch (BadLocationException var9) {
  717.          }
  718.  
  719.          this.composedTextStart = this.composedTextEnd = null;
  720.          this.composedText = null;
  721.          this.composedTextContent = null;
  722.       }
  723.  
  724.       if (var3 != null) {
  725.          var3.first();
  726.          if (var2 > 0) {
  727.             if (this.needToSendKeyTypedEvent) {
  728.                for(char var11 = var3.current(); var2 > 0; --var2) {
  729.                   KeyEvent var13 = new KeyEvent(this, 400, System.currentTimeMillis(), 0, 0, var11);
  730.                   ((JComponent)this).processKeyEvent(var13);
  731.                   var11 = var3.next();
  732.                }
  733.             } else {
  734.                StringBuffer var10 = new StringBuffer();
  735.  
  736.                for(char var7 = var3.current(); var2 > 0; --var2) {
  737.                   var10.append(var7);
  738.                   var7 = var3.next();
  739.                }
  740.  
  741.                this.mapCommittedTextToAction(new String(var10));
  742.             }
  743.          }
  744.  
  745.          int var4 = var3.getIndex();
  746.          if (var4 < var3.getEndIndex()) {
  747.             this.createComposedString(var4, var3);
  748.             SimpleAttributeSet var12 = new SimpleAttributeSet();
  749.             var12.addAttribute(StyleConstants.ComposedTextAttribute, this.composedText);
  750.  
  751.             try {
  752.                this.replaceSelection((String)null);
  753.                var5.insertString(this.caret.getDot(), this.composedTextContent, var12);
  754.                this.composedTextStart = var5.createPosition(this.caret.getDot() - this.composedTextContent.length());
  755.                this.composedTextEnd = var5.createPosition(this.caret.getDot());
  756.             } catch (BadLocationException var8) {
  757.                this.composedTextStart = this.composedTextEnd = null;
  758.                this.composedText = null;
  759.                this.composedTextContent = null;
  760.             }
  761.          }
  762.       }
  763.  
  764.    }
  765.  
  766.    private void createComposedString(int var1, AttributedCharacterIterator var2) {
  767.       Document var3 = this.getDocument();
  768.       StringBuffer var4 = new StringBuffer();
  769.  
  770.       for(char var5 = var2.setIndex(var1); var5 != '\uffff'; var5 = var2.next()) {
  771.          var4.append(var5);
  772.       }
  773.  
  774.       this.composedTextContent = new String(var4);
  775.       this.composedText = new AttributedString(var2, var1, var2.getEndIndex());
  776.    }
  777.  
  778.    private void mapCommittedTextToAction(String var1) {
  779.       Keymap var2 = this.getKeymap();
  780.       if (var2 != null) {
  781.          Action var3 = null;
  782.          if (var1.length() == 1) {
  783.             KeyStroke var4 = KeyStroke.getKeyStroke(var1.charAt(0));
  784.             var3 = var2.getAction(var4);
  785.          }
  786.  
  787.          if (var3 == null) {
  788.             var3 = var2.getDefaultAction();
  789.          }
  790.  
  791.          if (var3 != null) {
  792.             ActionEvent var5 = new ActionEvent(this, 1001, var1);
  793.             var3.actionPerformed(var5);
  794.          }
  795.       }
  796.  
  797.    }
  798.  
  799.    private void setInputMethodCaretPosition(InputMethodEvent var1) {
  800.       if (this.composedTextStart != null) {
  801.          int var2 = this.composedTextStart.getOffset();
  802.          if (!(this.caret instanceof ComposedTextCaret)) {
  803.             if (this.composedTextCaret == null) {
  804.                this.composedTextCaret = new ComposedTextCaret(this);
  805.             }
  806.  
  807.             this.originalCaret = this.caret;
  808.             this.exchangeCaret(this.originalCaret, this.composedTextCaret);
  809.          }
  810.  
  811.          TextHitInfo var3 = var1.getCaret();
  812.          if (var3 != null) {
  813.             var2 += var3.getInsertionIndex();
  814.          }
  815.  
  816.          this.caret.setDot(var2);
  817.       } else if (this.caret instanceof ComposedTextCaret) {
  818.          int var4 = this.caret.getDot();
  819.          this.exchangeCaret(this.caret, this.originalCaret);
  820.          this.caret.setDot(var4);
  821.       }
  822.  
  823.    }
  824.  
  825.    private void exchangeCaret(Caret var1, Caret var2) {
  826.       int var3 = var1.getBlinkRate();
  827.       this.setCaret(var2);
  828.       this.caret.setBlinkRate(var3);
  829.       this.caret.setVisible(((JComponent)this).hasFocus());
  830.    }
  831.  
  832.    private boolean isProcessInputMethodEventOverridden() {
  833.       Boolean var1 = (Boolean)AccessController.doPrivileged(new 4(this));
  834.       return var1;
  835.    }
  836.  
  837.    // $FF: synthetic method
  838.    static Class class$(String var0) {
  839.       try {
  840.          return Class.forName(var0);
  841.       } catch (ClassNotFoundException var2) {
  842.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  843.       }
  844.    }
  845.  
  846.    // $FF: synthetic method
  847.    static Document access$000(JTextComponent var0) {
  848.       return var0.model;
  849.    }
  850.  
  851.    // $FF: synthetic method
  852.    static JTextComponent access$102(JTextComponent var0) {
  853.       focusedComponent = var0;
  854.       return var0;
  855.    }
  856.  
  857.    // $FF: synthetic method
  858.    static AttributedString access$200(JTextComponent var0) {
  859.       return var0.composedText;
  860.    }
  861.  
  862.    // $FF: synthetic method
  863.    static Position access$300(JTextComponent var0) {
  864.       return var0.composedTextStart;
  865.    }
  866.  
  867.    // $FF: synthetic method
  868.    static Position access$400(JTextComponent var0) {
  869.       return var0.composedTextEnd;
  870.    }
  871.  
  872.    static {
  873.       try {
  874.          keymapTable = new Hashtable(17);
  875.          Keymap var0 = addKeymap("default", (Keymap)null);
  876.          var0.setDefaultAction(new DefaultEditorKit.DefaultKeyTypedAction());
  877.       } catch (Throwable var1) {
  878.          var1.printStackTrace();
  879.       }
  880.  
  881.    }
  882. }
  883.