1818*/
1919package nsusbloader .Controllers ;
2020
21+ import javafx .beans .binding .Bindings ;
2122import javafx .fxml .FXML ;
2223import javafx .fxml .Initializable ;
2324import javafx .scene .control .*;
3334import nsusbloader .ModelControllers .CancellableRunnable ;
3435import nsusbloader .NSLDataTypes .EModule ;
3536import nsusbloader .ServiceWindow ;
36- import nsusbloader .Utilities .splitmerge .MergeTask ;
37- import nsusbloader .Utilities .splitmerge .SplitTask ;
37+ import nsusbloader .Utilities .splitmerge .SplitMergeTaskExecutor ;
3838
3939import java .io .File ;
4040import java .net .URL ;
41+ import java .util .List ;
4142import java .util .ResourceBundle ;
4243
4344public class SplitMergeController implements Initializable {
@@ -53,40 +54,39 @@ public class SplitMergeController implements Initializable {
5354 changeSaveToBtn ,
5455 convertBtn ;
5556 @ FXML
56- private Label fileFolderLabelLbl ,
57- fileFolderActualPathLbl ,
58- saveToPathLbl ,
57+ private Label saveToPathLbl ,
5958 statusLbl ;
6059
60+ @ FXML
61+ private BlockListViewController BlockListViewController ;
62+
6163 private ResourceBundle resourceBundle ;
6264
6365 private Region convertRegion ;
6466 private Thread smThread ;
65- private CancellableRunnable smTask ;
67+ private Runnable smTask ;
6668
6769 @ Override
6870 public void initialize (URL url , ResourceBundle resourceBundle ) {
6971 this .resourceBundle = resourceBundle ;
72+
7073 convertRegion = new Region ();
7174 convertBtn .setGraphic (convertRegion );
75+ convertBtn .disableProperty ().bind (Bindings .isEmpty (BlockListViewController .getItems ()));
7276
7377 splitRad .setOnAction ((actionEvent -> {
7478 statusLbl .setText ("" );
7579 convertRegion .getStyleClass ().clear ();
7680 convertRegion .getStyleClass ().add ("regionSplitToOne" );
77- fileFolderLabelLbl .setText (resourceBundle .getString ("tabSplMrg_Txt_File" ));
7881 selectFileFolderBtn .setText (resourceBundle .getString ("tabSplMrg_Btn_SelectFile" ));
79- fileFolderActualPathLbl .setText ("" );
80- convertBtn .setDisable (true );
82+ BlockListViewController .clear ();
8183 }));
8284 mergeRad .setOnAction ((actionEvent -> {
8385 statusLbl .setText ("" );
8486 convertRegion .getStyleClass ().clear ();
8587 convertRegion .getStyleClass ().add ("regionOneToSplit" );
86- fileFolderLabelLbl .setText (resourceBundle .getString ("tabSplMrg_Txt_Folder" ));
8788 selectFileFolderBtn .setText (resourceBundle .getString ("tabSplMrg_Btn_SelectFolder" ));
88- fileFolderActualPathLbl .setText ("" );
89- convertBtn .setDisable (true );
89+ BlockListViewController .clear ();
9090 }));
9191
9292 if (AppPreferences .getInstance ().getSplitMergeType () == 0 )
@@ -110,42 +110,36 @@ public void initialize(URL url, ResourceBundle resourceBundle) {
110110
111111 selectFileFolderBtn .setOnAction (actionEvent -> {
112112 statusLbl .setText ("" );
113+ List <File > alreadyAddedFiles = BlockListViewController .getItems ();
113114 if (splitRad .isSelected ()) {
114115 FileChooser fc = new FileChooser ();
115116 fc .setTitle (resourceBundle .getString ("tabSplMrg_Btn_SelectFile" ));
116- if (! fileFolderActualPathLbl .getText ().isEmpty ()){
117- File temporaryFile = new File (fileFolderActualPathLbl .getText ()).getParentFile ();
118- if (temporaryFile != null && temporaryFile .exists ())
119- fc .setInitialDirectory (temporaryFile );
120- else
121- fc .setInitialDirectory (new File (System .getProperty ("user.home" )));
117+ if (! alreadyAddedFiles .isEmpty ()){
118+ String recentLocation = FilesHelper .getRealFolder (alreadyAddedFiles .get (0 ).getParentFile ().getAbsolutePath ());
119+ fc .setInitialDirectory (new File (recentLocation ));
122120 }
123121 else
124122 fc .setInitialDirectory (new File (System .getProperty ("user.home" )));
125- File fileFile = fc .showOpenDialog (changeSaveToBtn .getScene ().getWindow ());
126- if (fileFile == null )
123+ List < File > files = fc .showOpenMultipleDialog (changeSaveToBtn .getScene ().getWindow ());
124+ if (files == null || files . isEmpty () )
127125 return ;
128- fileFolderActualPathLbl . setText ( fileFile . getAbsolutePath () );
126+ this . BlockListViewController . addAll ( files );
129127 }
130128 else {
131129 DirectoryChooser dc = new DirectoryChooser ();
132130 dc .setTitle (resourceBundle .getString ("tabSplMrg_Btn_SelectFolder" ));
133- if (! fileFolderActualPathLbl .getText ().isEmpty ()){
134- File temporaryFile = new File (fileFolderActualPathLbl .getText ());
135- if (temporaryFile .exists ())
136- dc .setInitialDirectory (temporaryFile );
137- else
138- dc .setInitialDirectory (new File (System .getProperty ("user.home" )));
131+ if (! alreadyAddedFiles .isEmpty ()){
132+ String recentLocation = FilesHelper .getRealFolder (alreadyAddedFiles .get (0 ).getParentFile ().getAbsolutePath ());
133+ dc .setInitialDirectory (new File (recentLocation ));
139134 }
140135 else
141136 dc .setInitialDirectory (new File (System .getProperty ("user.home" )));
142137
143138 File folderFile = dc .showDialog (changeSaveToBtn .getScene ().getWindow ());
144139 if (folderFile == null )
145140 return ;
146- fileFolderActualPathLbl . setText ( folderFile . getAbsolutePath () );
141+ this . BlockListViewController . add ( folderFile );
147142 }
148- convertBtn .setDisable (false );
149143 });
150144
151145 convertBtn .setOnAction (actionEvent -> setConvertBtnAction ());
@@ -192,7 +186,7 @@ public void notifyThreadStarted(boolean isStart, EModule type){ // todo: refacto
192186 * */
193187 private void stopBtnAction (){
194188 if (smThread != null && smThread .isAlive ()) {
195- smTask . cancel ();
189+ smThread . interrupt ();
196190 }
197191 }
198192 /**
@@ -209,9 +203,9 @@ private void setConvertBtnAction(){
209203 }
210204
211205 if (splitRad .isSelected ())
212- smTask = new SplitTask ( fileFolderActualPathLbl . getText (), saveToPathLbl .getText ());
206+ smTask = new SplitMergeTaskExecutor ( true , BlockListViewController . getItems (), saveToPathLbl .getText ());
213207 else
214- smTask = new MergeTask ( fileFolderActualPathLbl . getText (), saveToPathLbl .getText ());
208+ smTask = new SplitMergeTaskExecutor ( false , BlockListViewController . getItems (), saveToPathLbl .getText ());
215209 smThread = new Thread (smTask );
216210 smThread .setDaemon (true );
217211 smThread .start ();
@@ -230,14 +224,16 @@ private void handleDragOver(DragEvent event){
230224 * */
231225 @ FXML
232226 private void handleDrop (DragEvent event ) {
233- File fileDrpd = event .getDragboard ().getFiles ().get (0 );
227+ List <File > files = event .getDragboard ().getFiles ();
228+ File firstFile = files .get (0 );
234229
235- if (fileDrpd .isDirectory ())
230+ if (firstFile .isDirectory ())
236231 mergeRad .fire ();
237232 else
238233 splitRad .fire ();
239- fileFolderActualPathLbl .setText (fileDrpd .getAbsolutePath ());
240- convertBtn .setDisable (false );
234+
235+ this .BlockListViewController .addAll (files );
236+
241237 event .setDropCompleted (true );
242238 event .consume ();
243239 }
0 commit comments