Import of Ekit 0.9h
[old-projects.git] / ekit / com / hexidec / ekit / component / ExtendedHTMLDocument.java
index 2c016db..71f44f1 100644 (file)
-package com.hexidec.ekit.component;\r
-\r
-import javax.swing.text.html.HTMLDocument;\r
-import javax.swing.text.Element;\r
-import javax.swing.text.AttributeSet;\r
-import javax.swing.text.MutableAttributeSet;\r
-import javax.swing.text.AbstractDocument;\r
-import javax.swing.text.BadLocationException;\r
-import javax.swing.undo.UndoableEdit;\r
-import javax.swing.text.html.StyleSheet;\r
-import javax.swing.text.html.HTML;\r
-import javax.swing.text.AbstractDocument.BranchElement;\r
-import java.util.Enumeration;\r
-import javax.swing.event.DocumentEvent;\r
-import javax.swing.event.UndoableEditEvent;\r
-\r
-public class ExtendedHTMLDocument\r
-    extends HTMLDocument {\r
-\r
-  public ExtendedHTMLDocument() {\r
-\r
-  }\r
-\r
-  public ExtendedHTMLDocument(AbstractDocument.Content c, StyleSheet styles) {\r
-    super(c, styles);\r
-  }\r
-\r
-  public ExtendedHTMLDocument(StyleSheet styles) {\r
-    super(styles);\r
-  }\r
-\r
-//-------------------------------------------------------------------------------------\r
-\r
-\r
-/**\r
- *\r
- * Überschreibt die Attribute des Elements.\r
- *\r
- * @param e Element bei dem die Attribute geändert werden sollen\r
- * @param a AttributeSet mit den neuen Attributen\r
- * @param tag Angabe was für ein Tag das Element ist\r
- */\r
-  public void replaceAttributes(Element e, AttributeSet a, HTML.Tag tag) {\r
-    if( (e != null) && (a != null)) {\r
-      try {\r
-       writeLock();\r
-       int start = e.getStartOffset();\r
-       DefaultDocumentEvent changes = new DefaultDocumentEvent(start,\r
-           e.getEndOffset() - start, DocumentEvent.EventType.CHANGE);\r
-       AttributeSet sCopy = a.copyAttributes();\r
-       changes.addEdit(new AttributeUndoableEdit(e, sCopy, false));\r
-       MutableAttributeSet attr = (MutableAttributeSet) e.getAttributes();\r
-       Enumeration aNames = attr.getAttributeNames();\r
-       Object value;\r
-       Object aName;\r
-       while (aNames.hasMoreElements()) {\r
-         aName = aNames.nextElement();\r
-         value = attr.getAttribute(aName);\r
-         if(value != null && !value.toString().equalsIgnoreCase(tag.toString())) {\r
-           attr.removeAttribute(aName);\r
-         }\r
-       }\r
-       attr.addAttributes(a);\r
-       changes.end();\r
-       fireChangedUpdate(changes);\r
-       fireUndoableEditUpdate(new UndoableEditEvent(this, changes));\r
-      }\r
-      finally {\r
-       writeUnlock();\r
-      }\r
-    }\r
-  }\r
-\r
-\r
-  public void removeElements(Element e, int index, int count) throws\r
-      BadLocationException {\r
-    writeLock();\r
-    int start = e.getElement(index).getStartOffset();\r
-    int end = e.getElement(index + count - 1).getEndOffset();\r
-    try {\r
-      Element[] removed = new Element[count];\r
-      Element[] added = new Element[0];\r
-      for (int counter = 0; counter < count; counter++) {\r
-       removed[counter] = e.getElement(counter + index);\r
-      }\r
-      DefaultDocumentEvent dde = new DefaultDocumentEvent(\r
-         start, end - start, DocumentEvent.EventType.REMOVE);\r
-      ( (AbstractDocument.BranchElement) e).replace(index, removed.length,\r
-         added);\r
-      dde.addEdit(new ElementEdit(e, index, removed, added));\r
-      UndoableEdit u = getContent().remove(start, end - start);\r
-      if(u != null) {\r
-       dde.addEdit(u);\r
-      }\r
-      postRemoveUpdate(dde);\r
-      dde.end();\r
-      fireRemoveUpdate(dde);\r
-      if(u != null) {\r
-       fireUndoableEditUpdate(new UndoableEditEvent(this, dde));\r
-      }\r
-    }\r
-    finally {\r
-      writeUnlock();\r
-    }\r
-  }\r
+/*
+GNU Lesser General Public License
+
+PropertiesDialog
+Copyright (C) 2003 Frits Jalvingh, Jerry Pommer & Howard Kistler
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+
+package com.hexidec.ekit.component;
+
+import java.util.Enumeration;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.UndoableEditEvent;
+import javax.swing.text.AbstractDocument;
+import javax.swing.text.AbstractDocument.BranchElement;
+import javax.swing.text.AttributeSet;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.Element;
+import javax.swing.text.MutableAttributeSet;
+import javax.swing.text.html.HTML;
+import javax.swing.text.html.HTMLDocument;
+import javax.swing.text.html.StyleSheet;
+import javax.swing.undo.UndoableEdit;
+
+public class ExtendedHTMLDocument extends HTMLDocument
+{
+
+  public ExtendedHTMLDocument(AbstractDocument.Content c, StyleSheet styles)
+  {
+    super(c, styles);
+  }
+
+  public ExtendedHTMLDocument(StyleSheet styles)
+  {
+    super(styles);
+  }
+
+  public ExtendedHTMLDocument() { ; }
+
+/** Überschreibt die Attribute des Elements.
+  *
+  * @param e Element bei dem die Attribute geändert werden sollen
+  * @param a AttributeSet mit den neuen Attributen
+  * @param tag Angabe was für ein Tag das Element ist
+  */
+       public void replaceAttributes(Element e, AttributeSet a, HTML.Tag tag)
+       {
+               if((e != null) && (a != null))
+               {
+                       try
+                       {
+                               writeLock();
+                               int start = e.getStartOffset();
+                               DefaultDocumentEvent changes = new DefaultDocumentEvent(start, e.getEndOffset() - start, DocumentEvent.EventType.CHANGE);
+                               AttributeSet sCopy = a.copyAttributes();
+                               changes.addEdit(new AttributeUndoableEdit(e, sCopy, false));
+                               MutableAttributeSet attr = (MutableAttributeSet) e.getAttributes();
+                               Enumeration aNames = attr.getAttributeNames();
+                               Object value;
+                               Object aName;
+                               while (aNames.hasMoreElements())
+                               {
+                                       aName = aNames.nextElement();
+                                       value = attr.getAttribute(aName);
+                                       if(value != null && !value.toString().equalsIgnoreCase(tag.toString()))
+                                       {
+                                               attr.removeAttribute(aName);
+                                       }
+                               }
+                               attr.addAttributes(a);
+                               changes.end();
+                               fireChangedUpdate(changes);
+                               fireUndoableEditUpdate(new UndoableEditEvent(this, changes));
+                       }
+                       finally
+                       {
+                               writeUnlock();
+                       }
+               }
+       }
+
+       public void removeElements(Element e, int index, int count)
+       throws BadLocationException
+       {
+               writeLock();
+               int start = e.getElement(index).getStartOffset();
+               int end = e.getElement(index + count - 1).getEndOffset();
+               try
+               {
+                       Element[] removed = new Element[count];
+                       Element[] added = new Element[0];
+                       for (int counter = 0; counter < count; counter++)
+                       {
+                               removed[counter] = e.getElement(counter + index);
+                       }
+                       DefaultDocumentEvent dde = new DefaultDocumentEvent(start, end - start, DocumentEvent.EventType.REMOVE);
+                       ((AbstractDocument.BranchElement)e).replace(index, removed.length, added);
+                       dde.addEdit(new ElementEdit(e, index, removed, added));
+                       UndoableEdit u = getContent().remove(start, end - start);
+                       if(u != null)
+                       {
+                               dde.addEdit(u);
+                       }
+                       postRemoveUpdate(dde);
+                       dde.end();
+                       fireRemoveUpdate(dde);
+                       if(u != null)
+                       {
+                               fireUndoableEditUpdate(new UndoableEditEvent(this, dde));
+                       }
+               }
+               finally
+               {
+                       writeUnlock();
+               }
+       }
 }
\ No newline at end of file