annotate src/name/blackcap/clipman/PasteboardQueue.kt @ 31:0c6c18a733b7

Compiles, new menu still a mess.
author David Barts <n5jrn@me.com>
date Thu, 30 Jan 2020 16:01:51 -0800
parents 0e88c6bed11e
children c803a2c89ea0
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
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
47 get() { return _maxSize }
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
48 @Synchronized set(value) {
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
49 _maxSize = value
5
d832c7b2bfd0 Clean out some deadwood.
David Barts <n5jrn@me.com>
parents: 2
diff changeset
50 truncate()
0
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
51 }
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) {
1
fb224c3aebdf Got it auto-scrolling to the bottom.
David Barts <n5jrn@me.com>
parents: 0
diff changeset
58 inSwingThread {
27
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
59 parent.add(item.view.contents)
16
88703ca72fc3 Make an efficiency improvement: cache the scrollPane.
David Barts <n5jrn@me.com>
parents: 5
diff changeset
60 scrollPane?.run {
2
6fb94eae32fa Maybe this will auto-scroll reliably?
David Barts <n5jrn@me.com>
parents: 1
diff changeset
61 validate()
6fb94eae32fa Maybe this will auto-scroll reliably?
David Barts <n5jrn@me.com>
parents: 1
diff changeset
62 verticalScrollBar.run { value = maximum + 1 }
1
fb224c3aebdf Got it auto-scrolling to the bottom.
David Barts <n5jrn@me.com>
parents: 0
diff changeset
63 }
fb224c3aebdf Got it auto-scrolling to the bottom.
David Barts <n5jrn@me.com>
parents: 0
diff changeset
64 }
0
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
65 queue.addLast(item)
5
d832c7b2bfd0 Clean out some deadwood.
David Barts <n5jrn@me.com>
parents: 2
diff changeset
66 truncate()
0
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
67 }
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
68
21
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
69 /**
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
70 * Find and highlight the next occurrence of the specified string
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
71 * @param string to search
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
72 * @param whether to search backwards (default forwards)
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
73 * @param case-folding flag (default true)
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
74 * @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
75 * @return position where start of string was found, or null
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
76 */
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
77 fun find(needle: String, direction: Direction = Direction.FORWARDS,
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
78 foldCase: Boolean = true, origin: Offset? = null): Offset?
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
79 {
27
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
80 /* clean up any old highlights */
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
81 queue.forEach {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
82 val hiliter = it.view.searchable.highlighter
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
83 hiliter.highlights.forEach {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
84 hiliter.removeHighlight(it)
21
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
85 }
27
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
86 }
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
87
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
88 /* get starting item index */
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
89 val qMax = queue.size
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
90 var norigin = origin ?: when (direction) {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
91 Direction.FORWARDS -> Offset(0, 0)
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
92 Direction.BACKWARDS -> Offset(qMax - 1, -1)
21
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
93 }
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
94
27
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
95 /* loop initialization */
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
96 val (start, incr, search) = if (direction == Direction.FORWARDS) {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
97 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
98 } else {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
99 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
100 }
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
101 val painter = DefaultHighlighter.DefaultHighlightPainter(null);
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
102 var pos = -1
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
103
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
104 /* try and find it */
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
105 while (norigin.inQueue >= 0 && norigin.inQueue < qMax) {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
106 val si = queue.get(norigin.inQueue).view.searchable
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
107 val doc = si.document
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
108 val text = doc.getText(0, doc.length)
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
109 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
110 pos = search(needle, text, pos)
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
111 if (pos >= 0) {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
112 si.highlighter.addHighlight(pos, pos+needle.length, painter)
31
0c6c18a733b7 Compiles, new menu still a mess.
David Barts <n5jrn@me.com>
parents: 30
diff changeset
113 si.scrollRectToVisible(si.getBounds(null))
27
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
114 break
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 norigin = Offset(norigin.inQueue + incr, start)
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 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
119 }
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
120
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 * 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
123 */
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
124 fun deselectAll() {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
125 queue.forEach {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
126 val s = it.view.searchable as? ClipText
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
127 if (s != null && s.selected) {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
128 s.selected = false
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
129 s.validate()
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
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 * 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
136 */
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
137 fun getSelected(): QueueItem? {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
138 queue.forEach {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
139 if ((it.view.searchable as? ClipText)?.selected ?: false) {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
140 return it
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
141 }
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
142 }
21
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
143 return null
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
144 }
c10a447b9e1b Add some searching hooks.
David Barts <n5jrn@me.com>
parents: 16
diff changeset
145
5
d832c7b2bfd0 Clean out some deadwood.
David Barts <n5jrn@me.com>
parents: 2
diff changeset
146 private fun truncate() {
0
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
147 if (_maxSize > 0) {
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
148 var size = queue.size
5
d832c7b2bfd0 Clean out some deadwood.
David Barts <n5jrn@me.com>
parents: 2
diff changeset
149 var dirty = false
0
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
150 while (size > _maxSize) {
27
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
151 var extra = queue.removeFirst().view
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
152 inSwingThread {
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
153 if (extra.searchable.selected) {
31
0c6c18a733b7 Compiles, new menu still a mess.
David Barts <n5jrn@me.com>
parents: 30
diff changeset
154 anyRequired.disable()
0c6c18a733b7 Compiles, new menu still a mess.
David Barts <n5jrn@me.com>
parents: 30
diff changeset
155 styledRequired.disable()
27
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
156 }
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
157 parent.remove(extra.contents)
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
158 }
0
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
159 dirty = true
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
160 size -= 1
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
161 }
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
162 if (dirty) {
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
163 inSwingThread { parent.validate() }
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
164 }
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
165 }
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
166 }
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
167 }
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
168
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
169 /**
27
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
170 * 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
171 * 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
172 * 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
173 * queue.
0
be282c48010a Incomplete; checking it in as a backup.
David Barts <n5jrn@me.com>
parents:
diff changeset
174 */
27
8aa2dfac27eb Big reorg; compiled but untested.
David Barts <n5jrn@me.com>
parents: 21
diff changeset
175 data class QueueItem(val contents: PasteboardItem, val view: PasteboardItemView)