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 defaultQueue the new queue. |
64 */ |
70 */ |
65 public static void setDefaultQueue(LayoutQueue q) { |
71 public static void setDefaultQueue(LayoutQueue defaultQueue) { |
66 defaultQueue = q; |
72 synchronized (DEFAULT_QUEUE) { |
|
73 AppContext ac = AppContext.getAppContext(); |
|
74 if (defaultQueue == null) { |
|
75 ac.remove(DEFAULT_QUEUE); |
|
76 } else { |
|
77 ac.put(DEFAULT_QUEUE, defaultQueue); |
|
78 } |
|
79 } |
67 } |
80 } |
68 |
81 |
69 /** |
82 /** |
70 * Add a task that is not needed immediately because |
83 * Add a task that is not needed immediately because |
71 * the results are not believed to be visible. |
84 * the results are not believed to be visible. |