Skip to content

Commit ea4ad04

Browse files
committed
feat: plan viewer/editor tab switch and queue item events
1 parent 37c0627 commit ea4ad04

File tree

2 files changed

+75
-0
lines changed

2 files changed

+75
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package org.phoebus.applications.queueserver.util;
2+
3+
import org.phoebus.applications.queueserver.api.QueueItem;
4+
import org.phoebus.applications.queueserver.view.TabSwitchEvent;
5+
6+
import java.util.List;
7+
import java.util.concurrent.CopyOnWriteArrayList;
8+
import java.util.function.Consumer;
9+
import java.util.logging.Level;
10+
import java.util.logging.Logger;
11+
12+
public class QueueItemSelectionEvent {
13+
14+
private static final QueueItemSelectionEvent INSTANCE = new QueueItemSelectionEvent();
15+
16+
private final List<Consumer<QueueItem>> listeners = new CopyOnWriteArrayList<>();
17+
private static final Logger LOG = Logger.getLogger(TabSwitchEvent.class.getName());
18+
19+
private QueueItemSelectionEvent() {}
20+
21+
public static QueueItemSelectionEvent getInstance() {
22+
return INSTANCE;
23+
}
24+
25+
public void addListener(Consumer<QueueItem> listener) {
26+
listeners.add(listener);
27+
}
28+
29+
public void removeListener(Consumer<QueueItem> listener) {
30+
listeners.remove(listener);
31+
}
32+
33+
public void notifySelectionChanged(QueueItem selectedItem) {
34+
for (Consumer<QueueItem> listener : listeners) {
35+
try {
36+
listener.accept(selectedItem);
37+
} catch (Exception e) {
38+
LOG.log(Level.WARNING, "Error in queue selection listener", e);
39+
}
40+
}
41+
}
42+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package org.phoebus.applications.queueserver.view;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
import java.util.function.Consumer;
6+
import java.util.logging.Logger;
7+
import java.util.logging.Level;
8+
9+
public class TabSwitchEvent {
10+
private static final TabSwitchEvent instance = new TabSwitchEvent();
11+
private final List<Consumer<String>> listeners = new ArrayList<>();
12+
private static final Logger LOG = Logger.getLogger(TabSwitchEvent.class.getName());
13+
14+
private TabSwitchEvent() {}
15+
16+
public static TabSwitchEvent getInstance() {
17+
return instance;
18+
}
19+
20+
public void addListener(Consumer<String> listener) {
21+
listeners.add(listener);
22+
}
23+
24+
public void switchToTab(String tabName) {
25+
for (Consumer<String> listener : listeners) {
26+
try {
27+
listener.accept(tabName);
28+
} catch (Exception e) {
29+
LOG.log(Level.WARNING, "Tab switch listener error", e);
30+
}
31+
}
32+
}
33+
}

0 commit comments

Comments
 (0)