11package net .querz .mcmapviewer ;
22
3+ import javafx .application .Platform ;
34import javafx .collections .FXCollections ;
45import javafx .scene .control .ListView ;
56import javafx .scene .control .SelectionMode ;
@@ -27,7 +28,7 @@ public void reload() {
2728 this .files = new File [0 ];
2829 }
2930 this .files = files ;
30- Arrays .sort (this .files );
31+ Arrays .sort (this .files , this :: compareMapFiles );
3132 getItems ().clear ();
3233 Arrays .stream (this .files ).forEach (f -> getItems ().add (new EditableFile (f )));
3334 getSelectionModel ().select (selected );
@@ -43,7 +44,7 @@ public void setDirectory(File directory) {
4344 }
4445 this .files = files ;
4546 this .directory = directory ;
46- Arrays .sort (this .files );
47+ Arrays .sort (this .files , this :: compareMapFiles );
4748 getItems ().clear ();
4849 Arrays .stream (this .files ).forEach (f -> getItems ().add (new EditableFile (f )));
4950 getSelectionModel ().select (0 );
@@ -52,12 +53,21 @@ public void setDirectory(File directory) {
5253 }
5354 }
5455
56+ private int compareMapFiles (File a , File b ) {
57+ String aName = a .getName ();
58+ String sa = aName .substring (4 , aName .length () - 4 );
59+ String bName = b .getName ();
60+ String sb = bName .substring (4 , bName .length () - 4 );
61+ return Integer .compare (Integer .parseInt (sa ), Integer .parseInt (sb ));
62+ }
63+
5564 public void setOnFileSelectionChanged (Consumer <EditableFile > consumer ) {
5665 onFileSelectionChanged = consumer ;
5766 getSelectionModel ().selectedItemProperty ().addListener ((v , o , n ) -> {
5867 if (getSelectionModel ().getSelectedItem () != null && !getSelectionModel ().getSelectedItem ().equals (selected )) {
5968 for (EditableFile file : getItems ()) {
6069 if (file .isEdited ()) {
70+ Platform .runLater (() -> getSelectionModel ().select (file ));
6171 return ;
6272 }
6373 }
0 commit comments