OpenChrom 1.0.0 “Aston” Preview

I proudly announce the preview release of OpenChrom 1.0.0 “Aston”.
Some new data converters and a lot of improvements have been added. Stay tuned.

OpenChrom 1.0.0 Preview

Posted in Uncategorized | 2 Comments

Eclipse Hackathon Hamburg – Greetings

Yesterday, we had our second Eclipse Hackathon in Hamburg, Germany. It was a great meeting :-).


Stay tuned, the next Hackathon will be in approx. three month.

Posted in Uncategorized | 1 Comment

Setting profiles in the preferences dialog

I wondered if it’s possible to allow users to work with different profile settings. That would be beneficial, cause users then don’t have to remember different plug-in settings for various analytical scenarios. Eclipse offers to export/import *.epf files, hence there should be a way to automate this. Here’s the solution:


The preference service allows to export the currently used preferences:

public static void exportProfile(File file, IPreferenceFilter[] preferenceFilters) throws FileNotFoundException, CoreException {

	FileOutputStream fileOutputStream = new FileOutputStream(file);
	IPreferencesService preferencesService = Platform.getPreferencesService();
	preferencesService.exportPreferences(preferencesService.getRootNode(), preferenceFilters, fileOutputStream);

Importing stored preferences works similarly:

public static IStatus importProfile(File file) throws FileNotFoundException, CoreException {

	FileInputStream fileInputStream = new FileInputStream(file);
	IPreferencesService preferencesService = Platform.getPreferencesService();
	return preferencesService.importPreferences(fileInputStream);

It depends on you where to store the preference profiles. There’s only a small drawback when loading a profile within the preferences dialog. All pages are displaying the old and not updated profile values. Hence, the dialog needs to be restarted. This can be automated too from within a page.

IPreferencePageContainer preferencePageContainer = getContainer();
if(preferencePageContainer instanceof PreferenceDialog) {
	PreferenceDialog preferenceDialog = (PreferenceDialog)preferencePageContainer;
	preferenceDialog = PreferencesUtil.createPreferenceDialogOn(null, null, null, null);;

The more better it would be reload all page values without re-opening the preference dialog. But I didn’t find a way how to do it. Anyhow, it works so far.

Posted in Uncategorized | Leave a comment

Eclipse Hackathon Hamburg – 2015/04/24


the next Eclipse Hackathon will be in Hamburg, Germany soon :-). Feel free to join:

Posted in Uncategorized | Leave a comment

It’s the table sorter stupid

Today, I just trapped into those pitfalls where thinking in terms of complexity fails. I got the following error message when sorting entries of a JFace TableViewer:

!MESSAGE Workaround for comparator violation:
    - set system property java.util.Arrays.useLegacyMergeSort=true
    - use a 1.6 JRE
message: Comparison method violates its general contract!

Here’s a part of the stack trace:

java.lang.IllegalArgumentException: Comparison method violates its general contract!
    at java.util.TimSort.mergeLo(
    at java.util.TimSort.mergeAt(
    at java.util.TimSort.mergeCollapse(
    at java.util.TimSort.sort(
    at java.util.TimSort.sort(
    at java.util.Arrays.sort(
    at org.eclipse.jface.viewers.ViewerComparator.sort(

I thought that something with the TableViewer is wrong, … or with the data, … or with the label provider, … or with the content provider. Finally, I had a look at the sort algorithm:

int sortOrder = 0;
int size2 = result2.size();
int size1 = result1.size();
sortOrder = (size2 > size1) ? 1 : -1;

If size2 and size1 are the same it crashes, cause 0 shall be returned but in all cases -1 was returned. The following fix made it work.

int sortOrder = 0;
int size2 = result2.size();
int size1 = result1.size();
if(size2 != size1) {
	sortOrder = (size2 > size1) ? 1 : -1;

Stupid little mistake :-)!

Posted in Uncategorized | 2 Comments

Eclipse meets Europe

Foto (C) by Dany Gellert

But Hamburg got foggy again … 😦

Posted in Uncategorized | Leave a comment

Gimp 2.8 – Eclipse Splash

I was wondering why the splash screen is not visible anymore after using Gimp 2.8 to create the *.bmp file. It’s the color profile option that needs to be deactivated. Here’s the workflow:

Create a splash design with Inkscape:

Width: 455 px
Height: 295 px

Export the design to *.png format (90 dpi).

Splash Inkscape

Then open the *.png file with Gimp and export it to *.bmp format.

Splash Gimp

Use the options:

> Don’t write color information
24 Bit
> R8 G8 B8

That’s it :-).

Posted in Uncategorized | Leave a comment

Eclipse Hackathon 2015/01 – Hamburg

We had our first 2015 Eclipse Hackathon last friday in Hamburg. The next one will follow approximately in April.


It was a great meeting and I’d like to encourage others to do the same :-).

Posted in Uncategorized | Leave a comment

OSGi “visibility:=reexport” directive

After removing some “visibility:=reexport” directives in my plugins, my workspace crashed as hell. The Eclipse problems view and the error messages where also quite confusing and misleading. Anyhow, I managed to fix all issues after investing some hours of work. I decided to import all needed dependencies in the MANIFEST.MF directly from now on. Furthermore, I decided to not use the “visibility:=reexport” directive anymore.

How are your experiences?

Posted in Uncategorized | 5 Comments

Eclipse Hackathon Hamburg – 2015/01

Folks, it’s time for our next Eclipse Hackathon in Hamburg, Germany!

2015/01/23, 17:30
Hapag-Lloyd AG
Rosenstraße 17
20095 Hamburg

Eclipse is a community-driven platform! Don’t miss to join the event! Food and beverages are supplied too!

Posted in Uncategorized | Leave a comment