argutia.gui.batchStyledDocument
Class BatchStyledDocument

java.lang.Object
  extended by javax.swing.text.AbstractDocument
      extended by javax.swing.text.DefaultStyledDocument
          extended by argutia.gui.batchStyledDocument.BatchStyledDocument
All Implemented Interfaces:
Serializable, Document, StyledDocument
Direct Known Subclasses:
DocumentColore
public class BatchStyledDocument
extends DefaultStyledDocument

Un BatchStyledDocument permet l'insertion groupée de textes avec leurs propres attributs de style. Cela permet une amélioration significative du temps de mise à jour des DefaultStyledDocument en évitant les appels répétés à la méthode AbstractDocument.insertString(int, String, AttributeSet), lente à cause du rafraîchissement du composant sous-jacent qu'elle implique (généralement un JTextPane).

Les insertions sont mémorisées dans un BatchedContent associé à l'instance et accessible par un appel à #getBatchedContent(). L'insertion de textes stylisés dans un BatchStyledDocument peut s'effectuer de deux façons :

Le document est mis à jour via #processBatchUpdates(int), ou dès qu'un appel à insertString(int, String, AttributeSet) est effectué, ce qui dans un cas comme dans l'autre réinitialise au passage l'instance de BatchedContent associée.

Author:
Geoffroy AUBRY, inspiré de JavaTechniques: Batch Text Inserts with JTextPane
See Also:
BatchedContent, AffichableAvecStyle, Serialized Form
Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.text.DefaultStyledDocument
DefaultStyledDocument.AttributeUndoableEdit, DefaultStyledDocument.ElementBuffer, DefaultStyledDocument.ElementSpec, DefaultStyledDocument.SectionElement
 
Nested classes/interfaces inherited from class javax.swing.text.AbstractDocument
AbstractDocument.AbstractElement, AbstractDocument.AttributeContext, AbstractDocument.BranchElement, AbstractDocument.Content, AbstractDocument.DefaultDocumentEvent, AbstractDocument.ElementEdit, AbstractDocument.LeafElement
 
Field Summary
private List<DefaultStyledDocument.ElementSpec> batchedContent
          Liste des textes stylisés, sous forme d'DefaultStyledDocument.ElementSpec, stockés avant une insertion massive via processBatchUpdates().
private DefaultStyledDocument.ElementSpec endParagraph
           
 DefaultStyledDocument.ElementSpec eol
          Élément « fin de ligne ».
private static char[] EOL_ARRAY
          Tag de fin de ligne utilisé lors de la création de #EOL.
private static long serialVersionUID
          The serial version of this class.
private DefaultStyledDocument.ElementSpec startParagraph
           
 
Fields inherited from class javax.swing.text.DefaultStyledDocument
buffer, BUFFER_SIZE_DEFAULT
 
Fields inherited from class javax.swing.text.AbstractDocument
BAD_LOCATION, BidiElementName, ContentElementName, ElementNameAttribute, listenerList, ParagraphElementName, SectionElementName
 
Fields inherited from interface javax.swing.text.Document
StreamDescriptionProperty, TitleProperty
 
Constructor Summary
BatchStyledDocument(StyleContext styles)
          Construit un DefaultStyledDocument (celui par défaut) et lui associe un BatchedContent.
 
Method Summary
 BatchStyledDocument appendBatchLineFeed()
          Ajoute un retour à la ligne dans le BatchedContent.
 BatchStyledDocument appendBatchString(String s, AttributeSet a)
          Ajoute du texte avec le style spécifié dans le BatchedContent.
 BatchStyledDocument appendBatchStringln(String s, AttributeSet a)
          Ajoute du texte avec le style spécifié dans le BatchedContent, suivi d'un retour à la ligne.
private DefaultStyledDocument.ElementSpec[] batchedContentToArray()
          Retourne la liste des textes mis en forme contenus dans le BatchedContent sous la forme d'un tableau de ElementSpec.
 void clear()
           
private void delestage()
           
 String getText()
           
 void insertString(int offset, String s, AttributeSet style)
          Insère le texte spécifié dans le document.
 void processBatchUpdates()
          Met à jour le document en traitant toutes les insertions de texte stockées dans le BatchedContent associé.
private void processBatchUpdates(DefaultStyledDocument.ElementSpec[] inserts)
           
 
Methods inherited from class javax.swing.text.DefaultStyledDocument
addDocumentListener, addStyle, create, createDefaultRoot, getBackground, getCharacterElement, getDefaultRootElement, getFont, getForeground, getLogicalStyle, getParagraphElement, getStyle, getStyleNames, insert, insertUpdate, removeDocumentListener, removeStyle, removeUpdate, setCharacterAttributes, setLogicalStyle, setParagraphAttributes, styleChanged
 
