Skip to content

Commit 7fc7e4a

Browse files
committed
Fix pane resize bug
1 parent 565ab9c commit 7fc7e4a

File tree

1 file changed

+45
-20
lines changed

1 file changed

+45
-20
lines changed

src/main/java/the/bytecode/club/jda/gui/ClassViewer.java

Lines changed: 45 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)