Skip to content

Commit e20986f

Browse files
committed
CHG: ModelDrawerPanel.add/removeModelDrawerPanelListener()
1 parent 2dec2e1 commit e20986f

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

src/main/java/ai/nets/samj/gui/components/ModelDrawerPanel.java

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import java.net.URISyntaxException;
1414
import java.time.LocalDateTime;
1515
import java.time.format.DateTimeFormatter;
16+
import java.util.ArrayList;
17+
import java.util.List;
1618

1719
import javax.swing.BorderFactory;
1820
import javax.swing.JButton;
@@ -50,7 +52,7 @@ public class ModelDrawerPanel extends JPanel implements ActionListener {
5052
HTMLPane html = new HTMLPane("Segoe UI", "#333333", "#FFFFFF", 200, 200);
5153

5254
private SAMModel model;
53-
private ModelDrawerPanelListener listener;
55+
private final List<ModelDrawerPanelListener> listeners;
5456
private int hSize;
5557
private Thread modelInstallThread;
5658
private Thread infoThread;
@@ -69,7 +71,8 @@ public class ModelDrawerPanel extends JPanel implements ActionListener {
6971

7072
private ModelDrawerPanel(int hSize, ModelDrawerPanelListener listener) {
7173
this.hSize = hSize;
72-
this.listener = listener;
74+
this.listeners = new ArrayList<>(5);
75+
this.listeners.add(listener);
7376
createDrawerPanel();
7477
this.install.addActionListener(this);
7578
this.uninstall.addActionListener(this);
@@ -180,7 +183,7 @@ public void actionPerformed(ActionEvent e) {
180183
}
181184

182185
private void installModel() {
183-
SwingUtilities.invokeLater(() -> listener.setGUIEnabled(false));
186+
SwingUtilities.invokeLater(() -> listeners.forEach(l -> l.setGUIEnabled(false)));
184187
SwingUtilities.invokeLater(() -> install.setEnabled(false));
185188
modelInstallThread = new Thread(() ->{
186189
try {
@@ -190,15 +193,15 @@ private void installModel() {
190193
SwingUtilities.invokeLater(() -> {
191194
this.setInfo();
192195
setButtons();
193-
listener.setGUIEnabled(true);
196+
listeners.forEach(l -> l.setGUIEnabled(true));
194197
});
195198
} catch (IOException | InterruptedException | ArchiveException | URISyntaxException
196199
| MambaInstallException e) {
197200
e.printStackTrace();
198201
SwingUtilities.invokeLater(() -> {
199202
this.setInfo();
200203
setButtons();
201-
listener.setGUIEnabled(true);
204+
listeners.forEach(l -> l.setGUIEnabled(true));
202205
});
203206
}
204207
});
@@ -292,7 +295,7 @@ private static String formatHTML(String html) {
292295
}
293296

294297
private void uninstallModel() {
295-
SwingUtilities.invokeLater(() -> listener.setGUIEnabled(false));
298+
SwingUtilities.invokeLater(() -> listeners.forEach(l -> l.setGUIEnabled(false)));
296299
SwingUtilities.invokeLater(() -> uninstall.setEnabled(false));
297300
startLoadingAnimation("Uninstalling model");
298301
modelInstallThread = new Thread(() ->{
@@ -301,7 +304,7 @@ private void uninstallModel() {
301304
SwingUtilities.invokeLater(() -> {
302305
this.setInfo();
303306
setButtons();
304-
listener.setGUIEnabled(true);
307+
listeners.forEach(l -> l.setGUIEnabled(true));
305308
});
306309
});
307310
modelInstallThread.start();
@@ -358,4 +361,10 @@ public interface ModelDrawerPanelListener {
358361
void setGUIEnabled(boolean enabled);
359362
}
360363

364+
public void addModelDrawerPanelListener(ModelDrawerPanelListener listener) {
365+
this.listeners.add(listener);
366+
}
367+
public void removeModelDrawerPanelListener(ModelDrawerPanelListener listener) {
368+
this.listeners.remove(listener);
369+
}
361370
}

0 commit comments

Comments
 (0)