Skip to content

Commit f8e7b6e

Browse files
authored
Add files via upload
1 parent fb3bc09 commit f8e7b6e

File tree

1 file changed

+191
-0
lines changed

1 file changed

+191
-0
lines changed

src/SideMenuPanel.java

Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
2+
// @author ian
3+
import java.awt.Component;
4+
import java.awt.Container;
5+
import java.awt.Dimension;
6+
import java.awt.event.ActionEvent;
7+
import java.awt.event.ActionListener;
8+
import java.awt.event.ComponentAdapter;
9+
import java.awt.event.ComponentEvent;
10+
import java.time.Duration;
11+
import java.util.concurrent.TimeUnit;
12+
import java.util.logging.Level;
13+
import java.util.logging.Logger;
14+
import javax.swing.JFrame;
15+
import javax.swing.JPanel;
16+
import javax.swing.Timer;
17+
18+
public class SideMenuPanel {
19+
20+
private int x = 0;
21+
private final int a = 0;
22+
private int minWidth = 60;
23+
private int maxWidth = 200;
24+
private JPanel side;
25+
private JPanel main;
26+
private boolean isEnabled;
27+
private int speed = 2;
28+
private int responsiveMinWidth = 600;
29+
private final JFrame frame;
30+
31+
public int getResponsiveMinWidth() {
32+
return responsiveMinWidth;
33+
}
34+
35+
public void setResponsiveMinWidth(int responsiveWidth) {
36+
this.responsiveMinWidth = responsiveWidth;
37+
}
38+
39+
public int getSpeed() {
40+
return speed;
41+
}
42+
43+
public void setSpeed(int speed) {
44+
if (speed == 0) {
45+
speed = maxWidth;
46+
}
47+
this.speed = speed;
48+
}
49+
50+
public int getMinWidth() {
51+
return minWidth;
52+
}
53+
54+
public int getMaxWidth() {
55+
return maxWidth;
56+
}
57+
58+
public JPanel getSide() {
59+
return side;
60+
}
61+
62+
public JPanel getMain() {
63+
return main;
64+
}
65+
66+
public boolean setMainAnimation() {
67+
return isEnabled;
68+
}
69+
70+
public void setMinWidth(int min) {
71+
this.minWidth = min;
72+
}
73+
74+
public void setMaxWidth(int max) {
75+
this.maxWidth = max;
76+
}
77+
78+
public void setSide(JPanel side) {
79+
80+
this.side = side;
81+
82+
}
83+
84+
public void setMain(JPanel main) {
85+
86+
this.main = main;
87+
88+
}
89+
90+
public void setMainAnimation(boolean isEnabled) {
91+
this.isEnabled = isEnabled;
92+
}
93+
94+
public SideMenuPanel(JFrame frame) {
95+
96+
frame.addComponentListener(new ComponentAdapter() {
97+
98+
@Override
99+
public void componentResized(ComponentEvent arg0) {
100+
x = 0;
101+
}
102+
});
103+
104+
this.frame = frame;
105+
}
106+
107+
public void onSideMenu() {
108+
int b = maxWidth % speed;
109+
if (x == maxWidth) {
110+
111+
Thread th = new Thread() {
112+
@Override
113+
public void run() {
114+
for (int i = maxWidth; i >= 0; i -= speed) {
115+
try {
116+
if (b == i) {
117+
i = 0;
118+
}
119+
TimeUnit.NANOSECONDS.sleep(1);
120+
121+
side.setSize(new Dimension(minWidth + i, main.getHeight()));
122+
123+
if (side instanceof Container) {
124+
for (Component child : ((Container) side).getComponents()) {
125+
child.setSize(new Dimension(maxWidth, child.getHeight()));
126+
}
127+
}
128+
if (frame.getWidth() >= responsiveMinWidth) {
129+
if (isEnabled) {
130+
main.setLocation(minWidth + i, main.getY());
131+
}
132+
}
133+
134+
} catch (NullPointerException e) {
135+
136+
System.out.println("Unknown Side or Main panel \n setSide() and setMain() ");
137+
return;
138+
139+
} catch (InterruptedException ex) {
140+
Logger.getLogger(SideMenuPanel.class.getName()).log(Level.SEVERE, null, ex);
141+
}
142+
}
143+
}
144+
145+
};
146+
th.start();
147+
148+
x = 0;
149+
} else if (x == 0) {
150+
Thread th = new Thread() {
151+
@Override
152+
public void run() {
153+
for (int i = 0; i <= x; i += speed) {
154+
try {
155+
156+
TimeUnit.NANOSECONDS.sleep(1);
157+
if (maxWidth - b == i) {
158+
i += b;
159+
}
160+
161+
side.setSize(new Dimension(minWidth + i, main.getHeight()));
162+
163+
if (side instanceof Container) {
164+
for (Component child : ((Container) side).getComponents()) {
165+
child.setSize(new Dimension(maxWidth, child.getHeight()));
166+
}
167+
}
168+
if (frame.getWidth() >= responsiveMinWidth) {
169+
if (isEnabled) {
170+
main.setLocation(minWidth + i, main.getY());
171+
}
172+
}
173+
} catch (NullPointerException e) {
174+
System.out.println("ERROR: Unknown value for setSide() or setMain()");
175+
176+
return;
177+
178+
} catch (InterruptedException ex) {
179+
Logger.getLogger(SideMenuPanel.class.getName()).log(Level.SEVERE, null, ex);
180+
}
181+
}
182+
183+
}
184+
};
185+
th.start();
186+
x = maxWidth;
187+
}
188+
189+
}
190+
191+
}

0 commit comments

Comments
 (0)