13
13
import java .net .URISyntaxException ;
14
14
import java .time .LocalDateTime ;
15
15
import java .time .format .DateTimeFormatter ;
16
+ import java .util .ArrayList ;
17
+ import java .util .List ;
16
18
17
19
import javax .swing .BorderFactory ;
18
20
import javax .swing .JButton ;
@@ -50,7 +52,7 @@ public class ModelDrawerPanel extends JPanel implements ActionListener {
50
52
HTMLPane html = new HTMLPane ("Segoe UI" , "#333333" , "#FFFFFF" , 200 , 200 );
51
53
52
54
private SAMModel model ;
53
- private ModelDrawerPanelListener listener ;
55
+ private final List < ModelDrawerPanelListener > listeners ;
54
56
private int hSize ;
55
57
private Thread modelInstallThread ;
56
58
private Thread infoThread ;
@@ -69,7 +71,8 @@ public class ModelDrawerPanel extends JPanel implements ActionListener {
69
71
70
72
private ModelDrawerPanel (int hSize , ModelDrawerPanelListener listener ) {
71
73
this .hSize = hSize ;
72
- this .listener = listener ;
74
+ this .listeners = new ArrayList <>(5 );
75
+ this .listeners .add (listener );
73
76
createDrawerPanel ();
74
77
this .install .addActionListener (this );
75
78
this .uninstall .addActionListener (this );
@@ -180,7 +183,7 @@ public void actionPerformed(ActionEvent e) {
180
183
}
181
184
182
185
private void installModel () {
183
- SwingUtilities .invokeLater (() -> listener . setGUIEnabled (false ));
186
+ SwingUtilities .invokeLater (() -> listeners . forEach ( l -> l . setGUIEnabled (false ) ));
184
187
SwingUtilities .invokeLater (() -> install .setEnabled (false ));
185
188
modelInstallThread = new Thread (() ->{
186
189
try {
@@ -190,15 +193,15 @@ private void installModel() {
190
193
SwingUtilities .invokeLater (() -> {
191
194
this .setInfo ();
192
195
setButtons ();
193
- listener . setGUIEnabled (true );
196
+ listeners . forEach ( l -> l . setGUIEnabled (true ) );
194
197
});
195
198
} catch (IOException | InterruptedException | ArchiveException | URISyntaxException
196
199
| MambaInstallException e ) {
197
200
e .printStackTrace ();
198
201
SwingUtilities .invokeLater (() -> {
199
202
this .setInfo ();
200
203
setButtons ();
201
- listener . setGUIEnabled (true );
204
+ listeners . forEach ( l -> l . setGUIEnabled (true ) );
202
205
});
203
206
}
204
207
});
@@ -292,7 +295,7 @@ private static String formatHTML(String html) {
292
295
}
293
296
294
297
private void uninstallModel () {
295
- SwingUtilities .invokeLater (() -> listener . setGUIEnabled (false ));
298
+ SwingUtilities .invokeLater (() -> listeners . forEach ( l -> l . setGUIEnabled (false ) ));
296
299
SwingUtilities .invokeLater (() -> uninstall .setEnabled (false ));
297
300
startLoadingAnimation ("Uninstalling model" );
298
301
modelInstallThread = new Thread (() ->{
@@ -301,7 +304,7 @@ private void uninstallModel() {
301
304
SwingUtilities .invokeLater (() -> {
302
305
this .setInfo ();
303
306
setButtons ();
304
- listener . setGUIEnabled (true );
307
+ listeners . forEach ( l -> l . setGUIEnabled (true ) );
305
308
});
306
309
});
307
310
modelInstallThread .start ();
@@ -358,4 +361,10 @@ public interface ModelDrawerPanelListener {
358
361
void setGUIEnabled (boolean enabled );
359
362
}
360
363
364
+ public void addModelDrawerPanelListener (ModelDrawerPanelListener listener ) {
365
+ this .listeners .add (listener );
366
+ }
367
+ public void removeModelDrawerPanelListener (ModelDrawerPanelListener listener ) {
368
+ this .listeners .remove (listener );
369
+ }
361
370
}
0 commit comments