Добавлена функция удаления прокси; список прокси перенесен в подменю
This commit is contained in:
parent
744bca6839
commit
6c31ac0e89
|
@ -1,8 +1,6 @@
|
||||||
{
|
{
|
||||||
"port" : "7458",
|
"port" : "7458",
|
||||||
"proxyList" : [
|
"proxyList" : [
|
||||||
"https://notaproxy.ru",
|
|
||||||
"http://proxy.com",
|
|
||||||
"http://ideco.mcs.br/wpad.dat",
|
"http://ideco.mcs.br/wpad.dat",
|
||||||
"http://proxy.mcs.br:8080/array.dll?Get.Routing.Script"
|
"http://proxy.mcs.br:8080/array.dll?Get.Routing.Script"
|
||||||
],
|
],
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -12,6 +12,7 @@ import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
import static java.awt.Component.LEFT_ALIGNMENT;
|
||||||
import static javax.swing.JOptionPane.showMessageDialog;
|
import static javax.swing.JOptionPane.showMessageDialog;
|
||||||
import static org.dhaverdLogs.DhaverdLogs.*;
|
import static org.dhaverdLogs.DhaverdLogs.*;
|
||||||
import static org.proxy.loadConfig.*;
|
import static org.proxy.loadConfig.*;
|
||||||
|
@ -98,38 +99,8 @@ public class Main {
|
||||||
setLog(context,"System tray is unsupported!", true, false);
|
setLog(context,"System tray is unsupported!", true, false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> proxyList = getProxyList();
|
|
||||||
currentProxyList = proxyList;
|
|
||||||
PopupMenu trayMenu = new PopupMenu();
|
|
||||||
MenuItem addButton = new MenuItem("Add proxy...");
|
|
||||||
addButton.setFont(trayFont);
|
|
||||||
addButton.addActionListener(addListener());
|
|
||||||
trayMenu.add(addButton);
|
|
||||||
for (String prox : proxyList){
|
|
||||||
MenuItem proxy = new MenuItem(prox);
|
|
||||||
proxy.setFont(trayFont);
|
|
||||||
proxy.addActionListener(proxyListener(prox));
|
|
||||||
trayMenu.add(proxy);
|
|
||||||
}
|
|
||||||
MenuItem stopButton = new MenuItem("Stop");
|
|
||||||
stopButton.setFont(trayFont);
|
|
||||||
stopButton.addActionListener(stopListener());
|
|
||||||
trayMenu.add(stopButton);
|
|
||||||
MenuItem trayExit = new MenuItem("Exit");
|
|
||||||
trayExit.setFont(trayFont);
|
|
||||||
trayExit.addActionListener(trayExitListener());
|
|
||||||
trayMenu.add(trayExit);
|
|
||||||
Image icon;
|
|
||||||
icon = Toolkit.getDefaultToolkit().getImage("res" + osSeparator + "icon off.png");
|
|
||||||
trayIcon = new TrayIcon(icon, "Current proxy: " + currentProxyPub, trayMenu);
|
|
||||||
trayIcon.setImageAutoSize(!isLinux);
|
|
||||||
tray = SystemTray.getSystemTray();
|
tray = SystemTray.getSystemTray();
|
||||||
try {
|
loadMenu();
|
||||||
tray.add(trayIcon);
|
|
||||||
} catch (AWTException e) {
|
|
||||||
exeptionActions(context, e);
|
|
||||||
}
|
|
||||||
setLog(context,"System tray launched", true, false);
|
setLog(context,"System tray launched", true, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -179,8 +150,12 @@ public class Main {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void reloadMenu() throws IOException, ParseException {
|
public static void reloadMenu() throws IOException, ParseException {
|
||||||
String context = "Reload tray menu";
|
|
||||||
tray.remove(trayIcon);
|
tray.remove(trayIcon);
|
||||||
|
loadMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void loadMenu() throws IOException, ParseException {
|
||||||
|
String context = "Load tray menu";
|
||||||
List<String> proxyList = getProxyList();
|
List<String> proxyList = getProxyList();
|
||||||
currentProxyList = proxyList;
|
currentProxyList = proxyList;
|
||||||
PopupMenu trayMenu = new PopupMenu();
|
PopupMenu trayMenu = new PopupMenu();
|
||||||
|
@ -188,12 +163,18 @@ public class Main {
|
||||||
addButton.setFont(trayFont);
|
addButton.setFont(trayFont);
|
||||||
addButton.addActionListener(addListener());
|
addButton.addActionListener(addListener());
|
||||||
trayMenu.add(addButton);
|
trayMenu.add(addButton);
|
||||||
|
Menu proxyMenu = new Menu("Proxy");
|
||||||
|
trayMenu.add(proxyMenu);
|
||||||
for (String prox : proxyList){
|
for (String prox : proxyList){
|
||||||
MenuItem proxy = new MenuItem(prox);
|
MenuItem proxy = new MenuItem(prox);
|
||||||
proxy.setFont(trayFont);
|
proxy.setFont(trayFont);
|
||||||
proxy.addActionListener(proxyListener(prox));
|
proxy.addActionListener(proxyListener(prox));
|
||||||
trayMenu.add(proxy);
|
proxyMenu.add(proxy);
|
||||||
}
|
}
|
||||||
|
MenuItem deleteButton = new MenuItem("Delete proxy...");
|
||||||
|
deleteButton.setFont(trayFont);
|
||||||
|
deleteButton.addActionListener(deleteListener());
|
||||||
|
trayMenu.add(deleteButton);
|
||||||
MenuItem stopButton = new MenuItem("Stop");
|
MenuItem stopButton = new MenuItem("Stop");
|
||||||
stopButton.setFont(trayFont);
|
stopButton.setFont(trayFont);
|
||||||
stopButton.addActionListener(stopListener());
|
stopButton.addActionListener(stopListener());
|
||||||
|
@ -283,6 +264,110 @@ public class Main {
|
||||||
frame.setVisible(true);
|
frame.setVisible(true);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ActionListener deleteListener(){
|
||||||
|
return e -> {
|
||||||
|
String context = "Delete Listener";
|
||||||
|
//frame
|
||||||
|
JFrame frame = new JFrame("Add proxy");
|
||||||
|
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
||||||
|
frame.setSize(300,200);
|
||||||
|
frame.setLocationRelativeTo(null);
|
||||||
|
|
||||||
|
//main panel
|
||||||
|
JPanel mainPanel = new JPanel();
|
||||||
|
GridBagLayout layout = new GridBagLayout();
|
||||||
|
mainPanel.setLayout(layout);
|
||||||
|
GridBagConstraints gbc = new GridBagConstraints();
|
||||||
|
gbc.gridx = 0;
|
||||||
|
gbc.gridy = 0;
|
||||||
|
gbc.fill = GridBagConstraints.HORIZONTAL;
|
||||||
|
gbc.anchor = GridBagConstraints.WEST;
|
||||||
|
gbc.insets = new Insets(5, 5, 5, 5);
|
||||||
|
|
||||||
|
try {
|
||||||
|
List<String> proxyList = getProxyList();
|
||||||
|
List<JCheckBox> checkBoxList = new ArrayList<>();
|
||||||
|
for (String proxy : proxyList){
|
||||||
|
JCheckBox checkBox = new JCheckBox(proxy);
|
||||||
|
checkBoxList.add(checkBox);
|
||||||
|
mainPanel.add(checkBox, gbc);
|
||||||
|
gbc.gridy++;
|
||||||
|
}
|
||||||
|
gbc.anchor = GridBagConstraints.CENTER;
|
||||||
|
gbc.insets = new Insets(5, 10, 5, 10);
|
||||||
|
JButton deleteButton = new JButton("Delete");
|
||||||
|
deleteButton.addActionListener(al ->{
|
||||||
|
List<String> proxyToDelete = new ArrayList<>();
|
||||||
|
for (JCheckBox checkBox : checkBoxList){
|
||||||
|
if (checkBox.isSelected()){
|
||||||
|
proxyToDelete.add(checkBox.getText());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
deleteProxy(proxyToDelete);
|
||||||
|
reloadMenu();
|
||||||
|
} catch (IOException | ParseException ex) {
|
||||||
|
exeptionActions(context, ex);
|
||||||
|
}
|
||||||
|
frame.dispose();
|
||||||
|
});
|
||||||
|
gbc.weightx = 0.5;
|
||||||
|
mainPanel.add(deleteButton, gbc);
|
||||||
|
JButton closeButton = new JButton("Close");
|
||||||
|
gbc.gridx = 1;
|
||||||
|
closeButton.addActionListener(al -> {
|
||||||
|
frame.dispose();
|
||||||
|
});
|
||||||
|
mainPanel.add(closeButton, gbc);
|
||||||
|
frame.getContentPane().add(mainPanel);
|
||||||
|
frame.pack();
|
||||||
|
frame.setResizable(false);
|
||||||
|
frame.setVisible(true);
|
||||||
|
} catch (IOException | ParseException ex) {
|
||||||
|
exeptionActions(context, ex);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void deleteProxy(List<String> proxyToDelete) throws IOException {
|
||||||
|
File config = getConfigFile();
|
||||||
|
FileReader reader = new FileReader(config);
|
||||||
|
Scanner sc = new Scanner(reader);
|
||||||
|
List<String> propsList = new ArrayList<>();
|
||||||
|
while (sc.hasNext()){
|
||||||
|
String line = sc.nextLine();
|
||||||
|
propsList.add(line);
|
||||||
|
}
|
||||||
|
sc.close();
|
||||||
|
reader.close();
|
||||||
|
List<String> newProps = new ArrayList<>();
|
||||||
|
for (String prop : propsList){
|
||||||
|
boolean isToDelete = false;
|
||||||
|
for (String deleteProxy : proxyToDelete){
|
||||||
|
if (prop.contains(deleteProxy)){
|
||||||
|
isToDelete = true;
|
||||||
|
setLog("Delete Proxy", "Proxy is deleted: " + deleteProxy, true, false);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isToDelete){
|
||||||
|
newProps.add(prop);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
setLog("Add new proxy function", "New proxy list:", true, false);
|
||||||
|
for (String prop : newProps) {
|
||||||
|
setLog("Add new proxy function", prop, false, true);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
FileWriter writer = new FileWriter(config, false);
|
||||||
|
for (String prop : newProps) {
|
||||||
|
writer.write(prop + "\n");
|
||||||
|
}
|
||||||
|
writer.close();
|
||||||
|
}
|
||||||
|
|
||||||
public static ActionListener stopListener() {
|
public static ActionListener stopListener() {
|
||||||
return e -> {
|
return e -> {
|
||||||
closeThread();
|
closeThread();
|
||||||
|
|
Loading…
Reference in New Issue