public void activateFrame(JInternalFrame frame)
{
JDesktopPane p = frame.getDesktopPane();
-
+ JInternalFrame active = null;
if (p != null)
- p.setSelectedFrame(frame);
- else
+ active = p.getSelectedFrame();
+ if (active == null)
{
- try
+ if (p != null)
{
- frame.setSelected(true);
+ p.setSelectedFrame(frame);
}
- catch (PropertyVetoException e)
+ }
+ else if (active != frame)
+ {
+ if (active.isSelected())
{
- // Do nothing if attempt is vetoed.
+ try
+ {
+ active.setSelected(false);
+ }
+ catch (PropertyVetoException ex)
+ {
+ // Not allowed.
+ }
}
+ if (p != null)
+ {
+ p.setSelectedFrame(frame);
+ }
+
}
-
frame.toFront();
}