1515import  javafx .scene .control .TableColumn ;
1616import  javafx .scene .control .TableView ;
1717import  javafx .scene .control .TextField ;
18- import  javafx .scene .input .KeyCode ;
1918import  javafx .scene .input .KeyEvent ;
2019import  javafx .scene .layout .GridPane ;
2120import  javafx .stage .Stage ;
3130import  qupath .ext .omero .core .entities .search .SearchResult ;
3231import  qupath .ext .omero .gui .UiUtilities ;
3332import  qupath .ext .omero .gui .browser .advancedsearch .cellfactories .LinkCellFactory ;
33+ import  qupath .ext .omero .gui .browser .advancedsearch .cellfactories .TextCellFactory ;
3434import  qupath .ext .omero .gui .browser .advancedsearch .cellfactories .TypeCellFactory ;
3535import  qupath .fx .dialogs .Dialogs ;
3636
@@ -74,10 +74,10 @@ public class AdvancedSearch extends Stage {
7474    @ FXML 
7575    private  CheckBox  screens ;
7676    @ FXML 
77-     private  ComboBox <Owner > owner ;
78-     @ FXML 
7977    private  ComboBox <Group > group ;
8078    @ FXML 
79+     private  ComboBox <Owner > owner ;
80+     @ FXML 
8181    private  Button  search ;
8282    @ FXML 
8383    private  Button  importImage ;
@@ -178,65 +178,79 @@ private void onImportButtonClicked(ActionEvent ignoredEvent) {
178178    private  void  initUI (Stage  ownerWindow ) throws  IOException  {
179179        UiUtilities .loadFXML (this , AdvancedSearch .class .getResource ("advanced_search.fxml" ));
180180
181-         owner .getItems ().setAll (server . getOwners ());
182-         owner .getItems ().add ( Owner . getAllMembersOwner ());
183-         owner .getSelectionModel ().select (server .getConnectedOwner ());
184-         owner .setConverter (new  StringConverter <>() {
181+         group .getItems ().setAll (Group . getAllGroupsGroup ());
182+         group .getItems ().addAll ( server . getGroups ());
183+         group .getSelectionModel ().select (server .getDefaultGroup ());
184+         group .setConverter (new  StringConverter <>() {
185185            @ Override 
186-             public  String  toString (Owner   owner ) {
187-                 return  owner  == null  ? ""  : owner . getFullName ();
186+             public  String  toString (Group   object ) {
187+                 return  object  == null  ? ""  : object . getName ();
188188            }
189+ 
189190            @ Override 
190-             public  Owner  fromString (String  string ) {
191+             public  Group  fromString (String  string ) {
191192                return  null ;
192193            }
193194        });
194195
195-         group .getItems ().setAll (server . getGroups ());
196-         group .getItems ().add ( Group . getAllGroupsGroup ());
197-         group .getSelectionModel ().select (server .getDefaultGroup ());
198-         group .setConverter (new  StringConverter <>() {
196+         owner .getItems ().setAll (Owner . getAllMembersOwner ());
197+         owner .getItems ().addAll ( group . getSelectionModel (). getSelectedItem (). getOwners ());
198+         owner .getSelectionModel ().select (server .getConnectedOwner ());
199+         owner .setConverter (new  StringConverter <>() {
199200            @ Override 
200-             public  String  toString (Group   object ) {
201-                 return  object  == null  ? ""  : object . getName ();
201+             public  String  toString (Owner   owner ) {
202+                 return  owner  == null  ? ""  : owner . getFullName ();
202203            }
203- 
204204            @ Override 
205-             public  Group  fromString (String  string ) {
205+             public  Owner  fromString (String  string ) {
206206                return  null ;
207207            }
208208        });
209209
210210        results .getSelectionModel ().setSelectionMode (SelectionMode .MULTIPLE );
211211
212212        typeColumn .setCellValueFactory (n  -> new  ReadOnlyObjectWrapper <>(n .getValue ()));
213-         nameColumn .setCellValueFactory (n  -> new  ReadOnlyStringWrapper (n .getValue ().getName ()));
214-         acquiredColumn .setCellValueFactory (n  -> new  ReadOnlyStringWrapper (n .getValue ().getDateAcquired (). isPresent ()  ?
215-                 DATE_FORMAT .format (n .getValue ().getDateAcquired (). get ()) :  "" 
213+         nameColumn .setCellValueFactory (n  -> new  ReadOnlyStringWrapper (n .getValue ().name ()));
214+         acquiredColumn .setCellValueFactory (n  -> new  ReadOnlyStringWrapper (n .getValue ().dateAcquired () ==  null  ?
215+                 ""  :  DATE_FORMAT .format (n .getValue ().dateAcquired ()) 
216216        ));
217-         importedColumn .setCellValueFactory (n  -> new  ReadOnlyStringWrapper (n .getValue ().getDateImported (). isPresent ()  ?
218-                 DATE_FORMAT .format (n .getValue ().getDateImported (). get ()) :  "" 
217+         importedColumn .setCellValueFactory (n  -> new  ReadOnlyStringWrapper (n .getValue ().dateImported () ==  null  ?
218+                 ""  :  DATE_FORMAT .format (n .getValue ().dateImported ()) 
219219        ));
220-         groupColumn .setCellValueFactory (n  -> new  ReadOnlyStringWrapper (n .getValue ().getGroupName ()));
220+         groupColumn .setCellValueFactory (n  -> new  ReadOnlyStringWrapper (n .getValue ().group ()));
221221        linkColumn .setCellValueFactory (n  -> new  ReadOnlyObjectWrapper <>(n .getValue ()));
222222
223223        typeColumn .setCellFactory (n  -> new  TypeCellFactory (apisHandler ));
224+         nameColumn .setCellFactory (n  -> new  TextCellFactory ());
225+         acquiredColumn .setCellFactory (n  -> new  TextCellFactory ());
226+         importedColumn .setCellFactory (n  -> new  TextCellFactory ());
227+         groupColumn .setCellFactory (n  -> new  TextCellFactory ());
224228        linkColumn .setCellFactory (n  -> new  LinkCellFactory ());
225229
226230        initOwner (ownerWindow );
227231        show ();
228232    }
229233
230234    private  void  setUpListeners () {
231-         addEventHandler (KeyEvent .KEY_PRESSED , e  -> {
232-             if  (e .getCode () == KeyCode .ESCAPE ) {
233-                 close ();
235+         group .getSelectionModel ().selectedItemProperty ().addListener ((p , o , n ) -> {
236+             owner .getItems ().setAll (Owner .getAllMembersOwner ());
237+ 
238+             if  (n  == null ) {
239+                 owner .getSelectionModel ().select (null );
240+             } else  {
241+                 if  (n .equals (Group .getAllGroupsGroup ())) {
242+                     owner .getItems ().addAll (server .getOwners ());
243+                     owner .getSelectionModel ().select (Owner .getAllMembersOwner ());
244+                 } else  {
245+                     owner .getItems ().addAll (n .getOwners ());
246+                     owner .getSelectionModel ().selectFirst ();
247+                 }
234248            }
235249        });
236250
237251        importImage .textProperty ().bind (Bindings .createStringBinding (
238252                () -> results .getSelectionModel ().getSelectedItems ().size () == 1  ?
239-                         resources .getString ("Browser.ServerBrowser.AdvancedSearch.import" ) + " "  + results .getSelectionModel ().getSelectedItems ().getFirst ().getName () :
253+                         resources .getString ("Browser.ServerBrowser.AdvancedSearch.import" ) + " "  + results .getSelectionModel ().getSelectedItems ().getFirst ().name () :
240254                        resources .getString ("Browser.ServerBrowser.AdvancedSearch.importObjects" ),
241255                results .getSelectionModel ().getSelectedItems ()
242256        ));
@@ -248,17 +262,31 @@ private void setUpListeners() {
248262            }
249263        });
250264
251-         typeColumn .prefWidthProperty ().bind (results .widthProperty ().multiply (0.16 ));
252-         nameColumn .prefWidthProperty ().bind (results .widthProperty ().multiply (0.16 ));
253-         acquiredColumn .prefWidthProperty ().bind (results .widthProperty ().multiply (0.16 ));
254-         importedColumn .prefWidthProperty ().bind (results .widthProperty ().multiply (0.16 ));
255-         groupColumn .prefWidthProperty ().bind (results .widthProperty ().multiply (0.16 ));
256-         linkColumn .prefWidthProperty ().bind (results .widthProperty ().multiply (0.16 ));
265+         typeColumn .prefWidthProperty ().bind (results .widthProperty ().multiply (0.1667 ));
266+         nameColumn .prefWidthProperty ().bind (results .widthProperty ().multiply (0.1667 ));
267+         acquiredColumn .prefWidthProperty ().bind (results .widthProperty ().multiply (0.1667 ));
268+         importedColumn .prefWidthProperty ().bind (results .widthProperty ().multiply (0.1667 ));
269+         groupColumn .prefWidthProperty ().bind (results .widthProperty ().multiply (0.1667 ));
270+         linkColumn .prefWidthProperty ().bind (results .widthProperty ().multiply (0.1667 ));
271+ 
272+         getScene ().addEventFilter (
273+                 KeyEvent .KEY_PRESSED ,
274+                 keyEvent  -> {
275+                     switch  (keyEvent .getCode ()) {
276+                         case  ENTER :
277+                             onSearchClicked (null );
278+                             break ;
279+                         case  ESCAPE :
280+                             close ();
281+                             break ;
282+                     }
283+                 }
284+         );
257285    }
258286
259287    private  void  importSelectedImages () {
260288        UiUtilities .openImages (results .getSelectionModel ().getSelectedItems ().stream ()
261-                 .map (SearchResult ::getLink )
289+                 .map (SearchResult ::link )
262290                .toList ()
263291        );
264292    }
0 commit comments