home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.text.html;
-
- import java.awt.Color;
- import java.awt.event.ActionEvent;
- import javax.swing.text.AttributeSet;
- import javax.swing.text.BadLocationException;
- import javax.swing.text.Document;
- import javax.swing.text.Highlighter;
- import javax.swing.text.JTextComponent;
- import javax.swing.text.TextAction;
- import javax.swing.text.html.HTML.Attribute;
- import javax.swing.text.html.HTML.Tag;
-
- class HTMLEditorKit$NavigateLinkAction extends TextAction {
- HTMLEditorKit.NavigateLinkAction.FocusHighlightPainter focusPainter = new HTMLEditorKit.NavigateLinkAction.FocusHighlightPainter(this, (Color)null);
- Object selectionTag;
- boolean focusBack = false;
-
- public HTMLEditorKit$NavigateLinkAction(String var1) {
- super(var1);
- if ("previous-link-action".equals(var1)) {
- this.focusBack = true;
- }
-
- }
-
- public void actionPerformed(ActionEvent var1) {
- JTextComponent var2 = ((TextAction)this).getTextComponent(var1);
- if (!var2.isEditable()) {
- if (var2 != null) {
- Document var3 = var2.getDocument();
- if (var3 != null) {
- HTMLDocument var4 = (HTMLDocument)var3;
- HTMLDocument.Iterator var5 = var4.getIterator(Tag.A);
- int var6 = var2.getCaretPosition();
- int var7 = 0;
- int var8 = 0;
-
- while(var5.isValid()) {
- AttributeSet var9 = var5.getAttributes();
- if (var9 != null) {
- String var10 = (String)var9.getAttribute(Attribute.HREF);
- if (var10 != null) {
- int var11 = var5.getStartOffset();
- if (this.focusBack) {
- if (var11 >= var6) {
- var2.setCaretPosition(var7);
- this.moveCaretPosition(var2, var7, var8);
- return;
- }
- } else if (var11 > var6) {
- var2.setCaretPosition(var11);
- this.moveCaretPosition(var2, var11, var5.getEndOffset());
- return;
- }
- }
- }
-
- var7 = var5.getStartOffset();
- var8 = var5.getEndOffset();
- var5.next();
- }
- }
- }
-
- }
- }
-
- private void moveCaretPosition(JTextComponent var1, int var2, int var3) {
- Highlighter var4 = var1.getHighlighter();
- if (var4 != null) {
- int var5 = Math.min(var3, var2);
- int var6 = Math.max(var3, var2);
-
- try {
- if (this.selectionTag != null) {
- var4.changeHighlight(this.selectionTag, var5, var6);
- } else {
- HTMLEditorKit.NavigateLinkAction.FocusHighlightPainter var7 = this.focusPainter;
- this.selectionTag = var4.addHighlight(var5, var6, var7);
- }
- } catch (BadLocationException var8) {
- }
- }
-
- }
- }
-