Small file browser fixes [release]

This commit is contained in:
crschnick 2023-04-02 23:58:16 +00:00
parent 94a6b8d5cc
commit ea24d3e46e
7 changed files with 31 additions and 18 deletions

View file

@ -27,7 +27,6 @@ import javafx.scene.control.skin.TableViewSkin;
import javafx.scene.control.skin.VirtualFlow; import javafx.scene.control.skin.VirtualFlow;
import javafx.scene.input.DragEvent; import javafx.scene.input.DragEvent;
import javafx.scene.input.KeyCode; import javafx.scene.input.KeyCode;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.*; import javafx.scene.layout.*;
import java.time.Instant; import java.time.Instant;
@ -172,14 +171,8 @@ final class FileListComp extends AnchorPane {
table.pseudoClassStateChanged(DRAG_INTO_CURRENT, newValue); table.pseudoClassStateChanged(DRAG_INTO_CURRENT, newValue);
}); });
row.addEventHandler(MouseEvent.MOUSE_CLICKED, t -> {
listEntry.get().onMouseClick(t);
});
row.setOnMouseClicked(e -> { row.setOnMouseClicked(e -> {
if (e.getClickCount() == 2 && !row.isEmpty()) { listEntry.get().onMouseClick(e);
fileList.onDoubleClick(row.getItem());
}
}); });
row.setOnDragEntered(event -> { row.setOnDragEntered(event -> {

View file

@ -5,6 +5,7 @@ import javafx.geometry.Point2D;
import javafx.scene.Node; import javafx.scene.Node;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.scene.SnapshotParameters; import javafx.scene.SnapshotParameters;
import javafx.scene.control.TableView;
import javafx.scene.image.WritableImage; import javafx.scene.image.WritableImage;
import javafx.scene.input.*; import javafx.scene.input.*;
import lombok.Getter; import lombok.Getter;
@ -32,21 +33,41 @@ public class FileListCompEntry {
this.model = model; this.model = model;
} }
@SuppressWarnings("unchecked")
public void onMouseClick(MouseEvent t) { public void onMouseClick(MouseEvent t) {
t.consume();
if (item == null || isSynthetic()) { if (item == null || isSynthetic()) {
return; return;
} }
if (t.getClickCount() == 2 && t.getButton() == MouseButton.PRIMARY) {
model.onDoubleClick(item);
t.consume();
return;
}
if (t.getButton() == MouseButton.PRIMARY && t.isShiftDown()) {
var tv = ((TableView<FileSystem.FileEntry>) row.getParent().getParent().getParent().getParent());
var all = tv.getItems();
var start = tv.getSelectionModel().getSelectedItems().stream().mapToInt(entry -> all.indexOf(entry)).min().orElse(1);
var end = all.indexOf(item);
model.getSelected().setAll(all.subList(start, end + 1));
t.consume();
return;
}
if (currentContextMenu != null) { if (currentContextMenu != null) {
currentContextMenu.hide(); currentContextMenu.hide();
currentContextMenu = null; currentContextMenu = null;
t.consume();
return;
} }
if (t.getButton() == MouseButton.SECONDARY) { if (t.getButton() == MouseButton.SECONDARY) {
var cm = new FileContextMenu(model.getFileSystemModel(), item, model.getEditing()); var cm = new FileContextMenu(model.getFileSystemModel(), item, model.getEditing());
cm.show(row, t.getScreenX(), t.getScreenY()); cm.show(row, t.getScreenX(), t.getScreenY());
currentContextMenu = cm; currentContextMenu = cm;
t.consume();
return;
} }
} }

View file

@ -21,7 +21,7 @@ public interface FileIconFactory {
return null; return null;
} }
return Arrays.stream(endings).anyMatch(ending -> entry.getPath().endsWith(ending)) ? getIcon() : null; return Arrays.stream(endings).anyMatch(ending -> entry.getPath().toLowerCase().endsWith(ending.toLowerCase())) ? getIcon() : null;
} }
} }

View file

@ -7,10 +7,6 @@ import javafx.beans.property.SimpleStringProperty;
public class FileIcons { public class FileIcons {
public static PrettyImageComp createIcon(FileSystem.FileEntry entry) { public static PrettyImageComp createIcon(FileSystem.FileEntry entry) {
return new PrettyImageComp(new SimpleStringProperty(getIcon(entry)), 22, 22); return new PrettyImageComp(new SimpleStringProperty(FileIconManager.getFileIcon(entry, false)), 22, 22);
}
public static String getIcon(FileSystem.FileEntry entry) {
return FileIconManager.getFileIcon(entry, false);
} }
} }

View file

@ -389,7 +389,7 @@ lime | include.xml | file_type_lime.svg
lintstagedrc | .lintstagedrc, .lintstagedrc.json, .lintstagedrc.yaml, .lintstagedrc.yml, .lintstagedrc.mjs, .lintstagedrc.js, .lintstagedrc.cjs, lint-staged.config.mjs, lint-staged.config.js, lint-staged.config.cjs | file_type_lintstagedrc.svg lintstagedrc | .lintstagedrc, .lintstagedrc.json, .lintstagedrc.yaml, .lintstagedrc.yml, .lintstagedrc.mjs, .lintstagedrc.js, .lintstagedrc.cjs, lint-staged.config.mjs, lint-staged.config.js, lint-staged.config.cjs | file_type_lintstagedrc.svg
liquid | liquid | file_type_liquid.svg liquid | liquid | file_type_liquid.svg
livescript | ls | file_type_livescript.svg livescript | ls | file_type_livescript.svg
lnk | lnk | file_type_lnk.svg lnk | url, lnk | file_type_lnk.svg
locale | <sub></sub> | file_type_locale.svg locale | <sub></sub> | file_type_locale.svg
log | log, tlg | file_type_log.svg log | log, tlg | file_type_log.svg
log | log, tlg, log | file_type_log.svg log | log, tlg, log | file_type_log.svg
@ -604,7 +604,7 @@ sas | SAS | file_type_sas.svg
sass | sass | file_type_sass.svg sass | sass | file_type_sass.svg
sbt | sbt | file_type_sbt.svg sbt | sbt | file_type_sbt.svg
scala | scala | file_type_scala.svg scala | scala | file_type_scala.svg
script | vbscript | file_type_script.svg script | vbs, vbscript | file_type_script.svg
scss | scssm, scss | file_type_scss.svg scss | scssm, scss | file_type_scss.svg
scilab | scilab | file_type_scilab.svg scilab | scilab | file_type_scilab.svg
sdlang | sdl | file_type_sdlang.svg sdlang | sdl | file_type_sdlang.svg

3
dist/changelogs/0.5.31.md vendored Normal file
View file

@ -0,0 +1,3 @@
- Add file type icons to file browser
- Add shift-select ability to select range of files to file browser
- Fix some bugs

View file

@ -1 +1 @@
0.5.30 0.5.31