Skip to content

Commit 96b2a8d

Browse files
committed
Use icon provider in file column builder
1 parent 622a1eb commit 96b2a8d

2 files changed

Lines changed: 19 additions & 5 deletions

File tree

shellfx-dialogs/src/main/java/com/techsenger/shellfx/dialogs/file/FileChooserDialogFxView.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.techsenger.shellfx.dialogs.style.DialogIcons;
2828
import com.techsenger.shellfx.material.button.ResultButton;
2929
import com.techsenger.shellfx.material.icon.FontIconView;
30+
import com.techsenger.shellfx.material.icon.GenericFontIcon;
3031
import com.techsenger.shellfx.material.list.TextFieldColumnListCell;
3132
import com.techsenger.shellfx.material.style.Spacing;
3233
import com.techsenger.shellfx.material.style.StyleClasses;
@@ -42,6 +43,7 @@
4243
import java.util.Comparator;
4344
import java.util.List;
4445
import java.util.Map;
46+
import java.util.function.Function;
4547
import javafx.collections.FXCollections;
4648
import javafx.collections.ObservableList;
4749
import javafx.geometry.Pos;
@@ -219,6 +221,9 @@ protected void updateItem(T item, boolean empty) {
219221

220222
private AppearanceSettings settings;
221223

224+
private Function<T, GenericFontIcon<?>> iconProvider =
225+
(f) -> f.isDirectory() ? DialogIcons.DIRECTORY : DialogIcons.FILE;
226+
222227
public FileChooserDialogFxView() {
223228
super();
224229
}
@@ -348,6 +353,14 @@ public void setExtensionFilter(ExtensionFilter filter) {
348353
this.filterComboBox.getSelectionModel().select(filter);
349354
}
350355

356+
public Function<T, GenericFontIcon<?>> getIconProvider() {
357+
return iconProvider;
358+
}
359+
360+
public void setIconProvider(Function<T, GenericFontIcon<?>> iconProvider) {
361+
this.iconProvider = iconProvider;
362+
}
363+
351364
@Override
352365
protected Composer createComposer() {
353366
return new FileChooserDialogFxView.Composer();
@@ -372,7 +385,7 @@ protected void build() {
372385

373386
var columnBuilder = new FileColumnBuilder(settings.getRegularFont());
374387
this.fileColumnManager.registerColumnFactory(FileColumns.NAME, () -> {
375-
var column = columnBuilder.buildNameColumn(DialogIcons.DIRECTORY, DialogIcons.FILE);
388+
var column = columnBuilder.buildNameColumn(iconProvider);
376389
column.setEditable(false);
377390
column.setOnEditCancel(e -> {
378391
var file = (T) e.getOldValue();

shellfx-storage/src/main/java/com/techsenger/shellfx/storage/FileColumnBuilder.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import java.time.ZoneId;
2727
import java.time.format.DateTimeFormatter;
2828
import java.util.Comparator;
29+
import java.util.function.Function;
2930
import javafx.beans.property.ReadOnlyObjectWrapper;
3031
import javafx.scene.Node;
3132
import javafx.scene.control.TableCell;
@@ -49,8 +50,8 @@ public FileColumnBuilder(Font font) {
4950
*
5051
* @return
5152
*/
52-
public <F extends GenericFile> NamedTableColumn<F, F> buildNameColumn(GenericFontIcon<?> dirIcon,
53-
GenericFontIcon fileIcon) {
53+
public <F extends GenericFile> NamedTableColumn<F, F> buildNameColumn(Function<F, GenericFontIcon<?>>
54+
iconProvider) {
5455
var nameColumn = new NamedTableColumn<F, F>(FileColumns.NAME, "Name");
5556
nameColumn.setCellValueFactory(data -> new ReadOnlyObjectWrapper(data.getValue()));
5657
var converter = new FileStringConverter<F>();
@@ -87,11 +88,11 @@ protected void updateDisplay() {
8788
}
8889
}
8990

90-
private Node buildIcon(GenericFile file) {
91+
private Node buildIcon(F file) {
9192
if (file.getEntryType() == null) {
9293
return null;
9394
}
94-
return new FontIconView(file.isDirectory() ? dirIcon : fileIcon);
95+
return new FontIconView(iconProvider.apply(file));
9596
}
9697
});
9798
nameColumn.setComparator(Comparator.comparing(GenericFile::getName, String.CASE_INSENSITIVE_ORDER));

0 commit comments

Comments
 (0)