Currently, the JExifManager application is undergoing a complete rework.

The JX3fExtract library, developed as part of the JExifManager project, is already available (see below).

JX3fExtract – ReadMe
lib-selectable-list-fx – For Java Developers

Current version: lib-selectable-list-fx 2.0

lib-selectable-list-fx is a Java module which provides an OpenJavaFX based list data structure which encapsulates list items with a selection state. The list type is based on javafx.collections.ObservableList and provides a selection change listening mechanism. The ListSelectionHandler type provides properties indicating the number of selected list items and all/nothing selected info. This works also through an optional transformation chain.

For more details see the overview page of the JavaDoc documentation.


lib-selectable-list-fx_2.0.tgz [SHA256 checksum]


lib-selectable-list-fx_1.0.tgz [SHA256 checksum]

lib-selectable-list-fx – ReadMe
lib-selectable-list-fx – ChangeLog
VCS Sync Tool

Current version: vcs-sync-tool 1.1

The script SynchronizeDirWithVcsWorkingCopy is a Java shebang script to synchronize a directory, which is under version control, with a new target state. Supported VCS are Subversion and Git.

The destination-directory contains a content under version control, and the source-directory contains a new version of the destination content. The script will update the destination-directory content using version control commands. There is also a dry-run option.


Vimdiff + Subversion

Vim can be used to diff Subversion revisions. There are simple solutions to wrap this functionality in an external script, but this involves a temporary file of a checked out version which has to be cleaned up.

It is however possible to implement this directly using a vim script. Add the following to your


function! DiffSvnBASE(svnrevision = 'BASE') let svnrev = expand('%') . '@' . a:svnrevision let syntax_src = &syntax " make this window part of diff, if it isn't already: if ! &diff exec 'diffthis' endif " create a new buffer for svn diff: exec 'vnew' exec 'diffthis' " make it a scratch buffer: exec 'setlocal' 'buftype=nowrite' exec 'setlocal' 'bufhidden=hide' exec 'setlocal' 'noswapfile' exec 'setlocal' 'syntax=' . syntax_src " append svn BASE version: exec 'read!' 'svn' 'cat' svnrev " delete empty line: exec '0delete' endfunction function! DiffSvnRevision() let svnrevision = input ('Diff with SVN revision : ') exec DiffSvnBASE(svnrevision) endfunction map <F5> <esc>:exec DiffSvnBASE()<cr> map <S-F5> <esc>:exec DiffSvnRevision()<cr>

ConcatCollection – For Java Developers

Current version: ConcatCollection 1.0

Developed as part of JChiffresFX 2.0, ConcatCollection is a lightweight Java Collection which provides an efficient concatenation for two instances of this type. At the time of this writing Collections provide concatenation only through Collection.addAll(collection) in O(n) time. The Collection is useful e.g. for accumulating partial results in the combine phase of RecursiveTasks, when subtasks return a collection of elements which are to be combined into one flat collection.

The characteristics of this implementation include the following:

  • It provides O(1) time concatenation.
  • It supports null values.
  • It is ordered (e.g. iterator() returns the elements in the order they were added).
  • It is not synchronized.
  • It is Cloneable and Serializable.
  • The iterator supports the Iterator.remove() operation in O(1) time.
  • The Spliterator is optimized for lower temporary memory usage compared to the default Spliterator. It is   ORDERED | SIZED | SUBSIZED.

You can view the javadoc online and download the Java source code and JUnit tests: