August 29, 2008
August 15, 2008
Eidle 0.2 Release Canditate 2
The second candidate of the version 0.2 of Eidle is available. It includes all the functionality planned for 0.2. Since candidate 1, I added (basic) support for multi-monitor systems and further evolved the auto minesweeper.
The final release isn't far away and will probably not be too different from this candidate. So give it a try, and tell me what you think.
The final release isn't far away and will probably not be too different from this candidate. So give it a try, and tell me what you think.
May 16, 2008
Eidle 0.2 Release Canditate 1
I've just uploaded the first candidate for the upcoming Eidle release. So let me tell you what Eidle is all about.
Eidle is a screensaver framework based on EclipseRCP. As such it can easily be extended by your own animations. Currently, it comes with a 15-puzzle-like animation, a flashlight animation, an integrated browser, a picture presenter and a minesweeper autoplayer.
Eidle currently focuses on the integration into Windows, for which an installer is provided. I've also made some experiments on integrating it into EclipseRCP-based applications like the EclipseIDE or Lotus Notes8, but this probably won't make it into the next release.
Eidle is a screensaver framework based on EclipseRCP. As such it can easily be extended by your own animations. Currently, it comes with a 15-puzzle-like animation, a flashlight animation, an integrated browser, a picture presenter and a minesweeper autoplayer.
Eidle currently focuses on the integration into Windows, for which an installer is provided. I've also made some experiments on integrating it into EclipseRCP-based applications like the EclipseIDE or Lotus Notes8, but this probably won't make it into the next release.
May 14, 2008
Misleading names
My favorite misleading name these days: CM Synergy. If you were forced to use it you'll certainly know what I mean.
May 9, 2008
Plugin obfuscation with obfuscate4e
A new version of obfuscate4e is out the door. So let me tell you what it's all about.
Obfuscate4e helps you obfuscating your eclipse-plugins. It integrates ProGuard into the EclipseIDE and provides some functionality to ease the integration into the PDE build process. That means whenever you build your plugin (using plugin export, feature build or product build) it is obfuscated automatically.
There are quite a few reasons to obfuscate your plugins: smaller bundles and faster downloads, removing unused classes, hiding implementation details, ...
Even if you don't develop plugins, obfuscate4e has something to offer: it registers a proguard ant task you can use in your build scripts. But to leverage its full strength, consider converting your java project into a plugin project, even if you don't plan to use it in an OSGi environment.
Obfuscate4e comes currently in version 0.6, so it is not quite rock solid. And some knowledge of the ProGuard syntax is needed. But don't be afraid, it is not that tricky. So check it out, use it, and give us some feedback on how to improve it.
Obfuscate4e helps you obfuscating your eclipse-plugins. It integrates ProGuard into the EclipseIDE and provides some functionality to ease the integration into the PDE build process. That means whenever you build your plugin (using plugin export, feature build or product build) it is obfuscated automatically.
There are quite a few reasons to obfuscate your plugins: smaller bundles and faster downloads, removing unused classes, hiding implementation details, ...
Even if you don't develop plugins, obfuscate4e has something to offer: it registers a proguard ant task you can use in your build scripts. But to leverage its full strength, consider converting your java project into a plugin project, even if you don't plan to use it in an OSGi environment.
Obfuscate4e comes currently in version 0.6, so it is not quite rock solid. And some knowledge of the ProGuard syntax is needed. But don't be afraid, it is not that tricky. So check it out, use it, and give us some feedback on how to improve it.
September 26, 2007
Switching between languages at runtime
One of the requirements we have in our project is to support switching between different languages at runtime. To make this work in the RCP runtime, we decided to close the workbench window and open a new one when the language changes. This works quite well, especially since we have put all state data of the gui in separate models.
Another thing was how to handle data lazily loaded by the platform. For example, a view tab may be visible before the view is actually instanciated. The platform then uses the data (name) given in the extension definition of the view. But this is static, so it won't change if the language changes. We solved this by providing what we call ViewLocalizations via a custom extension point. The ViewLocalization resides in the same bundle as the view it belongs to and knows how to translate the view name. Our Presentation then uses the view localization to determine the right name for the view. Of course, a bundle should not be activated only because one of its ViewLocalizations is needed. Therefore, we put all the ViewLocalizations of a bundle in a separate package which we excluded from the lazyStart-mechanism.
This solution works quite well, but generates a considerable overhead. Especially since beside views, also perspectives, actions, etc. have to be handled this way. So if you have any ideas for improvements, please let me know.
Another thing was how to handle data lazily loaded by the platform. For example, a view tab may be visible before the view is actually instanciated. The platform then uses the data (name) given in the extension definition of the view. But this is static, so it won't change if the language changes. We solved this by providing what we call ViewLocalizations via a custom extension point. The ViewLocalization resides in the same bundle as the view it belongs to and knows how to translate the view name. Our Presentation then uses the view localization to determine the right name for the view. Of course, a bundle should not be activated only because one of its ViewLocalizations is needed. Therefore, we put all the ViewLocalizations of a bundle in a separate package which we excluded from the lazyStart-mechanism.
This solution works quite well, but generates a considerable overhead. Especially since beside views, also perspectives, actions, etc. have to be handled this way. So if you have any ideas for improvements, please let me know.
July 23, 2007
An extension is not an extension point
I'm currently working for a customer in an RCP project. There is a lot of work to be done and we are around a dozen of programmers actively contributing. A couple of weeks ago we had a strange problem.
One of the core plugins of the app defines an extension point which is actively used by other components. At some point these extensions were not loaded anymore. After quite some time of guessing we found that there was a new plugin using the extension point. But instead of defining an extension the developer (not really familiar with the Eclipse extension mechanism) had defined an extension point. He named it exactly as the existing one and used the original schema file by referencing it from the original core plugin. I was somewhat surprised that the framework did not complain about this duplication, but the main lesson to learn is certainly that there is some basic RCP mechanisms every developer should be familiar with before contributing.
One of the core plugins of the app defines an extension point which is actively used by other components. At some point these extensions were not loaded anymore. After quite some time of guessing we found that there was a new plugin using the extension point. But instead of defining an extension the developer (not really familiar with the Eclipse extension mechanism) had defined an extension point. He named it exactly as the existing one and used the original schema file by referencing it from the original core plugin. I was somewhat surprised that the framework did not complain about this duplication, but the main lesson to learn is certainly that there is some basic RCP mechanisms every developer should be familiar with before contributing.
Subscribe to:
Posts (Atom)
Blog Archive
About Me
- Volker
- codes for a living and also in his freetime, probably for lack of a real hobby. ;-)