@@ -244,17 +244,17 @@ public List<PluginInfo<DisplayViewer<?>>> getViewerPlugins() {
244244
245245 @ Override
246246 public void show (final Object o ) {
247- getDefaultUI ( ).show (o );
247+ getVisibleUI ( true ).show (o );
248248 }
249249
250250 @ Override
251251 public void show (final String name , final Object o ) {
252- getDefaultUI ( ).show (name , o );
252+ getVisibleUI ( true ).show (name , o );
253253 }
254254
255255 @ Override
256256 public void show (final Display <?> display ) {
257- getDefaultUI ( ).show (display );
257+ getVisibleUI ( true ).show (display );
258258 }
259259
260260 @ Override
@@ -309,44 +309,43 @@ public DialogPrompt.Result showDialog(final String message,
309309 final String title , final DialogPrompt .MessageType messageType ,
310310 final DialogPrompt .OptionType optionType )
311311 {
312- final UserInterface ui = getDefaultUI ( );
312+ UserInterface ui = getVisibleUI ( false );
313313 if (ui == null ) return null ;
314- final DialogPrompt dialogPrompt =
315- ui .dialogPrompt (message , title , messageType , optionType );
314+ final DialogPrompt dialogPrompt = ui .dialogPrompt (message , title , messageType , optionType );
316315 return dialogPrompt == null ? null : dialogPrompt .prompt ();
317316 }
318317
319318 @ Override
320319 public File chooseFile (final File file , final String style ) {
321- final UserInterface ui = getDefaultUI ( );
320+ final UserInterface ui = getVisibleUI ( true );
322321 return ui == null ? null : ui .chooseFile (file , style );
323322 }
324323
325324 @ Override
326325 public File
327326 chooseFile (final String title , final File file , final String style )
328327 {
329- final UserInterface ui = getDefaultUI ( );
328+ final UserInterface ui = getVisibleUI ( true );
330329 return ui == null ? null : ui .chooseFile (title , file , style );
331330 }
332331
333332 @ Override
334333 public File [] chooseFiles (File parent , File [] files , FileFilter filter , String style ) {
335- final UserInterface ui = getDefaultUI ( );
334+ final UserInterface ui = getVisibleUI ( true );
336335 return ui == null ? null : ui .chooseFiles (parent , files , filter , style );
337336 }
338337
339338 @ Override
340339 public List <File > chooseFiles (File parent , List <File > fileList , FileFilter filter , String style ) {
341- final UserInterface ui = getDefaultUI ( );
340+ final UserInterface ui = getVisibleUI ( true );
342341 return ui == null ? null : ui .chooseFiles (parent , fileList , filter , style );
343342 }
344343
345344 @ Override
346345 public void showContextMenu (final String menuRoot , final Display <?> display ,
347346 final int x , final int y )
348347 {
349- final UserInterface ui = getDefaultUI ( );
348+ final UserInterface ui = getVisibleUI ( true );
350349 if (ui != null ) ui .showContextMenu (menuRoot , display , x , y );
351350 }
352351
@@ -542,4 +541,21 @@ private void addUserInterface(final String name, final UserInterface ui) {
542541 private String getTitle () {
543542 return appService .getApp ().getTitle ();
544543 }
544+
545+ private UserInterface getVisibleUI (final boolean forceShow ) {
546+ // finds the first (highest priority) VISIBLE UserInterface
547+ // if none are visible, then we show default UI if the caller indicated so.
548+ UserInterface defaultUI = getDefaultUI ();
549+ if (defaultUI == null ) return null ;
550+ if (defaultUI .isVisible ()) return defaultUI ;
551+ else if (getVisibleUIs ().size () > 0 ) {
552+ return getVisibleUIs ().get (0 );
553+ }
554+
555+ if (forceShow ) {
556+ showUI (defaultUI );
557+ return defaultUI ;
558+ }
559+ return null ;
560+ }
545561}
0 commit comments