Updating to NBMs from NetBeans 8.0.1 as some of them are required to run on JDK8
1 package org.apidesign.openfixed;
4 import java.util.concurrent.CopyOnWriteArrayList;
5 import java.util.concurrent.Executor;
6 import java.util.concurrent.Executors;
7 import org.apidesign.openfixed.Calculator.EventSupport;
11 * @author Jaroslav Tulach <jtulach@netbeans.org>
13 final class PendingEventSupport implements EventSupport, Runnable {
14 private final List<ModificationListener> listeners = new CopyOnWriteArrayList<ModificationListener>();
15 private final List<Deliverable> deliverables = new CopyOnWriteArrayList<Deliverable>();
16 private static final Executor EXEC = Executors.newSingleThreadExecutor();
18 PendingEventSupport() {
22 public void fireModificationEvent(ModificationEvent ev) {
23 synchronized (deliverables) {
24 final Deliverable d = new Deliverable(ev, listeners.toArray(new ModificationListener[0]));
31 public void add(ModificationListener l) {
36 public void remove(ModificationListener l) {
42 Deliverable[] pending;
43 synchronized (deliverables) {
44 if (deliverables.isEmpty()) {
47 pending = deliverables.toArray(new Deliverable[0]);
50 // BEGIN: openfixed.pendingCount
51 int pendingCount = pending.length;
52 for (Deliverable d : pending) {
53 d.ev.pending = --pendingCount;
54 for (ModificationListener l : d.listeners) {
58 // END: openfixed.pendingCount
61 private static class Deliverable {
62 final ModificationEvent ev;
63 final ModificationListener[] listeners;
65 public Deliverable(ModificationEvent ev, ModificationListener[] listeners) {
67 this.listeners = listeners;