jdk/src/share/classes/javax/swing/text/LayoutQueue.java
changeset 3441 be86cc6a4475
parent 2486 c22da29c4b59
child 5506 202f599c92aa
equal deleted inserted replaced
3440:d72e73d3fced 3441:be86cc6a4475
    23  * have any questions.
    23  * have any questions.
    24  */
    24  */
    25 package javax.swing.text;
    25 package javax.swing.text;
    26 
    26 
    27 import java.util.Vector;
    27 import java.util.Vector;
       
    28 import sun.awt.AppContext;
    28 
    29 
    29 /**
    30 /**
    30  * A queue of text layout tasks.
    31  * A queue of text layout tasks.
    31  *
    32  *
    32  * @author  Timothy Prinzing
    33  * @author  Timothy Prinzing
    33  * @see     AsyncBoxView
    34  * @see     AsyncBoxView
    34  * @since   1.3
    35  * @since   1.3
    35  */
    36  */
    36 public class LayoutQueue {
    37 public class LayoutQueue {
    37 
    38 
    38     Vector<Runnable> tasks;
    39     private static final Object DEFAULT_QUEUE = new Object();
    39     Thread worker;
       
    40 
    40 
    41     static LayoutQueue defaultQueue;
    41     private Vector<Runnable> tasks;
       
    42     private Thread worker;
    42 
    43 
    43     /**
    44     /**
    44      * Construct a layout queue.
    45      * Construct a layout queue.
    45      */
    46      */
    46     public LayoutQueue() {
    47     public LayoutQueue() {
    49 
    50 
    50     /**
    51     /**
    51      * Fetch the default layout queue.
    52      * Fetch the default layout queue.
    52      */
    53      */
    53     public static LayoutQueue getDefaultQueue() {
    54     public static LayoutQueue getDefaultQueue() {
    54         if (defaultQueue == null) {
    55         AppContext ac = AppContext.getAppContext();
    55             defaultQueue = new LayoutQueue();
    56         synchronized (DEFAULT_QUEUE) {
       
    57             LayoutQueue defaultQueue = (LayoutQueue) ac.get(DEFAULT_QUEUE);
       
    58             if (defaultQueue == null) {
       
    59                 defaultQueue = new LayoutQueue();
       
    60                 ac.put(DEFAULT_QUEUE, defaultQueue);
       
    61             }
       
    62             return defaultQueue;
    56         }
    63         }
    57         return defaultQueue;
       
    58     }
    64     }
    59 
    65 
    60     /**
    66     /**
    61      * Set the default layout queue.
    67      * Set the default layout queue.
    62      *
    68      *
    63      * @param q the new queue.
    69      * @param q the new queue.
    64      */
    70      */
    65     public static void setDefaultQueue(LayoutQueue q) {
    71     public static void setDefaultQueue(LayoutQueue q) {
    66         defaultQueue = q;
    72         synchronized (DEFAULT_QUEUE) {
       
    73             AppContext.getAppContext().put(DEFAULT_QUEUE, q);
       
    74         }
    67     }
    75     }
    68 
    76 
    69     /**
    77     /**
    70      * Add a task that is not needed immediately because
    78      * Add a task that is not needed immediately because
    71      * the results are not believed to be visible.
    79      * the results are not believed to be visible.