Skip to content

Commit cd779a7

Browse files
committed
add ability to load folders and list them
1 parent 4c847f9 commit cd779a7

File tree

4 files changed

+127
-17
lines changed

4 files changed

+127
-17
lines changed

src/main/java/de/zocker160/adk/analyzer/binanalyzer/MainWindow.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,12 @@ protected static String openFile() {
5252

5353
File file = fileChooser.showOpenDialog(stage);
5454

55+
return openFile(file);
56+
}
57+
58+
protected static String openFile(File file) {
59+
System.out.println("Loading file: "+file.getAbsolutePath());
60+
5561
BinFile binFile = BinFile.loadFile(file);
5662
data = binFile;
5763

@@ -73,6 +79,7 @@ protected static String openFile() {
7379
return file.getName();
7480
}
7581

82+
7683
protected static void saveToFile() {
7784
if (data == null) return;
7885
saveUiData();

src/main/java/de/zocker160/adk/analyzer/binanalyzer/MainWindowController.java

Lines changed: 59 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,22 @@
11
package de.zocker160.adk.analyzer.binanalyzer;
22

3+
import de.zocker160.adk.analyzer.binanalyzer.utils.ListFile;
34
import javafx.fxml.FXML;
45
import javafx.scene.control.*;
56
import javafx.scene.effect.ImageInput;
67
import javafx.scene.layout.GridPane;
78
import javafx.scene.layout.VBox;
9+
import javafx.stage.DirectoryChooser;
810
import javafx.stage.FileChooser;
911

12+
import javax.swing.filechooser.FileFilter;
13+
import javax.swing.filechooser.FileNameExtensionFilter;
1014
import java.io.File;
15+
import java.io.FilenameFilter;
1116

1217
public class MainWindowController {
1318
@FXML private Label filenameLabel;
19+
@FXML private Label messageLabel;
1420

1521
// Global ---
1622

@@ -22,7 +28,9 @@ public class MainWindowController {
2228
@FXML protected TextField fogStart;
2329
@FXML protected TextField fogEnd;
2430

25-
@FXML private ListView<String> zonesList;
31+
@FXML private ListView<ListFile> filesList;
32+
@FXML private Label directoryLocation;
33+
2634
@FXML private GridPane dataGrid;
2735
@FXML private Slider testSlider;
2836

@@ -58,12 +66,61 @@ public class MainWindowController {
5866
@FXML protected TextField radiusEndZone;
5967

6068
@FXML
61-
protected void onOpenFile() {
69+
protected void openFile() {
6270
try {
6371
String filename = MainWindow.openFile();
6472
filenameLabel.setText(filename);
73+
6574
dataGrid.setDisable(false);
75+
filesList.getItems().clear();
76+
directoryLocation.setText("<no folder selected>");
77+
78+
} catch (NullPointerException ignore) {}
79+
}
80+
81+
@FXML
82+
protected void openFileFromList() {
83+
ListFile file = filesList.getSelectionModel().getSelectedItem();
84+
85+
try {
86+
String filename = MainWindow.openFile(file);
87+
filenameLabel.setText(filename);
88+
dataGrid.setDisable(false);
89+
90+
} catch (NullPointerException ignore) {}
91+
}
92+
93+
@FXML
94+
protected void openFolder() {
95+
var dirChooser = new DirectoryChooser();
96+
var filter = new FilenameFilter() {
97+
@Override
98+
public boolean accept(File dir, String name) {
99+
return name.endsWith(".bin");
100+
}
101+
};
102+
103+
dirChooser.setTitle("Select directory containing BIN files");
104+
File binDir = dirChooser.showDialog(MainWindow.getStage());
105+
106+
try {
107+
filesList.getItems().clear();
108+
109+
for (File file : binDir.listFiles(filter)) {
110+
System.out.println(file);
111+
filesList.getItems().add(new ListFile(file));
112+
}
113+
directoryLocation.setText(binDir.getName());
66114

115+
} catch (NullPointerException ignore) {
116+
return;
117+
}
118+
}
119+
120+
@FXML
121+
protected void saveFile() {
122+
try {
123+
MainWindow.saveToFile();
67124
} catch (NullPointerException ignore) {}
68125
}
69126

@@ -82,13 +139,6 @@ protected void saveFileAs() {
82139
} catch (NullPointerException ignore) {}
83140
}
84141

85-
@FXML
86-
protected void saveFile() {
87-
try {
88-
MainWindow.saveToFile();
89-
} catch (NullPointerException ignore) {}
90-
}
91-
92142
public void saveAndSetZone(int i) {
93143
MainWindow.saveZone(currentZone);
94144
setZone(i);
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package de.zocker160.adk.analyzer.binanalyzer.utils;
2+
3+
import java.io.File;
4+
import java.net.URI;
5+
6+
public class ListFile extends File {
7+
8+
public ListFile(File file) {
9+
super(file.getAbsolutePath());
10+
}
11+
12+
public ListFile(String pathname) {
13+
super(pathname);
14+
}
15+
16+
public ListFile(String parent, String child) {
17+
super(parent, child);
18+
}
19+
20+
public ListFile(File parent, String child) {
21+
super(parent, child);
22+
}
23+
24+
public ListFile(URI uri) {
25+
super(uri);
26+
}
27+
28+
@Override
29+
public String toString() {
30+
return getName();
31+
}
32+
33+
public String toFullString() {
34+
return super.toString();
35+
}
36+
}

src/main/resources/de/zocker160/adk/analyzer/binanalyzer/mainWindow.fxml

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,15 @@
1818
<?import javafx.scene.paint.Color?>
1919
<?import javafx.scene.text.Font?>
2020

21-
<SplitPane dividerPositions="0.26224328593996843" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="549.0" prefWidth="717.0" xmlns="http://javafx.com/javafx/17" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.zocker160.adk.analyzer.binanalyzer.MainWindowController">
21+
<SplitPane dividerPositions="0.3" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="549.0" prefWidth="717.0" xmlns="http://javafx.com/javafx/17" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.zocker160.adk.analyzer.binanalyzer.MainWindowController">
2222
<items>
2323
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0">
2424
<children>
2525
<VBox alignment="TOP_CENTER" prefHeight="392.0" prefWidth="76.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
2626
<children>
27-
<ListView />
28-
<Label fx:id="filenameLabel" alignment="CENTER" prefHeight="25.0" prefWidth="161.0" text="&lt;no file selected&gt;">
27+
<Label fx:id="directoryLocation" alignment="CENTER" contentDisplay="RIGHT" text="&lt;no directory selected&gt;" textAlignment="RIGHT" />
28+
<ListView fx:id="filesList" onMouseClicked="#openFileFromList" />
29+
<Label fx:id="filenameLabel" alignment="CENTER" prefHeight="25.0" text="&lt;no file selected&gt;" VBox.vgrow="ALWAYS">
2930
<VBox.margin>
3031
<Insets />
3132
</VBox.margin>
@@ -35,15 +36,15 @@
3536
</Label>
3637
<HBox alignment="CENTER" spacing="10.0">
3738
<children>
38-
<Button mnemonicParsing="false" onAction="#onOpenFile" prefHeight="25.0" prefWidth="80.0" text="Open..">
39+
<Button mnemonicParsing="false" onAction="#openFile" prefHeight="25.0" prefWidth="80.0" text="Open..">
3940
<HBox.margin>
4041
<Insets />
4142
</HBox.margin>
4243
<padding>
4344
<Insets left="10.0" right="10.0" />
4445
</padding>
4546
</Button>
46-
<Button disable="true" mnemonicParsing="false" prefHeight="25.0" prefWidth="80.0" text="...">
47+
<Button mnemonicParsing="false" onAction="#openFolder" prefHeight="25.0" prefWidth="100.0" text="Open Dir..">
4748
<HBox.margin>
4849
<Insets />
4950
</HBox.margin>
@@ -63,7 +64,7 @@
6364
<Insets left="10.0" right="10.0" />
6465
</padding>
6566
</Button>
66-
<Button mnemonicParsing="false" onAction="#saveFileAs" prefHeight="25.0" prefWidth="80.0" text="Save as..">
67+
<Button mnemonicParsing="false" onAction="#saveFileAs" prefHeight="25.0" prefWidth="100.0" text="Save as..">
6768
<HBox.margin>
6869
<Insets />
6970
</HBox.margin>
@@ -76,6 +77,22 @@
7677
<Insets top="10.0" />
7778
</padding>
7879
</HBox>
80+
<Separator prefWidth="200.0">
81+
<opaqueInsets>
82+
<Insets />
83+
</opaqueInsets>
84+
<padding>
85+
<Insets top="5.0" />
86+
</padding>
87+
</Separator>
88+
<Label fx:id="messageLabel" text="ready">
89+
<padding>
90+
<Insets top="10.0" />
91+
</padding>
92+
<font>
93+
<Font size="11.0" />
94+
</font>
95+
</Label>
7996
</children>
8097
</VBox>
8198
</children>
@@ -91,7 +108,7 @@
91108
<Font size="15.0" />
92109
</font>
93110
</Label>
94-
<GridPane fx:id="dataGrid" alignment="CENTER" vgap="1.0">
111+
<GridPane fx:id="dataGrid" alignment="CENTER" disable="true" vgap="1.0">
95112
<columnConstraints>
96113
<ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" percentWidth="40.0" />
97114
<ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
@@ -160,7 +177,7 @@
160177
<Button fx:id="nextZoneButton" mnemonicParsing="false" onAction="#selectNextZone" text="&gt;" />
161178
</children>
162179
</HBox>
163-
<GridPane fx:id="zoneGrid" alignment="CENTER" layoutX="10.0" layoutY="31.0" vgap="1.0">
180+
<GridPane fx:id="zoneGrid" alignment="CENTER" disable="true" layoutX="10.0" layoutY="31.0" vgap="1.0">
164181
<columnConstraints>
165182
<ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" percentWidth="40.0" />
166183
<ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />

0 commit comments

Comments
 (0)