Lines 54-59
Link Here
|
54 |
import java.beans.PropertyChangeEvent; |
54 |
import java.beans.PropertyChangeEvent; |
55 |
import java.beans.PropertyChangeListener; |
55 |
import java.beans.PropertyChangeListener; |
56 |
import java.util.Iterator; |
56 |
import java.util.Iterator; |
|
|
57 |
import java.util.LinkedHashMap; |
58 |
import java.util.LinkedHashSet; |
57 |
import java.util.Map; |
59 |
import java.util.Map; |
58 |
import java.util.prefs.Preferences; |
60 |
import java.util.prefs.Preferences; |
59 |
import javax.swing.Action; |
61 |
import javax.swing.Action; |
Lines 118-123
Link Here
|
118 |
} |
120 |
} |
119 |
|
121 |
|
120 |
private static final RequestProcessor WORKER = new RequestProcessor(NbEditorUI.class.getName(), 1, false, false); |
122 |
private static final RequestProcessor WORKER = new RequestProcessor(NbEditorUI.class.getName(), 1, false, false); |
|
|
123 |
private static final LinkedHashSet<FileObject> objectsToRefresh = new LinkedHashSet<>(); |
124 |
private static final Object lock = new Object(); |
125 |
private static final RequestProcessor.Task TASK = WORKER.create(new Runnable() { |
126 |
@Override |
127 |
public void run() { |
128 |
FileObject fo; |
129 |
do { |
130 |
synchronized (lock) { |
131 |
// let's be fair - get 1-st object |
132 |
Iterator<FileObject> iterator = objectsToRefresh.iterator(); |
133 |
if (iterator.hasNext()) { |
134 |
fo = iterator.next(); |
135 |
objectsToRefresh.remove(fo); |
136 |
} else { |
137 |
fo = null; |
138 |
} |
139 |
} |
140 |
if (fo != null) { |
141 |
fo.refresh(); |
142 |
} |
143 |
} while (fo != null); |
144 |
} |
145 |
}); |
121 |
|
146 |
|
122 |
public NbEditorUI() { |
147 |
public NbEditorUI() { |
123 |
focusL = new FocusAdapter() { |
148 |
focusL = new FocusAdapter() { |
Lines 130-140
Link Here
|
130 |
final FileObject fo = dob.getPrimaryFile(); |
155 |
final FileObject fo = dob.getPrimaryFile(); |
131 |
if (fo != null) { |
156 |
if (fo != null) { |
132 |
// Fixed #48151 - posting the refresh outside of AWT thread |
157 |
// Fixed #48151 - posting the refresh outside of AWT thread |
133 |
WORKER.post(new Runnable() { |
158 |
synchronized (lock) { |
134 |
public void run() { |
159 |
objectsToRefresh.add(fo); |
135 |
fo.refresh(); |
160 |
} |
136 |
} |
161 |
TASK.schedule(0); |
137 |
}); |
|
|
138 |
} |
162 |
} |
139 |
} |
163 |
} |
140 |
} |
164 |
} |