Methods inherited from class javax.swing.text.AbstractDocument
addUndoableEditListener, createBranchElement, createLeafElement, createPosition, dump, fireChangedUpdate, fireInsertUpdate, fireRemoveUpdate, fireUndoableEditUpdate, getAsynchronousLoadPriority, getAttributeContext, getBidiRootElement, getContent, getCurrentWriter, getDocumentFilter, getDocumentListeners, getDocumentProperties, getEndPosition, getLength, getListeners, getProperty, getRootElements, getStartPosition, getText, getText, getUndoableEditListeners, postRemoveUpdate, putProperty, readLock, readUnlock, remove, removeUndoableEditListener, render, replace, setAsynchronousLoadPriority, setDocumentFilter, setDocumentProperties, writeLock, writeUnlock
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface javax.swing.text.Document
addUndoableEditListener, createPosition, getEndPosition, getLength, getProperty, getRootElements, getStartPosition, getText, getText, putProperty, remove, removeUndoableEditListener, render
 
Field Detail

serialVersionUID

private static final long serialVersionUID
The serial version of this class.

See Also:
Serializable, Constant Field Values
Constant Field Value:
-8597402980707337103L

EOL_ARRAY

private static final char[] EOL_ARRAY
Tag de fin de ligne utilisé lors de la création de #EOL.

eol

public final DefaultStyledDocument.ElementSpec eol
Élément « fin de ligne ».

See Also:
#appendLineFeed, EOL_ARRAY

endParagraph

private final DefaultStyledDocument.ElementSpec endParagraph

startParagraph

private final DefaultStyledDocument.ElementSpec startParagraph

batchedContent

private final List<DefaultStyledDocument.ElementSpec> batchedContent
Liste des textes stylisés, sous forme d'DefaultStyledDocument.ElementSpec, stockés avant une insertion massive via processBatchUpdates(). L'ajout dans la liste se fait par l'intermédiaire des méthodes appendBatchXXX de la classe.

Constructor Detail

BatchStyledDocument

public BatchStyledDocument(StyleContext styles)
Construit un DefaultStyledDocument (celui par défaut) et lui associe un BatchedContent. Construit un BatchedContent prêt à accumuler du texte mis en forme pour une insertion massive.

See Also:
batchedContent
Method Detail

processBatchUpdates

public void processBatchUpdates()
Met à jour le document en traitant toutes les insertions de texte stockées dans le BatchedContent associé. Les textes sont insérés à la fin du document. Réinitialise ensuite le BatchedContent associé.

processBatchUpdates

private void processBatchUpdates(DefaultStyledDocument.ElementSpec[] inserts)

insertString

public void insertString(int offset,
                         String s,
                         AttributeSet style)
Insère le texte spécifié dans le document. Le texte est inséré dans le document à partir de l'offset spécifié et avec les attributs de style fournis.

Specified by:
insertString in interface Document
Overrides:
insertString in class AbstractDocument
Implementation Notes:
try {
  BatchStyledDocument.super.insertString(offset, s, style);
} catch (BadLocationException e) {
  e.printStackTrace();
}
Warnings:
Un appel à processBatchUpdates() est effectué préalablement pour mettre à jour le document en traitant toutes les insertions de texte stockées dans le BatchedContent associé.
Parameters:
offset - position à partir de laquelle doit être inséré le texte spécifié.
s - texte à insérer.
style - attributs de style du texte à insérer.

clear

public void clear()

getText

public String getText()

appendBatchString

public BatchStyledDocument appendBatchString(String s,
                                             AttributeSet a)
Ajoute du texte avec le style spécifié dans le BatchedContent.

Parameters:
s - texte à ajouter.
a - ensemble d'attributs de style à appliquer au texte spécifié.
Returns:
le BatchedContent courant.

appendBatchStringln

public BatchStyledDocument appendBatchStringln(String s,
                                               AttributeSet a)
Ajoute du texte avec le style spécifié dans le BatchedContent, suivi d'un retour à la ligne.

See Also:
#appendString(String, AttributeSet), #appendLineFeed()
Implementation Notes:
appendBatchString(s, a);
appendBatchLineFeed();
delestage();
return this;
Parameters:
s - texte à ajouter.
a - ensemble d'attributs de style à appliquer au texte spécifié.
Returns:
le BatchedContent courant.

appendBatchLineFeed

public BatchStyledDocument appendBatchLineFeed()
Ajoute un retour à la ligne dans le BatchedContent.

See Also:
#EOL
Returns:
le BatchedContent courant.

delestage

private void delestage()

batchedContentToArray

private DefaultStyledDocument.ElementSpec[] batchedContentToArray()
Retourne la liste des textes mis en forme contenus dans le BatchedContent sous la forme d'un tableau de ElementSpec.

Implementation Notes:
Utilisé par BatchStyledDocument#processBatchUpdates(int).
Returns:
la liste des textes mis en forme contenus dans le BatchedContent sous la forme d'un tableau de ElementSpec.
Argutia JavaDoc
23 décembre 2007