Добавлена функция удаления прокси; список прокси перенесен в подменю
This commit is contained in:
parent
744bca6839
commit
6c31ac0e89
|
@ -1,8 +1,6 @@
|
|||
{
|
||||
"port" : "7458",
|
||||
"proxyList" : [
|
||||
"https://notaproxy.ru",
|
||||
"http://proxy.com",
|
||||
"http://ideco.mcs.br/wpad.dat",
|
||||
"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.Scanner;
|
||||
|
||||
import static java.awt.Component.LEFT_ALIGNMENT;
|
||||
import static javax.swing.JOptionPane.showMessageDialog;
|
||||
import static org.dhaverdLogs.DhaverdLogs.*;
|
||||
import static org.proxy.loadConfig.*;
|
||||
|
@ -98,38 +99,8 @@ public class Main {
|
|||
setLog(context,"System tray is unsupported!", true, false);
|
||||
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();
|
||||
try {
|
||||
tray.add(trayIcon);
|
||||
} catch (AWTException e) {
|
||||
exeptionActions(context, e);
|
||||
}
|
||||
loadMenu();
|
||||
setLog(context,"System tray launched", true, false);
|
||||
}
|
||||
|
||||
|
@ -179,8 +150,12 @@ public class Main {
|
|||
}
|
||||
|
||||
public static void reloadMenu() throws IOException, ParseException {
|
||||
String context = "Reload tray menu";
|
||||
tray.remove(trayIcon);
|
||||
loadMenu();
|
||||
}
|
||||
|
||||
public static void loadMenu() throws IOException, ParseException {
|
||||
String context = "Load tray menu";
|
||||
List<String> proxyList = getProxyList();
|
||||
currentProxyList = proxyList;
|
||||
PopupMenu trayMenu = new PopupMenu();
|
||||
|
@ -188,12 +163,18 @@ public class Main {
|
|||
addButton.setFont(trayFont);
|
||||
addButton.addActionListener(addListener());
|
||||
trayMenu.add(addButton);
|
||||
Menu proxyMenu = new Menu("Proxy");
|
||||
trayMenu.add(proxyMenu);
|
||||
for (String prox : proxyList){
|
||||
MenuItem proxy = new MenuItem(prox);
|
||||
proxy.setFont(trayFont);
|
||||
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");
|
||||
stopButton.setFont(trayFont);
|
||||
stopButton.addActionListener(stopListener());
|
||||
|
@ -283,6 +264,110 @@ public class Main {
|
|||
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() {
|
||||
return e -> {
|
||||
closeThread();
|
||||
|
|
Loading…
Reference in New Issue