annotate src/name/blackcap/clipman/PasteboardQueue.kt @ 67:d35b8478e089 default tip

Remove redundant event dispatch thread task submissions.
author David Barts <n5jrn@me.com>
date Sun, 12 Jan 2025 16:26:11 -0800
parents 19d9da731c43
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
1 /*
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
2 * The queue of pasteboard items we manage. New stuff gets added to the
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
3 * tail, and old stuff truncated off the head.
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
4 */
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
5 package name.blackcap.clipman
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
6
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
7 import java.awt.Container
1
fb224c3aebdf Got it auto-scrolling to the bottom.
David Barts <n5jrn@me.com>
parents: 0
diff changeset
8 import java.awt.Rectangle
0
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
9 import java.util.Collections
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
10 import java.util.LinkedList
1
fb224c3aebdf Got it auto-scrolling to the bottom.
David Barts <n5jrn@me.com>
parents: 0
diff changeset
11 import java.util.logging.Level
fb224c3aebdf Got it auto-scrolling to the bottom.
David Barts <n5jrn@me.com>
parents: 0
diff changeset
12 import java.util.logging.Logger
0
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
13 import javax.swing.*
27
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
14 import javax.swing.text.DefaultHighlighter
0
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
15
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
16 /**
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
17 * A queue that tracks the data we display and the widgets used to
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
18 * display them. We never explicitly remove stuff from the queue,
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
19 * though items will get silently discarded to prevent the queue from
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
20 * exceeding the specified maximum size.
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
21 */
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
22 class PasteboardQueue(val parent: Container, maxSize: Int) {
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
23 private val queue = LinkedList<QueueItem>()
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
24 private var _maxSize = maxSize
16
88703ca72fc3 Make an efficiency improvement: cache the scrollPane.
David Barts <n5jrn@me.com>
parents: 5
diff changeset
25 private var scrollPane: JScrollPane? = null
88703ca72fc3 Make an efficiency improvement: cache the scrollPane.
David Barts <n5jrn@me.com>
parents: 5
diff changeset
26 init {
88703ca72fc3 Make an efficiency improvement: cache the scrollPane.
David Barts <n5jrn@me.com>
parents: 5
diff changeset
27 var sp: Container? = parent
88703ca72fc3 Make an efficiency improvement: cache the scrollPane.
David Barts <n5jrn@me.com>
parents: 5
diff changeset
28 while (sp != null) {
88703ca72fc3 Make an efficiency improvement: cache the scrollPane.
David Barts <n5jrn@me.com>
parents: 5
diff changeset
29 if (sp is JScrollPane) {
88703ca72fc3 Make an efficiency improvement: cache the scrollPane.
David Barts <n5jrn@me.com>
parents: 5
diff changeset
30 scrollPane = sp
88703ca72fc3 Make an efficiency improvement: cache the scrollPane.
David Barts <n5jrn@me.com>
parents: 5
diff changeset
31 break
88703ca72fc3 Make an efficiency improvement: cache the scrollPane.
David Barts <n5jrn@me.com>
parents: 5
diff changeset
32 }
88703ca72fc3 Make an efficiency improvement: cache the scrollPane.
David Barts <n5jrn@me.com>
parents: 5
diff changeset
33 sp = sp.parent
88703ca72fc3 Make an efficiency improvement: cache the scrollPane.
David Barts <n5jrn@me.com>
parents: 5
diff changeset
34 }
88703ca72fc3 Make an efficiency improvement: cache the scrollPane.
David Barts <n5jrn@me.com>
parents: 5
diff changeset
35 }
0
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
36
29
c4f53bc01732 Fix searching (and main display).
David Barts <n5jrn@me.com>
parents: 27
diff changeset
37 data class Offset(val inQueue: Int, val inItem: Int)
21
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
38 enum class Direction { FORWARDS, BACKWARDS }
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
39
0
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
40 /**
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
41 * The maximum allowed size of this queue. Attempts to make the queue
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
42 * larger than this size, or specifying a size smaller than the current
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
43 * size, will result in the oldest item(s) being discarded. A size less
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
44 * than or equal to zero means an unlimited size.
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
45 */
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
46 var maxSize: Int
41
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents: 40
diff changeset
47 get() { return _maxSize }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents: 40
diff changeset
48 @Synchronized set(value) {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents: 40
diff changeset
49 _maxSize = value
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents: 40
diff changeset
50 truncate()
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents: 40
diff changeset
51 }
0
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
52
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
53 /**
1
fb224c3aebdf Got it auto-scrolling to the bottom.
David Barts <n5jrn@me.com>
parents: 0
diff changeset
54 * Add a QueueItem to the end of the queue.
fb224c3aebdf Got it auto-scrolling to the bottom.
David Barts <n5jrn@me.com>
parents: 0
diff changeset
55 * @param item QueueItem to add
0
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
56 */
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
57 @Synchronized fun add(item: QueueItem) {
67
d35b8478e089 Remove redundant event dispatch thread task submissions.
David Barts <n5jrn@me.com>
parents: 47
diff changeset
58 parent.add(item.view.contents)
d35b8478e089 Remove redundant event dispatch thread task submissions.
David Barts <n5jrn@me.com>
parents: 47
diff changeset
59 validate()
0
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
60 queue.addLast(item)
5
d832c7b2bfd0 Clean out some deadwood.
David Barts <n5jrn@me.com>
parents: 2
diff changeset
61 truncate()
0
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
62 }
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
63
21
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
64 /**
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
65 * Find and highlight the next occurrence of the specified string
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
66 * @param string to search
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
67 * @param whether to search backwards (default forwards)
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
68 * @param case-folding flag (default true)
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
69 * @param starting point (0, 0) for forwards, (m, n) for backwards
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
70 * @return position where start of string was found, or null
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
71 */
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
72 fun find(needle: String, direction: Direction = Direction.FORWARDS,
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
73 foldCase: Boolean = true, origin: Offset? = null): Offset?
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
74 {
27
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
75 /* clean up any old highlights */
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
76 queue.forEach {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
77 val hiliter = it.view.searchable.highlighter
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
78 hiliter.highlights.forEach {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
79 hiliter.removeHighlight(it)
21
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
80 }
27
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
81 }
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
82
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
83 /* get starting item index */
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
84 val qMax = queue.size
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
85 var norigin = origin ?: when (direction) {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
86 Direction.FORWARDS -> Offset(0, 0)
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
87 Direction.BACKWARDS -> Offset(qMax - 1, -1)
21
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
88 }
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
89
27
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
90 /* loop initialization */
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
91 val (start, incr, search) = if (direction == Direction.FORWARDS) {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
92 Triple( 0, 1, { n: String, h: String, o: Int -> h.indexOf(n, o, foldCase) })
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
93 } else {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
94 Triple(-1, -1, { n: String, h: String, o: Int -> h.lastIndexOf(n, o, foldCase) })
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
95 }
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
96 val painter = DefaultHighlighter.DefaultHighlightPainter(null);
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
97 var pos = -1
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
98
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
99 /* try and find it */
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
100 while (norigin.inQueue >= 0 && norigin.inQueue < qMax) {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
101 val si = queue.get(norigin.inQueue).view.searchable
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
102 val doc = si.document
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
103 val text = doc.getText(0, doc.length)
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
104 pos = if (norigin.inItem >= 0) norigin.inItem else text.length - 1
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
105 pos = search(needle, text, pos)
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
106 if (pos >= 0) {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
107 si.highlighter.addHighlight(pos, pos+needle.length, painter)
40
c803a2c89ea0 Make the JScrollPane scroll properly to highlighted text.
David Barts <n5jrn@me.com>
parents: 31
diff changeset
108 val r = si.modelToView(pos).apply {
c803a2c89ea0 Make the JScrollPane scroll properly to highlighted text.
David Barts <n5jrn@me.com>
parents: 31
diff changeset
109 add(si.modelToView(pos + needle.length - 1))
c803a2c89ea0 Make the JScrollPane scroll properly to highlighted text.
David Barts <n5jrn@me.com>
parents: 31
diff changeset
110 }
c803a2c89ea0 Make the JScrollPane scroll properly to highlighted text.
David Barts <n5jrn@me.com>
parents: 31
diff changeset
111 si.scrollRectToVisible(r)
27
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
112 break
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
113 }
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
114 norigin = Offset(norigin.inQueue + incr, start)
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
115 }
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
116 return if (pos >= 0) Offset(norigin.inQueue, pos) else null
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
117 }
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
118
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
119 /**
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
120 * Ensure none of the searchables in this queue are selected.
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
121 */
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
122 fun deselectAll() {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
123 queue.forEach {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
124 val s = it.view.searchable as? ClipText
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
125 if (s != null && s.selected) {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
126 s.selected = false
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
127 s.validate()
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
128 }
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
129 }
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
130 }
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
131
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
132 /**
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
133 * Return the selected item, or null if nothing has been selected
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
134 */
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
135 fun getSelected(): QueueItem? {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
136 queue.forEach {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
137 if ((it.view.searchable as? ClipText)?.selected ?: false) {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
138 return it
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
139 }
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
140 }
21
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
141 return null
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
142 }
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
143
5
d832c7b2bfd0 Clean out some deadwood.
David Barts <n5jrn@me.com>
parents: 2
diff changeset
144 private fun truncate() {
0
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
145 if (_maxSize > 0) {
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
146 var size = queue.size
5
d832c7b2bfd0 Clean out some deadwood.
David Barts <n5jrn@me.com>
parents: 2
diff changeset
147 var dirty = false
0
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
148 while (size > _maxSize) {
27
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
149 var extra = queue.removeFirst().view
67
d35b8478e089 Remove redundant event dispatch thread task submissions.
David Barts <n5jrn@me.com>
parents: 47
diff changeset
150 if (extra.searchable.selected) {
d35b8478e089 Remove redundant event dispatch thread task submissions.
David Barts <n5jrn@me.com>
parents: 47
diff changeset
151 Application.anyRequired.disable()
d35b8478e089 Remove redundant event dispatch thread task submissions.
David Barts <n5jrn@me.com>
parents: 47
diff changeset
152 Application.styledRequired.disable()
27
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
153 }
67
d35b8478e089 Remove redundant event dispatch thread task submissions.
David Barts <n5jrn@me.com>
parents: 47
diff changeset
154 parent.remove(extra.contents)
0
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
155 dirty = true
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
156 size -= 1
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
157 }
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
158 if (dirty) {
67
d35b8478e089 Remove redundant event dispatch thread task submissions.
David Barts <n5jrn@me.com>
parents: 47
diff changeset
159 validate()
46
88066346f129 Fix display glitch when resizing queue truncates it.
David Barts <n5jrn@me.com>
parents: 41
diff changeset
160 }
88066346f129 Fix display glitch when resizing queue truncates it.
David Barts <n5jrn@me.com>
parents: 41
diff changeset
161 }
88066346f129 Fix display glitch when resizing queue truncates it.
David Barts <n5jrn@me.com>
parents: 41
diff changeset
162 }
88066346f129 Fix display glitch when resizing queue truncates it.
David Barts <n5jrn@me.com>
parents: 41
diff changeset
163
88066346f129 Fix display glitch when resizing queue truncates it.
David Barts <n5jrn@me.com>
parents: 41
diff changeset
164 private fun validate()
88066346f129 Fix display glitch when resizing queue truncates it.
David Barts <n5jrn@me.com>
parents: 41
diff changeset
165 {
88066346f129 Fix display glitch when resizing queue truncates it.
David Barts <n5jrn@me.com>
parents: 41
diff changeset
166 if (scrollPane == null) {
88066346f129 Fix display glitch when resizing queue truncates it.
David Barts <n5jrn@me.com>
parents: 41
diff changeset
167 parent.validate()
88066346f129 Fix display glitch when resizing queue truncates it.
David Barts <n5jrn@me.com>
parents: 41
diff changeset
168 } else {
88066346f129 Fix display glitch when resizing queue truncates it.
David Barts <n5jrn@me.com>
parents: 41
diff changeset
169 scrollPane!!.run {
88066346f129 Fix display glitch when resizing queue truncates it.
David Barts <n5jrn@me.com>
parents: 41
diff changeset
170 validate()
88066346f129 Fix display glitch when resizing queue truncates it.
David Barts <n5jrn@me.com>
parents: 41
diff changeset
171 verticalScrollBar.run { value = maximum + 1 }
0
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
172 }
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
173 }
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
174 }
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
175 }
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
176
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
177 /**
27
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
178 * An item in the above queue. Linking model to view here sorta violates
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
179 * MVC principles, but rules are sometimes best broken. Doing it this way
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
180 * makes it impossible for the view queue to fail to follow the data
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
181 * queue.
0
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
182 */
27
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
183 data class QueueItem(val contents: PasteboardItem, val view: PasteboardItemView)