@@ -143,32 +143,57 @@ public void componentResized(ComponentEvent e)
143143
144144 public void resetDivider ()
145145 {
146- sp .setResizeWeight (0.5 );
147- if (decompilers .get (1 ) != null && decompilers .get (0 ) != null )
148- sp = setDividerLocation (sp , 0.5 );
149- else if (decompilers .get (0 ) != null )
150- sp = setDividerLocation (sp , 1 );
151- else if (decompilers .get (1 ) != null )
146+ double paneCount = 0.0 ;
147+ for (int i = 0 ; i < decompilers .size (); i ++)
148+ if (decompilers .get (i ) != null )
149+ paneCount ++;
150+ if (paneCount == 3 )
152151 {
153- sp .setResizeWeight (1 );
154- sp = setDividerLocation (sp , 0 );
152+ // left split pane gets two thirds
153+ sp2 .setResizeWeight (2 / 3.0 );
154+ sp2 = setDividerLocation (sp2 , 2 / 3.0 );
155+ // left and right of left split pane share equally
156+ sp .setResizeWeight (0.5 );
157+ sp = setDividerLocation (sp , 0.5 );
155158 }
156- else
157- sp = setDividerLocation (sp , 0 );
158- if (decompilers .get (2 ) != null )
159+ else if (paneCount == 1 )
159160 {
160- sp2 .setResizeWeight (0.7 );
161- sp2 = setDividerLocation (sp2 , 0.7 );
162- if ((decompilers .get (1 ) == null && decompilers .get (0 ) != null ) || (decompilers .get (0 ) == null && decompilers .get (1 ) != null ))
163- sp2 = setDividerLocation (sp2 , 0.5 );
164- else if (decompilers .get (0 ) == null && decompilers .get (1 ) == null )
165- sp2 = setDividerLocation (sp2 , 0 );
161+ if (decompilers .get (2 ) != null )
162+ {
163+ // right split pane gets everything
164+ sp2 .setResizeWeight (0.0 );
165+ sp2 = setDividerLocation (sp2 , 0.0 );
166+ }
167+ else
168+ {
169+ // left split pane gets everything
170+ sp2 .setResizeWeight (1.0 );
171+ sp2 = setDividerLocation (sp2 , 1.0 );
172+ // left or right pane gets everything
173+ sp .setResizeWeight (decompilers .get (1 ) != null ? 0.0 : 1.0 );
174+ sp = setDividerLocation (sp , decompilers .get (1 ) != null ? 0.0 : 1.0 );
175+ }
166176 }
167177 else
168178 {
169- sp .setResizeWeight (1 );
170- sp2 .setResizeWeight (0 );
171- sp2 = setDividerLocation (sp2 , 1 );
179+ if (decompilers .get (2 ) == null )
180+ {
181+ // left split pane gets everything
182+ sp2 .setResizeWeight (1.0 );
183+ sp2 = setDividerLocation (sp2 , 1.0 );
184+ // left and right panes share equally
185+ sp .setResizeWeight (0.5 );
186+ sp = setDividerLocation (sp , 0.5 );
187+ }
188+ else
189+ {
190+ // left and right split panes share equally
191+ sp2 .setResizeWeight (0.5 );
192+ sp2 = setDividerLocation (sp2 , 0.5 );
193+ // left or right pane on left split pane gets everything
194+ sp .setResizeWeight (decompilers .get (1 ) == null ? 1.0 : 0.0 );
195+ sp = setDividerLocation (sp , decompilers .get (1 ) == null ? 1.0 : 0.0 );
196+ }
172197 }
173198 }
174199
0 commit comments