What's the Best Approach for Menus and Dialogs in Webstart Apps?

Started by Nodin, January 05, 2009, 07:46:52 PM

Previous topic - Next topic

Nodin

Hi All,

I'm wondering, what's the best approach for programming dialogs and menus to use with jPCT in webstart apps?  I'd like to be able to use a custom skin and use transparency... modal and non-modal,...

Thanks!


paulscode

The simplest way is to use Swing components, however that only works well when using jPCT in Software rendering mode.  What I am doing in my MapMaker program to work in both Hardware and Software rendering modes, is to use Overlays (and menu components that I programmed myself).  That route, however, is much more involved.  I am relatively new to jPCT myself, though, so these may not be your only two options.

Nodin

Thanks!   What do you mean when you say overlay?  Do you mean creating and displaying an image and then detecting mouse clicks on it in specific areas?

paulscode

Quote from: Nodin on January 06, 2009, 02:56:08 AM
What do you mean when you say overlay?  Do you mean creating and displaying an image and then detecting mouse clicks on it in specific areas?
I meant that I am using jPCT's 'Overlay' class, which is used to create transparent or opaque 2D layers on top of the 3D scene.  As for the mouse clicks and all, what I did for that was to create a base MenuComponent class from which I extended everything like windows, buttons, etc.  The MenuComponents are managed from a MenuManager class, which handles things like focus, etc., and sends the MouseEvents to the proper MenuComponent.  This option is, of course, considerably more involved, but much more customizable.

EgonOlsen

There's also https://fenggui.dev.java.net/. I've never tried it myself except for some test cases, but it should work in combination with jPCT. I've no idea if it's still actively being developed or not though.
Which renderer are you using?

Nodin

Thanks!  I need to look at overlays. I have been experimenting with having the option of both hardware or software rendering, so I've been looking at a solution for both for general menus.  I found a very cool demo that blits invisible swing components to the screen, and preserves their mouse events, but it doesn't seem readily adaptable. (Google swingle)  I did try getting it to blit a texture, but I'm not too good with bytebuffers...  It could be pretty cool to be able to blit a swing component to a texture.  It would open up use of all swing components.

It would be great to have some kind of menu library that can handle all sorts of things like dialogs, windows and chat boxes ect...it seems fengui isn't out there anymore.




paulscode

The idea of blitting swing components onto a texture sounds really interesting.  Be sure to post an update if you manage to get it to work - I'd love to see the source code for that!

Nodin

I've started making dialogs with overlays.  Is there something I'm missing about using transparency with overlays?  I can't seem to make it happen in hw/sw modes.  Transparent textures in 3Dobjects do work fine...

Basically, I'm just creating the texture with something like;

Texture texture = new Texture(image,useAlpha);

and I've tried adding textureInfo to the effect of;

ti.add(textureID,TextureInfo.MODE_ADD);

For the moment I'm manually tracking overlay depth(z-order) while testing, and everything is 1f apart.  (I will make a depthmananger soon...)

My efforts so far give me overlays, but they all seem to jiggle on the screen x-axis abit, and transparency isn't working.

Tips appreciated!


Nodin

setTransparency(0) seems to do the trick for hw rendering at least,...

Nodin

I've discovered my graphic was also messed up, and switched to png with no problems.