18
18
*/
19
19
package nsusbloader .Controllers ;
20
20
21
+ import javafx .beans .binding .Bindings ;
21
22
import javafx .fxml .FXML ;
22
23
import javafx .fxml .Initializable ;
23
24
import javafx .scene .control .*;
33
34
import nsusbloader .ModelControllers .CancellableRunnable ;
34
35
import nsusbloader .NSLDataTypes .EModule ;
35
36
import nsusbloader .ServiceWindow ;
36
- import nsusbloader .Utilities .splitmerge .MergeTask ;
37
- import nsusbloader .Utilities .splitmerge .SplitTask ;
37
+ import nsusbloader .Utilities .splitmerge .SplitMergeTaskExecutor ;
38
38
39
39
import java .io .File ;
40
40
import java .net .URL ;
41
+ import java .util .List ;
41
42
import java .util .ResourceBundle ;
42
43
43
44
public class SplitMergeController implements Initializable {
@@ -53,40 +54,39 @@ public class SplitMergeController implements Initializable {
53
54
changeSaveToBtn ,
54
55
convertBtn ;
55
56
@ FXML
56
- private Label fileFolderLabelLbl ,
57
- fileFolderActualPathLbl ,
58
- saveToPathLbl ,
57
+ private Label saveToPathLbl ,
59
58
statusLbl ;
60
59
60
+ @ FXML
61
+ private BlockListViewController BlockListViewController ;
62
+
61
63
private ResourceBundle resourceBundle ;
62
64
63
65
private Region convertRegion ;
64
66
private Thread smThread ;
65
- private CancellableRunnable smTask ;
67
+ private Runnable smTask ;
66
68
67
69
@ Override
68
70
public void initialize (URL url , ResourceBundle resourceBundle ) {
69
71
this .resourceBundle = resourceBundle ;
72
+
70
73
convertRegion = new Region ();
71
74
convertBtn .setGraphic (convertRegion );
75
+ convertBtn .disableProperty ().bind (Bindings .isEmpty (BlockListViewController .getItems ()));
72
76
73
77
splitRad .setOnAction ((actionEvent -> {
74
78
statusLbl .setText ("" );
75
79
convertRegion .getStyleClass ().clear ();
76
80
convertRegion .getStyleClass ().add ("regionSplitToOne" );
77
- fileFolderLabelLbl .setText (resourceBundle .getString ("tabSplMrg_Txt_File" ));
78
81
selectFileFolderBtn .setText (resourceBundle .getString ("tabSplMrg_Btn_SelectFile" ));
79
- fileFolderActualPathLbl .setText ("" );
80
- convertBtn .setDisable (true );
82
+ BlockListViewController .clear ();
81
83
}));
82
84
mergeRad .setOnAction ((actionEvent -> {
83
85
statusLbl .setText ("" );
84
86
convertRegion .getStyleClass ().clear ();
85
87
convertRegion .getStyleClass ().add ("regionOneToSplit" );
86
- fileFolderLabelLbl .setText (resourceBundle .getString ("tabSplMrg_Txt_Folder" ));
87
88
selectFileFolderBtn .setText (resourceBundle .getString ("tabSplMrg_Btn_SelectFolder" ));
88
- fileFolderActualPathLbl .setText ("" );
89
- convertBtn .setDisable (true );
89
+ BlockListViewController .clear ();
90
90
}));
91
91
92
92
if (AppPreferences .getInstance ().getSplitMergeType () == 0 )
@@ -110,42 +110,36 @@ public void initialize(URL url, ResourceBundle resourceBundle) {
110
110
111
111
selectFileFolderBtn .setOnAction (actionEvent -> {
112
112
statusLbl .setText ("" );
113
+ List <File > alreadyAddedFiles = BlockListViewController .getItems ();
113
114
if (splitRad .isSelected ()) {
114
115
FileChooser fc = new FileChooser ();
115
116
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 ));
122
120
}
123
121
else
124
122
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 () )
127
125
return ;
128
- fileFolderActualPathLbl . setText ( fileFile . getAbsolutePath () );
126
+ this . BlockListViewController . addAll ( files );
129
127
}
130
128
else {
131
129
DirectoryChooser dc = new DirectoryChooser ();
132
130
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 ));
139
134
}
140
135
else
141
136
dc .setInitialDirectory (new File (System .getProperty ("user.home" )));
142
137
143
138
File folderFile = dc .showDialog (changeSaveToBtn .getScene ().getWindow ());
144
139
if (folderFile == null )
145
140
return ;
146
- fileFolderActualPathLbl . setText ( folderFile . getAbsolutePath () );
141
+ this . BlockListViewController . add ( folderFile );
147
142
}
148
- convertBtn .setDisable (false );
149
143
});
150
144
151
145
convertBtn .setOnAction (actionEvent -> setConvertBtnAction ());
@@ -192,7 +186,7 @@ public void notifyThreadStarted(boolean isStart, EModule type){ // todo: refacto
192
186
* */
193
187
private void stopBtnAction (){
194
188
if (smThread != null && smThread .isAlive ()) {
195
- smTask . cancel ();
189
+ smThread . interrupt ();
196
190
}
197
191
}
198
192
/**
@@ -209,9 +203,9 @@ private void setConvertBtnAction(){
209
203
}
210
204
211
205
if (splitRad .isSelected ())
212
- smTask = new SplitTask ( fileFolderActualPathLbl . getText (), saveToPathLbl .getText ());
206
+ smTask = new SplitMergeTaskExecutor ( true , BlockListViewController . getItems (), saveToPathLbl .getText ());
213
207
else
214
- smTask = new MergeTask ( fileFolderActualPathLbl . getText (), saveToPathLbl .getText ());
208
+ smTask = new SplitMergeTaskExecutor ( false , BlockListViewController . getItems (), saveToPathLbl .getText ());
215
209
smThread = new Thread (smTask );
216
210
smThread .setDaemon (true );
217
211
smThread .start ();
@@ -230,14 +224,16 @@ private void handleDragOver(DragEvent event){
230
224
* */
231
225
@ FXML
232
226
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 );
234
229
235
- if (fileDrpd .isDirectory ())
230
+ if (firstFile .isDirectory ())
236
231
mergeRad .fire ();
237
232
else
238
233
splitRad .fire ();
239
- fileFolderActualPathLbl .setText (fileDrpd .getAbsolutePath ());
240
- convertBtn .setDisable (false );
234
+
235
+ this .BlockListViewController .addAll (files );
236
+
241
237
event .setDropCompleted (true );
242
238
event .consume ();
243
239
}
0 commit comments