fexp
View this project on GitHub.
This is a file explorer I started (and did most work on) in late 2017 when I wanted to learn Java. I had been doing some exercises from a book called Java In Easy Steps, which was useful and which I still use now as a reference for some things, but I decided that the best way to learn Java is to embark on a big project which was way beyond my capabilities at the time, and in doing so I'd learn Java as it is used in the real world. I think this principle applies to most things, to be honest, and it certainly worked here. If you look through the source code, you'll notice that it looks like it's been written by a novice - for example, there is no encapsulation and I had no knowledge of how to correctly use threads in Swing, so you may be sitting there yelling at me through your computer – in which case, I apologise. While publishing it I've looked at the code and realised how much more I know now than then, but we all have to start somewhere. One thing which this project made me aware of was the headache that is Swing layout managers, which I am only just beginning to use properly (as of BistoComm, which is the first project I did where I actually felt comfortable with using layout managers).
As with almost all of my projects, it is far from complete, but here are some of the features currently implemented:
- Navigation history
- Threaded image thumbnail loading
- Right-click context menu for operations such as copy and delete
- Hidden file toggling
- File opening capabilities using a MIME type associations file
Also, for future reference, the button with "@" on it is the reload button. I never got round to giving it an icon, and I decided that the @ symbol is close enough to a reload symbol for my current purposes.
The icons are from the Chicago95 theme.
Screenshots
To do
Settle down, here we go…
- Better filename text wrap (break at dashes, underscores, etc)
- Drag and drop items
- Hack together solution to "Move to rubbish bin" for platforms which aren't supported yet
- "Open with" dialog
- Tree view
- Settings
- Ask for authentication when accessing a file/directory with insufficient permissions
- Fix bug where previously selected and unselected files get reselected on mouseover
- Create default associations file automatically, or use the system's one
- Use system icons
- Use icons on buttons instead of text
- Avoid reloading entire view when file is created, renamed, pasted, deleted or hidden files are toggled
- Key bindings
- Display directories before files
- Use different icons for different MIME types
- Create device selection panel
- Consistent console and GUI output
- File property dialog
- Show thumbnail on hover if not yet loaded
- Update thumbnail when picture changed
- Command line arguments
- Include %s or similar when specifying command to run to open unassociated file to indicate where the argument is
- Preview pane
- Cache thumbnails
- Load subdirectory thumbnails in background
- Prompt when duplicates found when renaming, copying or moving
- Avoid renaming to "null" if rename operation is cancelled