This proposal has been approved and the Eclipse SWTImageJ project has been created.
Visit the project page for the latest information and development.

Eclipse SWTImageJ

Wednesday, March 20, 2024 - 09:31 by Marcel Austenfeld
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the community. Please login and add your feedback in the comments section.
Parent Project
Proposal State
Created
Background

ImageJ is a powerful OpenSource scientific image processing and analysis software written in Java by Wayne Rasband and widely used across various scientific domains  (see References).

However, this software can not only be used as a standalone image application but can also serve as an image library for the purpose of embedding it into different scientific or non-scientific image applications.

The application is well known to researchers and interested people in the domain of image analysis around the world. Since the base application can easily be extended by plugins and macros in different languages a huge amount of OpenSource extensions for ImageJ already exists.

Since it’s long history the default Graphical User interface (GUI) is the AWT toolkit. While AWT has served ImageJ well, porting it to the Standard Widget Toolkit (SWT) offers several advantages, including a native look and feel across different Operating Systems, regular updates, an active development team and a well established organization dedicated to OpenSource.

A former port of the AWT interface to SWT_AWT (for embedding AWT/Swing applications in SWT) has already been created and is freely available as an Eclipse plugin (see https://marketplace.eclipse.org/content/imagej-plugin). However a pure SWT port simplifies the development efforts and avoids a lot of technical workarounds when dealing with embedded AWT/Swing applications.

This proposal outlines the porting of ImageJ to SWT, aiming to enhance user experience, increase usability, and fosters an improved plugin integration within Eclipse.

Scope

Eclipse SWTImageJ will port ImageJ to SWT to enhance its performance, usability, and integration within the Eclipse IDE, providing users with a more responsive and intuitive interface while ensuring compatibility with Eclipse's development environment.

  • Based on a popular OpenSource Scientific Image Analysis Framework with a long development history
  • Original software has a huge Image Analysis community
  • Can be used as a Desktop application but also a Java imaging library
  • Huge number of extensions available (plugins, scripts and macros)
Description

Introduction:

ImageJ is a versatile platform for image analysis, offering a broad range of functionalities through its scripting capabilities and extensive plugin ecosystem in the scientific domain. However, its reliance on AWT for the GUI presents limitations in terms of Graphical User Interface, platform compatibility, and user experience. Porting ImageJ to SWT,  an efficient modern Java GUI toolkit, can address these limitations and unlock new opportunities for plugin developers and users of scientific image applications.

Objective:

The primary objective of this proposal is to port ImageJ to SWT to enhance its performance, usability, and integration within the Eclipse IDE (a plugin using SWT/AWT already exists).

By leveraging the native capabilities of SWT, we aim to provide users with a more responsive and intuitive interface while ensuring compatibility with Eclipse's development environment.

The original software file structure (organization of the classfiles, sourcecode in packages and plugins, macros) should be preserved too, to ensure that existing ImageJ developers feel comfortable and motivated to improve and use the ported application.

Proposal:

1. SWT Integration: Polishing the rewrite of the graphical user interface of ImageJ using SWT, leveraging its native components and rendering capabilities. This will ensure better performance and a more consistent user experience across different operating systems.

2. Native Look and Feel: Utilize SWT's support for native widgets to ensure that ImageJ maintains the look and feel of the host operating system, enhancing its integration with the overall desktop environment.

3. Future Improved Performance: Take advantage of SWT's architecture and optimized event handling to improve the performance of ImageJ, especially when dealing with large datasets and complex image processing tasks.

4. Eclipse Integration: Ensure seamless integration of the SWT-based ImageJ with the Eclipse IDE, allowing users to leverage Eclipse's features for project management, version control, and collaborative development.

5. Compatibility and Accessibility: Ensure backward compatibility where it is possible with existing ImageJ macros,  plugins and functionalities while providing accessibility features to accommodate users with diverse needs and preferences.

6. User Experience Enhancements: Implement usability improvements and user interface enhancements to streamline common workflows and make ImageJ more intuitive and user-friendly.

7. Community Engagement: Engage with the ImageJ community to gather feedback, address concerns, and ensure that the ported version meets the needs and expectations of users and developers.

Expected Outcomes:

1. Enhanced performance and responsiveness of the ImageJ GUI through SWT integration.

2. Improved usability and user experience, leading to increased adoption and satisfaction among users.

3. Seamless integration with Eclipse, facilitating a more productive development workflow for researchers and practitioners.

4. Continued compatibility with existing macros plugins and functionalities where it is possible, ensuring a smooth transition for current ImageJ users.

Conclusion:

Porting ImageJ to SWT offers significant benefits in terms of performance, usability, and integration within the Eclipse IDE. By undertaking this porting effort, we aim to modernize ImageJ's graphical interface, improve its performance, and enhance its usability, ultimately empowering users to achieve more in their image analysis tasks.

Budget:

The porting budget has already been covered by the Lablicate GmbH for the development effort required for porting ImageJ to SWT, including software development, testing, documentation, and community engagement activities. Additional resources may be allocated for ongoing maintenance and support to ensure the long-term sustainability of the ported version.

 

References:

Rasband, W.S., ImageJ, U. S. National Institutes of Health, Bethesda, Maryland, USA, https://imagej.net/ij/, 1997-2018.

Schneider, C.A., Rasband, W.S., Eliceiri, K.W. "NIH Image to ImageJ: 25 years of image analysis". Nature Methods 9, 671-675, 2012. (This article is available online.)

Abramoff, M.D., Magalhaes, P.J., Ram, S.J. "Image Processing with ImageJ". Biophotonics International, volume 11, issue 7, pp. 36-42, 2004. (This article is available as a PDF.)

 

Why Here?

We seek approval from the relevant stakeholders and funding agencies to proceed with the ported ImageJ to SWT application within the Eclipse ecosystem. Your support and endorsement are beneficial for the success of this project and the advancement of ImageJ as a leading platform for image analysis and processing within the Eclipse ecosystem.

Future Work

Future work will be comprised of porting important AWT/Swing ImageJ plugins to SWT, the validation of analysis results of the software and the community built of possible users of the port.

Regular evaluation and feedback sessions will be conducted after the porting process to gather input from users and community members. This feedback will be used to iteratively refine the ported version and address any issues or concerns of the ported result.

Project Scheduling

The initial contribution is a complete port of the AWT ImageJ application to SWT. The latest updates are already implemented. Further updates of the original software will be integrated relatively promptly. A first release is to be expected within a year or earlier (finishing built structure and documentation).

Initial Contribution

The project of porting ImageJ to the SWT framework was funded by Lablicate (owner Philip Wenig).

The source of the original ImageJ application can be accessed here:
https://github.com/imagej/ImageJ

Most of the GUI and ImageJ API parts have been directly ported to SWT considering the original folder and package structure of the application (a familliar environment for ImageJ developers).
For some parts (selection API) the SWTGraphics2D library is used to convert Java2D to SWT graphics.

"SWTGraphics2D is an implementation of Java2D's Graphics2D API that targets an Eclipse Standard Widget Toolkit (SWT) graphics context, allowing the use of Java2D code in SWT applications."
Project lead David Gilbert thankfully dual-licensed it under the Eclipse Public License 2.0 after a request.

"SWTGraphics2D is free software under the terms of the GNU Lesser General Public License (LGPL) version 2.1 or later.
Please note that SWTGraphics2D is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Please refer to the license for details.

For some parts (editor, GUI elements) Draw2d and some Eclipse libraries are are already in use and integrated in the original ImageJ structure.
Additionally, the code is dual-licensed under the Eclipse Public License 2.0 (with the agreement of the main contributors: David Gilbert, Henry Proudhon and Cedric Chabanois)."

See: https://github.com/jfree/swtgraphics2d

Source Repository Type