Skip to content
This repository was archived by the owner on Jan 17, 2019. It is now read-only.

Commit adb0bbe

Browse files
committed
v1.0
0 parents  commit adb0bbe

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+2700
-0
lines changed

.gitignore

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Compiled class file
2+
*.class
3+
4+
# Log file
5+
*.log
6+
7+
# Package Files #
8+
*.jar
9+
*.war
10+
*.ear
11+
*.zip
12+
*.tar.gz
13+
*.rar
14+
15+
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
16+
hs_err_pid*
17+
18+
# Test/Temp Files
19+
/t*
20+
21+
# Output
22+
output
23+
24+
# Shell
25+
*.command
26+
*.bat
27+
*.py
28+
*.sh
29+
30+
# MFG4OOI Config
31+
mfg4ooi.properties

AddressPanel.java

+121
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
import proxy.Route;
2+
3+
import java.awt.event.ActionEvent;
4+
import java.awt.event.ActionListener;
5+
import java.awt.event.FocusAdapter;
6+
import java.awt.event.FocusEvent;
7+
8+
import javax.swing.AbstractSpinnerModel;
9+
import javax.swing.JLabel;
10+
import javax.swing.JPanel;
11+
import javax.swing.JSpinner;
12+
import javax.swing.JTextField;
13+
import javax.swing.SpinnerNumberModel;
14+
import javax.swing.SpinnerModel;
15+
import javax.swing.Spring;
16+
import javax.swing.SpringLayout;
17+
18+
public class AddressPanel extends JPanel implements StatusChangeListener {
19+
private JTextField addr;
20+
private JSpinner port;
21+
private SpinnerModel defaultModel;
22+
private Route r = null;
23+
private boolean enabled = true;
24+
25+
private static SpinnerModel emptyModel = new AbstractSpinnerModel() {
26+
@Override
27+
public Object getValue() { return null; }
28+
29+
@Override
30+
public void setValue(Object value) {}
31+
32+
@Override
33+
public Object getNextValue() { return null; }
34+
35+
@Override
36+
public Object getPreviousValue() { return null; }
37+
};
38+
39+
public AddressPanel() {
40+
super(new SpringLayout());
41+
SpringLayout layout = (SpringLayout)getLayout();
42+
port = new JSpinner(defaultModel = new SpinnerNumberModel(1024, 1024, 65535, 1));
43+
SpringLayout.Constraints cons = layout.getConstraints(port);
44+
cons.setWidth(Spring.constant(60));
45+
layout.putConstraint(SpringLayout.NORTH, port, 0, SpringLayout.NORTH, this);
46+
layout.putConstraint(SpringLayout.EAST, port, 0, SpringLayout.EAST, this);
47+
port.addChangeListener(e -> {
48+
if (listener != null) listener.actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, port.getValue().toString()));
49+
});
50+
add(port);
51+
JLabel jlbl = new JLabel(":");
52+
layout.putConstraint(SpringLayout.VERTICAL_CENTER, jlbl, 0, SpringLayout.VERTICAL_CENTER, port);
53+
layout.putConstraint(SpringLayout.EAST, jlbl, 0, SpringLayout.WEST, port);
54+
add(jlbl);
55+
addr = new JTextField(10);
56+
layout.putConstraint(SpringLayout.VERTICAL_CENTER, addr, 0, SpringLayout.VERTICAL_CENTER, port);
57+
layout.putConstraint(SpringLayout.EAST, addr, 0, SpringLayout.WEST, jlbl);
58+
layout.putConstraint(SpringLayout.WEST, addr, 0, SpringLayout.WEST, this);
59+
addr.addActionListener(e -> {
60+
if (listener != null) listener.actionPerformed(e);
61+
});
62+
addr.addFocusListener(new FocusAdapter() {
63+
@Override
64+
public void focusLost(FocusEvent e) {
65+
if (listener != null) listener.actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, addr.getText()));
66+
}
67+
});
68+
add(addr);
69+
layout.putConstraint(SpringLayout.SOUTH, this, 0, SpringLayout.SOUTH, port);
70+
Config.addStatusChangeListener(this);
71+
setRoute(null);
72+
}
73+
74+
public Route getRoute() {
75+
if (r == null || r == Config.MFG4OOI || r == Route.DIRECT || r == Route.SYSTEM) return r;
76+
if (((Number)port.getValue()).intValue() != r.getPort() || !addr.getText().equals(r.getHost())) r = new Route(addr.getText(), ((Number)port.getValue()).intValue());
77+
return r;
78+
}
79+
80+
public void setRoute(Route r) {
81+
if (r == Route.SYSTEM) this.r = null; // 强制刷新系统代理
82+
if (r == this.r) return;
83+
this.r = r;
84+
if (r == null || r == Route.DIRECT || r == Route.SYSTEM && r.getHost() == null) {
85+
enabled = false;
86+
addr.setText(null);
87+
port.setModel(emptyModel);
88+
} else if (r == Config.MFG4OOI || r == Route.SYSTEM) {
89+
enabled = false;
90+
addr.setText(r.getHost());
91+
port.setModel(defaultModel);
92+
port.setValue(r.getPort());
93+
} else {
94+
enabled = true;
95+
addr.setText(r.getHost());
96+
port.setModel(defaultModel);
97+
port.setValue(r.getPort());
98+
}
99+
addr.setEnabled(enabled && isEnabled());
100+
port.setEnabled(enabled && isEnabled());
101+
}
102+
103+
// 由于懒,只写一个,而且get什么也不想写了
104+
private ActionListener listener = null;
105+
106+
public void setActionListener(ActionListener listener) {
107+
this.listener = listener;
108+
}
109+
110+
@Override
111+
public void setEnabled(boolean enabled) {
112+
super.setEnabled(enabled);
113+
addr.setEnabled(this.enabled && enabled);
114+
port.setEnabled(this.enabled && enabled);
115+
}
116+
117+
@Override
118+
public void statusChanged() {
119+
if (r == Config.MFG4OOI) port.setValue(r.getPort());
120+
}
121+
}

0 commit comments

Comments
 (0)