Fix a compiler warning

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
ImageJ launcher: handle versioned file names gracefully

We want to use the ImageJ updater and launcher in Fiji, and to be able
to use, say, javassist-1.16.1-GA.jar for the IJ1 patcher, the launcher
needs to wisen up a little when it comes to versioned file names.

This code is based on the code in the ImageJ updater and at least
the version pattern needs to stay synchronized.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Complete the javadocs for CheckSezpoz

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
CheckSezpoz: use the IteratorPlus

DRY.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Update the javassist version required by ij-legacy so Fiji can re-use it

Fiji's IJ1 patcher discovered a bug in javassist which we provided a fix
for (see http://developer.imagej.net/2011/10/17/art-debugging) that made
it into Javassist 1.15.0.GA. Let's just use the newest version anyway.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Updater: make sure we can handle Javassist's new version format, too

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Updater: re-instate command-line's gentle 'update' command

The 'update' command is actually not supposed to overwrite
locally-modified files... That's 'update-force's job.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Updater: Brown paper bag fix

This fixes a bug introduced in 34d01ebe(Updater: prefer the update site's
current versions to locally-cached ones). Basically, it would prevent any
shadowing (update sites overriding other update sites' files).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Updater: refactor the version merging from multiple update sites

Incidentally, this also fixes a subtle bug where file versions from
overridden update sites would not show up as previous versions.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Updater: do not print extra empty lines when warning about conflicts

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Updater: use LinkedHashSet where appropriate

This developer missed the LinkedHashSet when starting the Updater
project, and used LinkedHashMap to emulate it.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Updater: always update metadata from .jar files' pom.xml

... if they have one...

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Updater GUI: do not allow to edit descriptions that came from pom.xml

If the description was set from the pom.xml included in the .jar
file, do not allow editing, since it would not have the desired
effect anyway.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Updater GUI: do not show obsolete files

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Updater GUI: really scroll the file details to the top

There was a scrollRectToVisible() call that tried to do, but failed to
achieve the desired effect.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Updater GUI: offer the update sites filters right from the start

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Updater GUI: offer to move the files into place without restart

This is not the safest thing to do, as Java relies on the .jar files
being available in unchanged form. This was done so that older Windows
versions -- which were seriously limited in file descriptors --
would not run out of resources just because the class path contains
593 .jar files.

As a consequence, updating .jar files while they are in use can lead to
'funny' exceptions and even crashes.

Nevertheless, for people who know what they're doing (or think they
do), having the option of shooting yourself into your foot is nicer
than not to have it.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Updater GUI (sites dialog): keep the selection when toggling 'for update'

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Add a utility method for executing programs

Its initial purpose is to help the Updater with diff'ing local vs remote
file versions, but it is too useful to be hidden in ij-updater-core.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Updater: add a class to find out how the local files differ

When a file is marked locally-modified, it is often quite interesting
to see where those differences are exactly.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>