3434import java .util .ArrayList ;
3535import java .util .List ;
3636
37+ import org .scijava .event .EventHandler ;
38+ import org .scijava .plugin .Parameter ;
3739import org .scijava .plugin .Plugin ;
3840import org .scijava .service .AbstractService ;
3941import org .scijava .service .Service ;
42+ import org .scijava .ui .DialogPrompt .MessageType ;
43+ import org .scijava .ui .UIService ;
44+ import org .scijava .ui .event .UIShownEvent ;
4045
4146/**
4247 * Default service for working with Java 3D.
@@ -48,6 +53,9 @@ public class DefaultJava3DService extends AbstractService implements
4853 Java3DService
4954{
5055
56+ @ Parameter
57+ private UIService uiService ;
58+
5159 @ Override
5260 public List <File > getLibExtLocations () {
5361 final ArrayList <File > files = new ArrayList <File >();
@@ -59,6 +67,26 @@ public List<File> getLibExtLocations() {
5967 return files ;
6068 }
6169
70+ // -- Event handlers --
71+
72+ /** Checks for obsolete Java 3D installations, warning when any are found. */
73+ @ EventHandler
74+ protected void onEvent (@ SuppressWarnings ("unused" ) final UIShownEvent evt ) {
75+ final List <File > libExtFiles = getLibExtLocations ();
76+ if (libExtFiles .isEmpty ()) return ;
77+
78+ final StringBuilder sb = new StringBuilder ();
79+ sb .append ("There are obsolete Java 3D libraries installed as Java "
80+ + "extensions." );
81+ sb .append ("\n The following files were detected:\n " );
82+ for (final File libExtFile : libExtFiles ) {
83+ sb .append ("\n * " + libExtFile .getAbsolutePath ());
84+ }
85+ sb .append ("\n \n These libraries will very likely cause problems with "
86+ + "3D visualization.\n Please delete them, then restart the program." );
87+ uiService .showDialog (sb .toString (), MessageType .WARNING_MESSAGE );
88+ }
89+
6290 // -- Helper methods --
6391
6492 private void checkLibExtDirectory (final ArrayList <File > files ,
0 commit comments