Thanks.
This is what I'm doing now and it works perfectly with minimum code added:
private static MyShell instance;
public MyShell()
{
if (instance == null)
{
instance = this;
..
.. whatever was in constructor originally..
..
}
else
instance.shell.setFocus();
}
Rich Kulp wrote:
You could simply have an instance variable for each dialog that can be
open only once at a time and have a different method for each dialog that
(a) checks if the instance variable is not-null and open, then just
give it focus
(b) if not then create the dialog, assign to the instance variable,
and open it.
That way you don't need a list that you would search through to see if
open because you already have to have special code to launch each one,
so just use the instance variable and find it directly.
Karan M G wrote:
Hello,
I am making my first SWT application which has a menu on the shell
and several dialogs and other shells which can all be opened by
clicking buttons, menu items, tree items etc. When a menu item is
clicked it opens up a dialog box. Now if I click the menu item again,
another instance of the same dialog will open up which is redundant
and possibly erroneous. Some of these dialogs are not necessarily
application modal (eg. About box, Welcome screen, Help etc.).
One way I can think of preventing a window from opening if already
open is keeping a list of opened shell/dialog in the primary UI
class and checking the list before opening the shell/dialog.
I want to know if there is a general way or a better way of solving
this.
Thanks,
Karan