LegacyExtensions: make sure that the FolderOpener is patched properly

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

We will want to ask the ExprEditor whether it bothered to replace
any code.

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

This typo was introduced (most likely by typing 'i' in vi's "I beep"
mode once too many) in 77bc9519(ij-legacy: add "Convert to 8-bit
Grayscale" to File>Import>Image Sequence).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
LegacyExtensions: Fix overriding macro recorder's create macro

We want to initialize a Script Editor in that case, after all.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
CodeHacker: complain when code should have been replaced, but was not

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
CodeHacker: make it easier to debug 'No code replaced' issues

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
LegacyExtensions: Handle StartupMacros.fiji.ijm again

This developer thought that ImageJ 1.x learnt the trick to handle that
file, but it did not, at least not completely.

So let's revert the breakage introduced in Fiji's commit 10a7e737(No
longer patch ImageJ 1.x to know about StartupMacros.fiji.ijm).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Add a TODO note
CodeHacker: refactor custom ExprEditor

We will want to convert almost all of the anonymous ExprEditor
subclasses to verify that they actually patched some code.

Let's just reuse the work we did with the replaceCallInMethod()
function and generalize it further.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
CodeHacker: ensure that exception handlers were appropriately patched

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
CodeHacker: some style fixes

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
CodeHacker: ensure that replaceParameterInNew patched code

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
LegacyExtensions: Fix AppearanceOptions patching

The AppearanceOptions class superseded the Options#appearance()
method since ImageJ 1.46e. Oops.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
CodeHacker: ensure that replaceParameterInCall() patched code

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
CodeHacker: ensure that overrideFieldWrite() patched code

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
CodeHacker: ensure that handleHTTPS() patched code

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
AxisPositionHandler: remove superfluous priority
SystemInformation: dump all available plugins

The plugins are grouped by type, alphabetized by fully qualified class.

Also, since services are a type of plugin, we no longer need to
explicitly dump the services.
Avoid overspecifying plugin type

This makes it easier to understand (for both humans and machines) that a
particular plugin belongs to a certain class of plugins. In particular,
the System Information command can more easily group them together as
expected, without reporting many single-plugin types.

This also has the advantage of not loading the plugin classes themselves
until they actually need to be instantiated; SezPoz only needs to load
the plugin *types*, not the plugin *implementations*.
LegacyPluginFinder: make legacy plugins a subtype

They used to be typed as Command.class directly, but it is nice to type
them on LegacyCommand.class instead so that they can be easily
differentiated. In particular, it allows the System Information command
to group them separately.