-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