Skip to content

Commit 22c1b43

Browse files
committed
Add window controls to VisibleComponents, save their state too
Write the worst code in the history of mankind
1 parent ac0fcb0 commit 22c1b43

File tree

5 files changed

+85
-19
lines changed

5 files changed

+85
-19
lines changed

src/main/java/the/bytecode/club/jda/Resources.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ public class Resources
3636
public static ImageIcon decodedIcon = new ImageIcon(Resources.class.getClass().getResource("/decoded.png"));
3737
public static ImageIcon javaIcon = new ImageIcon(Resources.class.getClass().getResource("/java.png"));
3838

39+
public static ImageIcon fileNavigatorIcon = new ImageIcon(Resources.class.getClass().getResource("/icon.png"));
40+
public static ImageIcon workPaneIcon = new ImageIcon(Resources.class.getClass().getResource("/icon.png"));
41+
3942
public static ArrayList<BufferedImage> iconList;
4043
public static BufferedImage icon;
4144

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,12 +155,12 @@ else if (ke.getKeyCode() == KeyEvent.VK_ESCAPE)
155155

156156
public FileNavigationPane(final FileChangeNotifier fcn)
157157
{
158-
super("ClassNavigation");
158+
super("ClassNavigation", "File Navigator", Resources.fileNavigatorIcon);
159+
159160
this.fcn = fcn;
160161
tree.setRootVisible(false);
161162
tree.setShowsRootHandles(true);
162163
quickSearch.setForeground(Color.gray);
163-
setTitle("Files");
164164
setMinimumSize(new Dimension(200, 50));
165165

166166
this.open.addActionListener(e -> {

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

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
import javax.swing.*;
77
import java.awt.*;
8+
import java.awt.event.ComponentAdapter;
9+
import java.awt.event.ComponentEvent;
810

911
/**
1012
* Used to represent all the panes inside of Bytecode Viewer, this is temp code
@@ -18,12 +20,44 @@ public abstract class VisibleComponent extends JInternalFrame implements FileCha
1820
{
1921
private String windowId;
2022

21-
public VisibleComponent(final String title)
23+
public Point unmaximizedPos;
24+
public Dimension unmaximizedSize;
25+
26+
public VisibleComponent(final String id, final String title, final Icon icon)
2227
{
23-
super(title, false, false, false, false);
24-
windowId = title;
25-
this.setFrameIcon(null);
26-
setResizable(true);
28+
super(title, true, true, true, true);
29+
windowId = id;
30+
setFrameIcon(icon);
31+
32+
unmaximizedPos = getLocation();
33+
unmaximizedSize = getSize();
34+
35+
addComponentListener(new ComponentAdapter()
36+
{
37+
@Override
38+
public void componentResized(ComponentEvent e)
39+
{
40+
if (!isMaximum())
41+
unmaximizedSize = getSize();
42+
super.componentResized(e);
43+
}
44+
45+
@Override
46+
public void componentMoved(ComponentEvent e)
47+
{
48+
if (!isMaximum())
49+
unmaximizedPos = getLocation();
50+
super.componentMoved(e);
51+
}
52+
});
53+
54+
addPropertyChangeListener(evt -> {
55+
if (!isMaximum() && !isIcon())
56+
{
57+
setSize(unmaximizedSize);
58+
setLocation(unmaximizedPos);
59+
}
60+
});
2761
}
2862

2963
@Override

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import org.objectweb.asm.tree.ClassNode;
44
import the.bytecode.club.jda.FileChangeNotifier;
55
import the.bytecode.club.jda.JDA;
6+
import the.bytecode.club.jda.Resources;
67

78
import javax.swing.*;
89
import java.awt.*;
@@ -36,8 +37,7 @@ public class WorkPane extends VisibleComponent implements ActionListener
3637

3738
public WorkPane(final FileChangeNotifier fcn)
3839
{
39-
super("WorkPanel");
40-
setTitle("Work Space");
40+
super("WorkPanel", "Work Space", Resources.fileNavigatorIcon);
4141

4242
this.tabs = new JTabbedPane();
4343
this.fcn = fcn;

src/main/java/the/bytecode/club/jda/settings/Settings.java

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import javax.swing.*;
1010
import java.awt.*;
11+
import java.beans.PropertyVetoException;
1112
import java.io.FileOutputStream;
1213
import java.io.FileReader;
1314
import java.util.HashMap;
@@ -72,14 +73,25 @@ public static void saveFrame(JsonObject windowsSection, Component f, String name
7273

7374
JsonObject windowSettings = windowsSection.get(name).asObject();
7475
boolean jda = name.equals("JDA");
75-
Point pos = jda ? JDA.viewer.unmaximizedPos : f.getLocation();
76-
Dimension size = jda ? JDA.viewer.unmaximizedSize : f.getSize();
76+
Point pos = jda ? JDA.viewer.unmaximizedPos : ((VisibleComponent) f).unmaximizedPos;
77+
Dimension size = jda ? JDA.viewer.unmaximizedSize : ((VisibleComponent) f).unmaximizedSize;
7778
windowSettings.add("x", pos.x);
7879
windowSettings.add("y", pos.y);
7980
windowSettings.add("width", size.width);
8081
windowSettings.add("height", size.height);
8182
if (jda)
82-
windowSettings.add("state", JDA.viewer.getExtendedState());
83+
windowSettings.add("state", ((JFrame) f).getExtendedState());
84+
else if (f instanceof VisibleComponent)
85+
{
86+
int state = 0;
87+
if (((VisibleComponent) f).isMaximum())
88+
state |= 1;
89+
if (((VisibleComponent) f).isIcon())
90+
state |= 2;
91+
if (((VisibleComponent) f).isVisible())
92+
state |= 4;
93+
windowSettings.add("state", state);
94+
}
8395
}
8496

8597
public static void loadGUI()
@@ -120,7 +132,6 @@ public static void loadWindows()
120132
for (VisibleComponent f : MainViewerGUI.rfComps)
121133
{
122134
loadFrame(windowsSection, f, f.getWindowId());
123-
f.pack();;
124135
}
125136
loadFrame(windowsSection, JDA.viewer, "JDA");
126137
}
@@ -140,18 +151,36 @@ private static void loadFrame(JsonObject windowsSection, Component f, String nam
140151

141152
Point pos = new Point(settings.get("x").asInt(), settings.get("y").asInt());
142153
Dimension size = new Dimension(settings.get("width").asInt(), settings.get("height").asInt());
143-
if (jda)
154+
if (jda) // fuck this shit make it an interfaceeeeeeeeeee
144155
{
145156
JDA.viewer.setExtendedState(settings.get("state").asInt());
146157
JDA.viewer.unmaximizedPos = pos;
147158
JDA.viewer.unmaximizedSize = size;
159+
if ((JDA.viewer.getExtendedState() & JFrame.MAXIMIZED_BOTH) != JFrame.MAXIMIZED_BOTH)
160+
JDA.viewer.pack();
148161
}
149-
if (!jda || (JDA.viewer.getExtendedState() & JFrame.MAXIMIZED_BOTH) != JFrame.MAXIMIZED_BOTH)
162+
else if (f instanceof VisibleComponent)
150163
{
151-
f.setLocation(pos);
152-
f.setPreferredSize(size);
153-
if (jda)
154-
JDA.viewer.pack();
164+
VisibleComponent comp = (VisibleComponent) f;
165+
int state = settings.get("state").asInt();
166+
try
167+
{
168+
comp.setMaximum((state & 1) != 0);
169+
comp.setIcon((state & 2) != 0);
170+
comp.setVisible((state & 4) != 0);
171+
}
172+
catch (PropertyVetoException e)
173+
{
174+
e.printStackTrace();
175+
}
176+
comp.unmaximizedPos = pos;
177+
comp.unmaximizedSize = size;
178+
if (!comp.isMaximum() && !comp.isIcon())
179+
{
180+
comp.setLocation(pos);
181+
comp.setPreferredSize(size);
182+
comp.pack();
183+
}
155184
}
156185
}
157186
}

0 commit comments

Comments
 (0)