home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.text.html;
-
- import java.net.URL;
- import java.net.URLEncoder;
- import java.util.BitSet;
- import java.util.Enumeration;
- import javax.swing.ButtonGroup;
- import javax.swing.ButtonModel;
- import javax.swing.ComboBoxModel;
- import javax.swing.DefaultComboBoxModel;
- import javax.swing.DefaultListModel;
- import javax.swing.JToggleButton;
- import javax.swing.event.HyperlinkEvent;
- import javax.swing.event.UndoableEditEvent;
- import javax.swing.event.DocumentEvent.EventType;
- import javax.swing.text.AbstractDocument;
- import javax.swing.text.AttributeSet;
- import javax.swing.text.BadLocationException;
- import javax.swing.text.DefaultStyledDocument;
- import javax.swing.text.Document;
- import javax.swing.text.Element;
- import javax.swing.text.ElementIterator;
- import javax.swing.text.GapContent;
- import javax.swing.text.MutableAttributeSet;
- import javax.swing.text.PlainDocument;
- import javax.swing.text.SimpleAttributeSet;
- import javax.swing.text.StyleConstants;
- import javax.swing.text.html.HTML.Attribute;
- import javax.swing.text.html.HTML.Tag;
- import javax.swing.undo.CompoundEdit;
-
- public class HTMLDocument extends DefaultStyledDocument {
- private boolean frameDocument;
- private boolean preservesUnknownTags;
- private ButtonGroup radioButtonGroup;
- static final String TokenThreshold = "token threshold";
- public static final String AdditionalComments = "AdditionalComments";
- URL base;
- private static AttributeSet contentAttributeSet = new SimpleAttributeSet();
- private static char[] NEWLINE;
-
- static {
- ((MutableAttributeSet)contentAttributeSet).addAttribute(StyleConstants.NameAttribute, Tag.CONTENT);
- NEWLINE = new char[1];
- NEWLINE[0] = '\n';
- }
-
- public HTMLDocument() {
- this(new GapContent(4096), new StyleSheet());
- }
-
- public HTMLDocument(AbstractDocument.Content var1, StyleSheet var2) {
- super(var1, var2);
- this.frameDocument = false;
- this.preservesUnknownTags = true;
- }
-
- public HTMLDocument(StyleSheet var1) {
- this(new GapContent(4096), var1);
- }
-
- // $FF: synthetic method
- static char[] access$0() {
- return NEWLINE;
- }
-
- // $FF: synthetic method
- static ButtonGroup access$1(HTMLDocument var0) {
- return var0.radioButtonGroup;
- }
-
- // $FF: synthetic method
- static void access$2(HTMLDocument var0, ButtonGroup var1) {
- var0.radioButtonGroup = var1;
- }
-
- private void ampersand(StringBuffer var1) {
- if (var1.length() > 0) {
- var1.append('&');
- }
-
- }
-
- private void appendBuffer(StringBuffer var1, String var2, String var3) {
- this.ampersand(var1);
- String var4 = URLEncoder.encode(var2);
- var1.append(var4);
- var1.append('=');
- String var5 = URLEncoder.encode(var3);
- var1.append(var5);
- }
-
- protected void create(DefaultStyledDocument.ElementSpec[] var1) {
- super.create(var1);
- }
-
- protected Element createBranchElement(Element var1, AttributeSet var2) {
- return new BlockElement(this, var1, var2);
- }
-
- protected AbstractDocument.AbstractElement createDefaultRoot() {
- ((AbstractDocument)this).writeLock();
- SimpleAttributeSet var1 = new SimpleAttributeSet();
- var1.addAttribute(StyleConstants.NameAttribute, Tag.HTML);
- BlockElement var2 = new BlockElement(this, (Element)null, var1.copyAttributes());
- var1.removeAttributes(var1);
- var1.addAttribute(StyleConstants.NameAttribute, Tag.BODY);
- BlockElement var3 = new BlockElement(this, var2, var1.copyAttributes());
- var1.removeAttributes(var1);
- var1.addAttribute(StyleConstants.NameAttribute, Tag.P);
- BlockElement var4 = new BlockElement(this, var3, var1.copyAttributes());
- var1.removeAttributes(var1);
- var1.addAttribute(StyleConstants.NameAttribute, Tag.CONTENT);
- RunElement var5 = new RunElement(this, var4, var1, 0, 1);
- Element[] var6 = new Element[]{var5};
- ((AbstractDocument.BranchElement)var4).replace(0, 0, var6);
- var6[0] = var4;
- ((AbstractDocument.BranchElement)var3).replace(0, 0, var6);
- var6[0] = var3;
- ((AbstractDocument.BranchElement)var2).replace(0, 0, var6);
- ((AbstractDocument)this).writeUnlock();
- return var2;
- }
-
- protected Element createLeafElement(Element var1, AttributeSet var2, int var3, int var4) {
- return new RunElement(this, var1, var2, var3, var4);
- }
-
- private Element findFrame(String var1) {
- ElementIterator var2 = new ElementIterator(this);
- Object var3 = null;
-
- while((var6 = var2.next()) != null) {
- AttributeSet var4 = var6.getAttributes();
- if (this.matchNameAttribute(var4, Tag.FRAME)) {
- String var5 = (String)var4.getAttribute(Attribute.NAME);
- if (var5.equals(var1)) {
- break;
- }
- }
- }
-
- return var6;
- }
-
- private boolean formMatchesSubmissionRequest(AttributeSet var1, AttributeSet var2) {
- AttributeSet var3 = this.getFormAttributes(var1);
- return var3 != null ? var2.isEqual(var3) : false;
- }
-
- public URL getBase() {
- return this.base;
- }
-
- AttributeSet getFormAttributes(AttributeSet var1) {
- Enumeration var2 = var1.getAttributeNames();
-
- while(var2.hasMoreElements()) {
- Object var3 = var2.nextElement();
- if (var3 instanceof HTML.Tag) {
- HTML.Tag var4 = (HTML.Tag)var3;
- if (var4 == Tag.FORM) {
- Object var5 = var1.getAttribute(var4);
- if (var5 != null && var5 instanceof AttributeSet) {
- return (AttributeSet)var5;
- }
- }
- }
- }
-
- return null;
- }
-
- void getFormData(StringBuffer var1, Element var2) {
- AttributeSet var3 = var2.getAttributes();
- AttributeSet var4 = this.getFormAttributes(var3);
- ElementIterator var5 = new ElementIterator(((DefaultStyledDocument)this).getDefaultRootElement());
- if (var4 != null) {
- boolean var7 = false;
-
- Element var6;
- while((var6 = var5.next()) != null) {
- AttributeSet var8 = var6.getAttributes();
- if (this.formMatchesSubmissionRequest(var8, var4)) {
- var7 = true;
- String var9 = (String)var8.getAttribute(Attribute.TYPE);
- if ((var9 == null || !var9.equals("submit") || var6 == var2) && (var9 == null || !var9.equals("image"))) {
- this.loadElementDataIntoBuffer(var6, var1);
- }
- } else if (var7 && var6.isLeaf()) {
- break;
- }
- }
-
- }
- }
-
- private String getInputElementData(AttributeSet var1) {
- Object var2 = var1.getAttribute(StyleConstants.ModelAttribute);
- String var3 = (String)var1.getAttribute(Attribute.TYPE);
- String var4 = null;
- if (!var3.equals("text") && !var3.equals("password")) {
- if (!var3.equals("submit") && !var3.equals("hidden")) {
- if (var3.equals("radio") || var3.equals("checkbox")) {
- ButtonModel var7 = (ButtonModel)var2;
- if (var7.isSelected()) {
- var4 = (String)var1.getAttribute(Attribute.VALUE);
- if (var4 == null) {
- var4 = "on";
- }
- }
- }
- } else {
- var4 = (String)var1.getAttribute(Attribute.VALUE);
- if (var4 == null) {
- var4 = "";
- }
- }
- } else {
- Document var5 = (Document)var2;
-
- try {
- var4 = var5.getText(0, var5.getLength());
- } catch (BadLocationException var6) {
- var4 = null;
- }
- }
-
- return var4;
- }
-
- public Iterator getIterator(HTML.Tag var1) {
- return var1.isBlock() ? null : new LeafIterator(var1, this);
- }
-
- public boolean getPreservesUnknownTags() {
- return this.preservesUnknownTags;
- }
-
- public HTMLEditorKit.ParserCallback getReader(int var1) {
- Object var2 = ((AbstractDocument)this).getProperty("stream");
- if (var2 instanceof URL) {
- this.base = (URL)var2;
- }
-
- HTMLReader var3 = new HTMLReader(this, var1);
- return var3;
- }
-
- public HTMLEditorKit.ParserCallback getReader(int var1, int var2, int var3, HTML.Tag var4) {
- Object var5 = ((AbstractDocument)this).getProperty("stream");
- if (var5 instanceof URL) {
- this.base = (URL)var5;
- }
-
- HTMLReader var6 = new HTMLReader(this, var1, var2, var3, var4);
- return var6;
- }
-
- public StyleSheet getStyleSheet() {
- return (StyleSheet)((AbstractDocument)this).getAttributeContext();
- }
-
- private String getTextAreaData(AttributeSet var1) {
- Document var2 = (Document)var1.getAttribute(StyleConstants.ModelAttribute);
-
- try {
- return var2.getText(0, var2.getLength());
- } catch (BadLocationException var3) {
- return null;
- }
- }
-
- public int getTokenThreshold() {
- Integer var1 = (Integer)((AbstractDocument)this).getProperty("token threshold");
- return var1 != null ? var1 : Integer.MAX_VALUE;
- }
-
- protected void insert(int var1, DefaultStyledDocument.ElementSpec[] var2) throws BadLocationException {
- super.insert(var1, var2);
- }
-
- protected void insertUpdate(AbstractDocument.DefaultDocumentEvent var1, AttributeSet var2) {
- if (var2 == null) {
- var2 = contentAttributeSet;
- } else if (var2.isDefined(StyleConstants.ComposedTextAttribute)) {
- ((MutableAttributeSet)var2).addAttributes(contentAttributeSet);
- }
-
- super.insertUpdate(var1, var2);
- }
-
- boolean isFrameDocument() {
- return this.frameDocument;
- }
-
- boolean isLastTextOrPasswordField(Element var1) {
- ElementIterator var2 = new ElementIterator(((DefaultStyledDocument)this).getDefaultRootElement());
- boolean var4 = false;
- AttributeSet var5 = this.getFormAttributes(var1.getAttributes());
-
- while(true) {
- Element var3;
- if ((var3 = var2.next()) != null) {
- AttributeSet var6 = var3.getAttributes();
- if (this.formMatchesSubmissionRequest(var6, var5)) {
- if (var4 && this.matchNameAttribute(var6, Tag.INPUT)) {
- String var7 = (String)var6.getAttribute(Attribute.TYPE);
- if (var7.equals("text") || var7.equals("password")) {
- return false;
- }
- }
-
- if (var3 == var1) {
- var4 = true;
- }
- continue;
- }
-
- if (!var4 || !var3.isLeaf()) {
- continue;
- }
- }
-
- return true;
- }
- }
-
- private void loadElementDataIntoBuffer(Element var1, StringBuffer var2) {
- AttributeSet var3 = var1.getAttributes();
- String var4 = (String)var3.getAttribute(Attribute.NAME);
- if (var4 != null) {
- String var5 = null;
- HTML.Tag var6 = (HTML.Tag)var1.getAttributes().getAttribute(StyleConstants.NameAttribute);
- if (var6 == Tag.INPUT) {
- var5 = this.getInputElementData(var3);
- } else if (var6 == Tag.TEXTAREA) {
- var5 = this.getTextAreaData(var3);
- } else if (var6 == Tag.SELECT) {
- this.loadSelectData(var3, var2);
- }
-
- if (var4 != null && var5 != null) {
- this.appendBuffer(var2, var4, var5);
- }
-
- }
- }
-
- private void loadSelectData(AttributeSet var1, StringBuffer var2) {
- String var3 = (String)var1.getAttribute(Attribute.NAME);
- if (var3 != null) {
- Object var4 = var1.getAttribute(StyleConstants.ModelAttribute);
- if (var4 instanceof OptionListModel) {
- OptionListModel var5 = (OptionListModel)var4;
-
- for(int var6 = 0; var6 < ((DefaultListModel)var5).getSize(); ++var6) {
- if (var5.isSelectedIndex(var6)) {
- Option var7 = (Option)((DefaultListModel)var5).getElementAt(var6);
- this.appendBuffer(var2, var3, var7.getValue());
- }
- }
- } else if (var4 instanceof ComboBoxModel) {
- ComboBoxModel var8 = (ComboBoxModel)var4;
- Option var9 = (Option)var8.getSelectedItem();
- if (var9 != null) {
- this.appendBuffer(var2, var3, var9.getValue());
- }
- }
-
- }
- }
-
- boolean matchNameAttribute(AttributeSet var1, HTML.Tag var2) {
- Object var3 = var1.getAttribute(StyleConstants.NameAttribute);
- if (var3 instanceof HTML.Tag) {
- HTML.Tag var4 = (HTML.Tag)var3;
- if (var4 == var2) {
- return true;
- }
- }
-
- return false;
- }
-
- public void processHTMLFrameHyperlinkEvent(HTMLFrameHyperlinkEvent var1) {
- String var2 = var1.getTarget();
- Element var3 = var1.getSourceElement();
- String var4 = ((HyperlinkEvent)var1).getURL().toString();
- if (var2.equals("_self")) {
- this.updateFrame(var3, var4);
- } else if (var2.equals("_parent")) {
- this.updateFrameSet(var3.getParentElement(), var4);
- } else {
- Element var5 = this.findFrame(var2);
- if (var5 != null) {
- this.updateFrame(var5, var4);
- }
- }
-
- }
-
- void resetForm(Element var1) {
- ElementIterator var2 = new ElementIterator(((DefaultStyledDocument)this).getDefaultRootElement());
- boolean var4 = false;
- AttributeSet var5 = this.getFormAttributes(var1.getAttributes());
-
- Element var3;
- while((var3 = var2.next()) != null) {
- AttributeSet var6 = var3.getAttributes();
- if (!this.formMatchesSubmissionRequest(var6, var5)) {
- if (var4 && var3.isLeaf()) {
- break;
- }
- } else {
- Object var7 = var6.getAttribute(StyleConstants.ModelAttribute);
- if (var7 instanceof TextAreaDocument) {
- TextAreaDocument var8 = (TextAreaDocument)var7;
- var8.reset();
- } else if (var7 instanceof PlainDocument) {
- try {
- PlainDocument var14 = (PlainDocument)var7;
- ((AbstractDocument)var14).remove(0, ((AbstractDocument)var14).getLength());
- if (this.matchNameAttribute(var6, Tag.INPUT)) {
- String var9 = (String)var6.getAttribute(Attribute.VALUE);
- if (var9 != null) {
- ((AbstractDocument)var14).insertString(0, var9, (AttributeSet)null);
- }
- }
- } catch (BadLocationException var13) {
- }
- } else if (var7 instanceof OptionListModel) {
- OptionListModel var15 = (OptionListModel)var7;
- int var18 = ((DefaultListModel)var15).getSize();
-
- for(int var10 = 0; var10 < var18; ++var10) {
- var15.removeIndexInterval(var10, var10);
- }
-
- BitSet var11 = var15.getInitialSelection();
-
- for(int var12 = 0; var12 < var11.size(); ++var12) {
- if (var11.get(var12)) {
- var15.addSelectionInterval(var12, var12);
- }
- }
- } else if (var7 instanceof OptionComboBoxModel) {
- OptionComboBoxModel var16 = (OptionComboBoxModel)var7;
- Option var19 = var16.getInitialSelection();
- if (var19 != null) {
- ((DefaultComboBoxModel)var16).setSelectedItem(var19);
- }
- } else if (var7 instanceof JToggleButton.ToggleButtonModel) {
- boolean var17 = (String)var6.getAttribute(Attribute.CHECKED) != null;
- JToggleButton.ToggleButtonModel var20 = (JToggleButton.ToggleButtonModel)var7;
- var20.setSelected(var17);
- }
-
- var4 = true;
- }
- }
-
- }
-
- public void setBase(URL var1) {
- this.base = var1;
- }
-
- void setFrameDocumentState(boolean var1) {
- this.frameDocument = var1;
- }
-
- public void setPreservesUnknownTags(boolean var1) {
- this.preservesUnknownTags = var1;
- }
-
- public void setTokenThreshold(int var1) {
- ((AbstractDocument)this).putProperty("token threshold", new Integer(var1));
- }
-
- private void updateFrame(Element var1, String var2) {
- try {
- ((AbstractDocument)this).writeLock();
- this.getClass();
- AbstractDocument.DefaultDocumentEvent var5 = new AbstractDocument.DefaultDocumentEvent(this, var1.getStartOffset(), 1, EventType.CHANGE);
- AttributeSet var6 = var1.getAttributes().copyAttributes();
- MutableAttributeSet var7 = (MutableAttributeSet)var1.getAttributes();
- var5.addEdit(new DefaultStyledDocument.AttributeUndoableEdit(var1, var6, false));
- var7.removeAttribute(Attribute.SRC);
- var7.addAttribute(Attribute.SRC, var2);
- ((CompoundEdit)var5).end();
- ((AbstractDocument)this).fireChangedUpdate(var5);
- ((AbstractDocument)this).fireUndoableEditUpdate(new UndoableEditEvent(this, var5));
- } finally {
- ((AbstractDocument)this).writeUnlock();
- }
-
- }
-
- private void updateFrameSet(Element var1, String var2) {
- try {
- int var3 = var1.getStartOffset();
- int var4 = var1.getEndOffset();
- ((AbstractDocument)this).remove(var3, var4 - var3);
- SimpleAttributeSet var5 = new SimpleAttributeSet();
- var5.addAttribute(Attribute.SRC, var2);
- var5.addAttribute(StyleConstants.NameAttribute, Tag.FRAME);
- ((AbstractDocument)this).insertString(var3, " ", var5);
- } catch (BadLocationException var6) {
- }
-
- }
- }
-