Contributions To the Free World: FreeHost3270
At work we’re building a project using the FreeHost3270 project. It’s an open source (LGPL licensed) terminal emulator for java.
I think I’ve mentioned it before on this little site of mine.
Well, it appears that now I’m on the development team for the actual project. See, there’s some rather important things missing from the JTerminalScreen component, and I’m working on implementing them — at work, and contributing my changes back to the mainline project (as much as can be, anyhow). The parts I can’t commit back up, I’m abstracting out and providing default stubs that will let other people do what they really need. By doing this, we’re able to make all our changes to FreeHost3270 public, but keep our own property secret… well, as secret as a government contractor that goes through -regular- security audits by oversight committees (internal and external) can.
On the bright side, this is what I’m sure is going to be added to FreeHost3270:
* A “ColorMap” to allow the JTerminalScreen colors to be customized.
* A “KeyMap” that allows individual keyboard events to be mapped to alternates. This also adds basic macro support.
* JTerminalScreen will be fully resizable. The display will scale somewhat gracefully when the parent container is resized. This has been a royal pain, and is resulting in me having to rewrite the guts of the screen rendering engine.
* All graphics functions happen in a possibly hardware accelerated VolatileImage, and are blit to screen with a single draw.
* All coordinates are calculated using Java2D objects, with a minimum precision of double, rather than int.
* The screen is no longer fixed to 80 columns, or 24 rows. Rather, it will determine it’s character ‘grid’ based upon the underlying terminal stream.
* There are no more hard-coded magical values in the graphics code.
* Options for rendering (like margins, vertical font scaling, etc.) can be set at run-time on the component.
* The whole component is far, far cleaner.
At least, that’s what I’m planning on adding right now, and what I’ve been working on today.
