@@ -23,26 +23,36 @@ public abstract class JDAWindow extends JInternalFrame implements FileChangeNoti
2323 private String windowId ;
2424
2525 public Point unmaximizedPos ;
26- public Dimension unmaximizedSize ;
26+ public Dimension unmaximizedSize ; // unmaximized size for when JDA is maximized
27+ public Dimension smallUnmaxSize ; // unmaximized size for when JDA is unmaximized
2728
28- public JDAWindow (final String id , final String title , final Icon icon )
29+ protected final MainViewerGUI viewer ;
30+
31+ public JDAWindow (final String id , final String title , final Icon icon , final MainViewerGUI viewer )
2932 {
3033 super (title , true , true , true , true );
3134 windowId = id ;
3235 setName (title );
3336 setFrameIcon (icon );
3437 setDefaultCloseOperation (JInternalFrame .HIDE_ON_CLOSE );
38+ this .viewer = viewer ;
3539
3640 unmaximizedPos = getDefaultPosition ();
3741 unmaximizedSize = getDefaultSize ();
42+ smallUnmaxSize = unmaximizedSize ;
3843
3944 addComponentListener (new ComponentAdapter ()
4045 {
4146 @ Override
4247 public void componentResized (ComponentEvent e )
4348 {
4449 if (!isMaximum ())
45- unmaximizedSize = getSize ();
50+ {
51+ if (viewer .isMaximized )
52+ unmaximizedSize = getSize ();
53+ else
54+ smallUnmaxSize = getSize ();
55+ }
4656 super .componentResized (e );
4757 }
4858
@@ -58,12 +68,28 @@ public void componentMoved(ComponentEvent e)
5868 addPropertyChangeListener (evt -> {
5969 if (isNormalState ())
6070 {
61- setSize (unmaximizedSize );
71+ setSize (viewer . isMaximized ? unmaximizedSize : smallUnmaxSize );
6272 setLocation (unmaximizedPos );
6373 }
6474 });
6575 }
6676
77+ public void onJDAResized () {
78+ smallUnmaxSize = new Dimension (unmaximizedSize );
79+ Dimension d = getDesktopPane ().getSize ();
80+ if (unmaximizedPos .getX () + smallUnmaxSize .width > d .width )
81+ smallUnmaxSize .width = d .width - (int ) unmaximizedPos .getX ();
82+ if (unmaximizedPos .getY () + smallUnmaxSize .height > d .height )
83+ smallUnmaxSize .height = d .height - (int ) unmaximizedPos .getY ();
84+ if (isNormalState ())
85+ setSize (smallUnmaxSize );
86+ }
87+
88+ public void onJDAMaximized () {
89+ if (isNormalState ())
90+ setSize (unmaximizedSize );
91+ }
92+
6793 @ Override
6894 public abstract void openClassFile (final String name , String container , final ClassNode cn );
6995
@@ -139,6 +165,7 @@ public Dimension getPersistentSize()
139165 public void restoreSize (Dimension size )
140166 {
141167 unmaximizedSize = size ;
168+ smallUnmaxSize = size ;
142169 if (isNormalState ())
143170 {
144171 setPreferredSize (size );
0 commit comments