It was long time ago when I wanted to try to learn Java. I was playing with 2D libraries in Java. And it was so easy and entertaining that I decided to create this application using the code I wrote during that playing with 2D.
However, as usually, it turned out to be very time consuming and not so easy to fully finish everything.. Source code has currently more than 30 000 lines of code and there are still many outstanding "nice to have" features..
SDM is very old project and when I started writing the code I did not know Java language almost at all so don't try :-) to assess the code quality (if you would decide to decompile it). Everything is based on Java 6 so no lambdas, streams, etc. (plus my almost no Java knowledge at that time).
Moreover the code of sdm.jar is obfuscated. I hope everything will work correctly as in not obfuscated version.
The obfuscation itself was quite difficult task. There is (was) no non-commercial obfuscator that would be able to reliably create obfuscated and runnable jar file out of original sdm.jar. At the end, I used yguard but the obfuscated jar file always failed to start. I found what is missing and wrote my own application (in C++ using my stlib :-) that does the missing work on the obfuscated jar..
The application is written in old NetBeans using Swing Application Framework (JSR-296). After it was decided by some committee to abandon SAF and not to integrate it to JDK - and SAF was instantly removed from NetBeans (it was literally brutal from NetBeans team) I completely stopped to develop SDM. However I broke this decision several times and wrote significant amount of code even later. The only good thing is that SAF still suprisingly works out on all JREs from 6 to latest 9 (early access preview version at the time of writing this).
Just for this web presentation - I have taken the old (several years untouched code) from my repository, I have changed copyrights to 2016, added few new types from PostgreSQL 9.5 and run it on the preview version of Java 9. Of course, everything done in prehistoric version of NetBeans 6.8. There is no other way how to work on it. The SAF support was completely removed after NetBeans 7.0.1.