Aggiungi 'craplog/scr/main/java/crapsets/window.java'

This commit is contained in:
Valentino Orlandi 2022-06-11 21:55:42 +00:00
parent 67865092ce
commit 35cf831adc
1 changed files with 751 additions and 0 deletions

View File

@ -0,0 +1,751 @@
package crapsets;
import crapcode.craplog;
import java.awt.Font;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.IOException;
import java.nio.file.InvalidPathException;
import java.util.ArrayList;
import javax.swing.DefaultListModel;
import javax.swing.JOptionPane;
public final class window extends javax.swing.JFrame {
private final craplog craplog;
private final DefaultListModel<String> ip_skip;
public window( craplog craplog_, Font font ) {
this.initComponents();
this.initLook();
this.initStyle( font );
this.craplog = craplog_;
this.ip_skip = new DefaultListModel<>();
this.jListIPskip.setModel(ip_skip);
this.loadCurrent();
}
public void restore() {
this.loadCurrent();
this.jTextFieldIPins.setText("");
this.setLocation(0, 0);
this.setVisible(true);
}
private void loadCurrent() {
// load current settings
this.jTextFieldLOGS.setText( this.craplog.getLogsDir() );
this.jTextFieldSTATS.setText( this.craplog.getStatsDir() );
this.jTextFieldTRASH.setText( this.craplog.getTrashDir() );
this.checkAllPaths();
this.ip_skip.clear();
for ( String ip : this.craplog.getSkipIPs() ) {
this.ip_skip.addElement(ip);
}
}
private void checkOK() {
if (this.jLabelWARN1.isEnabled() == true
|| this.jLabelWARN2.isEnabled() == true
|| this.jLabelWARN3.isEnabled() == true
) {
// disable exit saving
this.jButtonOK.setEnabled(false);
} else {
// enable exit saving
this.jButtonOK.setEnabled(true);
}
}
private void mkdir( String path ) {
// remove trailing slashes if any
while (true) {
if ( path.endsWith("/") ) {
path = path.substring( 0, path.length()-2 );
} else {
break;
}
}
// create a new directory
try {
Files.createDirectory( Paths.get(path) );
JOptionPane.showMessageDialog(null,
String.format("New directory created:\n'%s'",path),
"Directory created succesfully", 1);
} catch (InvalidPathException | NullPointerException e) {
JOptionPane.showMessageDialog(null,
String.format("The inserted path is not valid:\n'%s'",path),
"Invalid path", 0);
} catch (IOException e) {
JOptionPane.showMessageDialog(null,
String.format("An error occured while creating directory:\n'%s'",path),
"Error making directory", 0);
}
}
private void checkAllPaths() {
// logs path
this.checkLogsPath();
// stats path
this.checkStatsPath();
// trash path
this.checkTrashPath();
// enable/disable the OK button
this.checkOK();
}
private void checkLogsPath() {
if ( Files.exists( Paths.get( this.jTextFieldLOGS.getText() )) ) {
this.jLabelWARN1.setEnabled(false);
} else {
this.jLabelWARN1.setEnabled(true);
}
}
private void checkStatsPath() {
if ( Files.exists( Paths.get( this.jTextFieldSTATS.getText() )) ) {
this.jLabelWARN2.setEnabled(false);
this.jButtonNEW2.setEnabled(false);
this.jButtonNEW2.setVisible(false);
} else {
this.jLabelWARN2.setEnabled(true);
this.jButtonNEW2.setEnabled(true);
this.jButtonNEW2.setVisible(true);
}
}
private void checkTrashPath() {
if ( Files.exists( Paths.get( this.jTextFieldTRASH.getText() )) ) {
this.jLabelWARN3.setEnabled(false);
this.jButtonNEW3.setEnabled(false);
this.jButtonNEW3.setVisible(false);
} else {
this.jLabelWARN3.setEnabled(true);
this.jButtonNEW3.setEnabled(true);
this.jButtonNEW3.setVisible(true);
}
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jPanelSETTINGS = new javax.swing.JPanel();
jTabbedPaneSETTINGS = new javax.swing.JTabbedPane();
jPanelPATHS = new javax.swing.JPanel();
jTextFieldLOGS = new javax.swing.JTextField();
jTextFieldSTATS = new javax.swing.JTextField();
jTextFieldTRASH = new javax.swing.JTextField();
jLabelLOGS = new javax.swing.JLabel();
jLabelPATHS = new javax.swing.JLabel();
jLabelSTATS = new javax.swing.JLabel();
jLabelTRASH = new javax.swing.JLabel();
jLabelWARN1 = new javax.swing.JLabel();
jLabelWARN2 = new javax.swing.JLabel();
jLabelWARN3 = new javax.swing.JLabel();
jButtonNEW3 = new javax.swing.JButton();
jButtonNEW2 = new javax.swing.JButton();
jPanelIPS = new javax.swing.JPanel();
jLabelIPtitle = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
jListIPskip = new javax.swing.JList<>();
jTextFieldIPins = new javax.swing.JTextField();
jButtonIPadd = new javax.swing.JButton();
jButtonIPdel = new javax.swing.JButton();
jSeparator1 = new javax.swing.JSeparator();
jLabelIPsub1 = new javax.swing.JLabel();
jLabelIPsub3 = new javax.swing.JLabel();
jLabelIPsub2 = new javax.swing.JLabel();
jPanelOPTION = new javax.swing.JPanel();
jButtonOK = new javax.swing.JButton();
jButtonCANCEL = new javax.swing.JButton();
setTitle("Settings");
jTabbedPaneSETTINGS.setPreferredSize(new java.awt.Dimension(644, 362));
jPanelPATHS.setPreferredSize(new java.awt.Dimension(630, 350));
jTextFieldLOGS.setFont(new java.awt.Font("Metropolis", 0, 13)); // NOI18N
jTextFieldLOGS.setText("/var/logs/apache2");
jTextFieldLOGS.setToolTipText("Folder to get logs from. Default is '/var/log/apache2'");
jTextFieldLOGS.addCaretListener(new javax.swing.event.CaretListener() {
public void caretUpdate(javax.swing.event.CaretEvent evt) {
jTextFieldLOGSCaretUpdate(evt);
}
});
jTextFieldLOGS.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextFieldLOGSActionPerformed(evt);
}
});
jTextFieldSTATS.setFont(new java.awt.Font("Metropolis", 0, 13)); // NOI18N
jTextFieldSTATS.setText("./crapstats");
jTextFieldSTATS.setToolTipText("Folder to save statistics in. Default to './crapstats' (inside the craplog jar)");
jTextFieldSTATS.addCaretListener(new javax.swing.event.CaretListener() {
public void caretUpdate(javax.swing.event.CaretEvent evt) {
jTextFieldSTATSCaretUpdate(evt);
}
});
jTextFieldSTATS.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextFieldSTATSActionPerformed(evt);
}
});
jTextFieldTRASH.setFont(new java.awt.Font("Metropolis", 0, 13)); // NOI18N
jTextFieldTRASH.setText("~/.local/share/Trash/files");
jTextFieldTRASH.setToolTipText("The folder to use as trash. You can set one of your choice to hold copies of deleted files. Default to '~/.local/share/Trash/files'");
jTextFieldTRASH.addCaretListener(new javax.swing.event.CaretListener() {
public void caretUpdate(javax.swing.event.CaretEvent evt) {
jTextFieldTRASHCaretUpdate(evt);
}
});
jTextFieldTRASH.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextFieldTRASHActionPerformed(evt);
}
});
jLabelLOGS.setFont(new java.awt.Font("Metropolis", 0, 13)); // NOI18N
jLabelLOGS.setText("The folder where you store apache2 logs files:");
jLabelLOGS.setVerticalAlignment(javax.swing.SwingConstants.BOTTOM);
jLabelLOGS.setPreferredSize(new java.awt.Dimension(73, 24));
jLabelPATHS.setFont(new java.awt.Font("Metropolis", 0, 18)); // NOI18N
jLabelPATHS.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabelPATHS.setText("Paths to be used");
jLabelSTATS.setFont(new java.awt.Font("Metropolis", 0, 13)); // NOI18N
jLabelSTATS.setText("The folder used to hold statistics files:");
jLabelSTATS.setVerticalAlignment(javax.swing.SwingConstants.BOTTOM);
jLabelSTATS.setPreferredSize(new java.awt.Dimension(73, 24));
jLabelTRASH.setFont(new java.awt.Font("Metropolis", 0, 13)); // NOI18N
jLabelTRASH.setText("The folder used as trash by your system:");
jLabelTRASH.setVerticalAlignment(javax.swing.SwingConstants.BOTTOM);
jLabelTRASH.setPreferredSize(new java.awt.Dimension(73, 24));
jLabelWARN1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabelWARN1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/warning.png"))); // NOI18N
jLabelWARN1.setDisabledIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/null.png"))); // NOI18N
jLabelWARN1.setEnabled(false);
jLabelWARN2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabelWARN2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/warning.png"))); // NOI18N
jLabelWARN2.setDisabledIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/null.png"))); // NOI18N
jLabelWARN2.setEnabled(false);
jLabelWARN3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabelWARN3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/warning.png"))); // NOI18N
jLabelWARN3.setDisabledIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/null.png"))); // NOI18N
jLabelWARN3.setEnabled(false);
jButtonNEW3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/new.png"))); // NOI18N
jButtonNEW3.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
jButtonNEW3.setDisabledIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/null.png"))); // NOI18N
jButtonNEW3.setEnabled(false);
jButtonNEW3.setPreferredSize(new java.awt.Dimension(24, 24));
jButtonNEW3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonNEW3ActionPerformed(evt);
}
});
jButtonNEW2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/new.png"))); // NOI18N
jButtonNEW2.setBorder(null);
jButtonNEW2.setDisabledIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/null.png"))); // NOI18N
jButtonNEW2.setEnabled(false);
jButtonNEW2.setPreferredSize(new java.awt.Dimension(24, 24));
jButtonNEW2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonNEW2ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanelPATHSLayout = new javax.swing.GroupLayout(jPanelPATHS);
jPanelPATHS.setLayout(jPanelPATHSLayout);
jPanelPATHSLayout.setHorizontalGroup(
jPanelPATHSLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelPATHSLayout.createSequentialGroup()
.addGap(28, 28, 28)
.addGroup(jPanelPATHSLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabelWARN1, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabelWARN2, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabelWARN3, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanelPATHSLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(jLabelTRASH, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jTextFieldSTATS, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabelSTATS, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jTextFieldLOGS, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabelLOGS, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jTextFieldTRASH, javax.swing.GroupLayout.DEFAULT_SIZE, 512, Short.MAX_VALUE)
.addComponent(jLabelPATHS, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanelPATHSLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButtonNEW3, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButtonNEW2, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(20, Short.MAX_VALUE))
);
jPanelPATHSLayout.setVerticalGroup(
jPanelPATHSLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelPATHSLayout.createSequentialGroup()
.addGap(24, 24, 24)
.addComponent(jLabelPATHS, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(32, 32, 32)
.addComponent(jLabelLOGS, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanelPATHSLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTextFieldLOGS, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabelWARN1, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addComponent(jLabelSTATS, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanelPATHSLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jTextFieldSTATS, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabelWARN2, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButtonNEW2, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(jPanelPATHSLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(jPanelPATHSLayout.createSequentialGroup()
.addComponent(jLabelTRASH, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextFieldTRASH, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jLabelWARN3, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButtonNEW3, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(45, Short.MAX_VALUE))
);
jTabbedPaneSETTINGS.addTab("Paths", jPanelPATHS);
jLabelIPtitle.setFont(new java.awt.Font("Metropolis", 0, 18)); // NOI18N
jLabelIPtitle.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabelIPtitle.setText("IPs whitelist");
jScrollPane1.setPreferredSize(new java.awt.Dimension(80, 192));
jListIPskip.setFont(new java.awt.Font("Metropolis", 0, 15)); // NOI18N
jListIPskip.setModel(new javax.swing.AbstractListModel<String>() {
String[] strings = { "::1", "192.168." };
public int getSize() { return strings.length; }
public String getElementAt(int i) { return strings[i]; }
});
jListIPskip.setPreferredSize(new java.awt.Dimension(59, 250));
jListIPskip.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
jListIPskipMousePressed(evt);
}
});
jListIPskip.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
jListIPskipKeyPressed(evt);
}
});
jScrollPane1.setViewportView(jListIPskip);
jTextFieldIPins.setFont(new java.awt.Font("Metropolis", 0, 15)); // NOI18N
jTextFieldIPins.setToolTipText("Pattern to search for while parsing logs. Cannot contain whitespaces");
jTextFieldIPins.addCaretListener(new javax.swing.event.CaretListener() {
public void caretUpdate(javax.swing.event.CaretEvent evt) {
jTextFieldIPinsCaretUpdate(evt);
}
});
jButtonIPadd.setBackground(new java.awt.Color(2, 169, 2));
jButtonIPadd.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/more.png"))); // NOI18N
jButtonIPadd.setToolTipText("Add the inserted pattern to the list");
jButtonIPadd.setEnabled(false);
jButtonIPadd.setPreferredSize(new java.awt.Dimension(32, 32));
jButtonIPadd.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonIPaddActionPerformed(evt);
}
});
jButtonIPdel.setBackground(new java.awt.Color(169, 2, 2));
jButtonIPdel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/less.png"))); // NOI18N
jButtonIPdel.setToolTipText("Remove the selected list item");
jButtonIPdel.setEnabled(false);
jButtonIPdel.setPreferredSize(new java.awt.Dimension(32, 32));
jButtonIPdel.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonIPdelActionPerformed(evt);
}
});
jLabelIPsub1.setFont(new java.awt.Font("Metropolis", 0, 15)); // NOI18N
jLabelIPsub1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabelIPsub1.setText("Logs from IP addresses");
jLabelIPsub3.setFont(new java.awt.Font("Metropolis", 0, 15)); // NOI18N
jLabelIPsub3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabelIPsub3.setText("will be skipped while making statistics");
jLabelIPsub2.setFont(new java.awt.Font("Metropolis", 0, 15)); // NOI18N
jLabelIPsub2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabelIPsub2.setText("containing one of these patterns");
javax.swing.GroupLayout jPanelIPSLayout = new javax.swing.GroupLayout(jPanelIPS);
jPanelIPS.setLayout(jPanelIPSLayout);
jPanelIPSLayout.setHorizontalGroup(
jPanelIPSLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelIPSLayout.createSequentialGroup()
.addGap(32, 32, 32)
.addGroup(jPanelIPSLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jTextFieldIPins)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 192, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanelIPSLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButtonIPadd, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanelIPSLayout.createSequentialGroup()
.addComponent(jButtonIPdel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(32, 32, 32)
.addGroup(jPanelIPSLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jLabelIPtitle, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jSeparator1)
.addComponent(jLabelIPsub1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabelIPsub3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabelIPsub2, javax.swing.GroupLayout.PREFERRED_SIZE, 308, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addContainerGap(32, Short.MAX_VALUE))
);
jPanelIPSLayout.setVerticalGroup(
jPanelIPSLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanelIPSLayout.createSequentialGroup()
.addContainerGap(13, Short.MAX_VALUE)
.addGroup(jPanelIPSLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTextFieldIPins, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButtonIPadd, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanelIPSLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButtonIPdel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanelIPSLayout.createSequentialGroup()
.addComponent(jLabelIPtitle, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabelIPsub1, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabelIPsub2, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabelIPsub3, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 248, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(32, 32, 32))
);
jTabbedPaneSETTINGS.addTab("Whitelist", jPanelIPS);
jButtonOK.setFont(new java.awt.Font("Metropolis", 0, 15)); // NOI18N
jButtonOK.setText("Ok");
jButtonOK.setEnabled(false);
jButtonOK.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonOKActionPerformed(evt);
}
});
jButtonCANCEL.setFont(new java.awt.Font("Metropolis", 0, 15)); // NOI18N
jButtonCANCEL.setText("Cancel");
jButtonCANCEL.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonCANCELActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanelOPTIONLayout = new javax.swing.GroupLayout(jPanelOPTION);
jPanelOPTION.setLayout(jPanelOPTIONLayout);
jPanelOPTIONLayout.setHorizontalGroup(
jPanelOPTIONLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanelOPTIONLayout.createSequentialGroup()
.addContainerGap(32, Short.MAX_VALUE)
.addComponent(jButtonCANCEL, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButtonOK, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(32, 32, 32))
);
jPanelOPTIONLayout.setVerticalGroup(
jPanelOPTIONLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanelOPTIONLayout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanelOPTIONLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButtonOK, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButtonCANCEL, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
javax.swing.GroupLayout jPanelSETTINGSLayout = new javax.swing.GroupLayout(jPanelSETTINGS);
jPanelSETTINGS.setLayout(jPanelSETTINGSLayout);
jPanelSETTINGSLayout.setHorizontalGroup(
jPanelSETTINGSLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelSETTINGSLayout.createSequentialGroup()
.addGroup(jPanelSETTINGSLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jTabbedPaneSETTINGS, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jPanelOPTION, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 0, Short.MAX_VALUE))
);
jPanelSETTINGSLayout.setVerticalGroup(
jPanelSETTINGSLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelSETTINGSLayout.createSequentialGroup()
.addComponent(jTabbedPaneSETTINGS, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanelOPTION, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(jPanelSETTINGS, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanelSETTINGS, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
);
pack();
}// </editor-fold>//GEN-END:initComponents
public void initLook() {
// Set the Nimbus look and feel
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(window.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(window.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(window.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(window.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
}
private void initStyle( Font font ) {
// load font
this.jTabbedPaneSETTINGS.setFont( font.deriveFont(14f) );
// buttons
this.jButtonOK.setFont( font.deriveFont(15f) );
this.jButtonCANCEL.setFont( font.deriveFont(15f) );
// paths panel
this.jPanelPATHS.setFont( font.deriveFont(13f) );
this.jLabelPATHS.setFont( font.deriveFont(18f) );
this.jLabelLOGS.setFont( font.deriveFont(2,14f) );
this.jTextFieldLOGS.setFont( font.deriveFont(13f) );
this.jLabelSTATS.setFont( font.deriveFont(2,14f) );
this.jTextFieldSTATS.setFont( font.deriveFont(13f) );
this.jLabelTRASH.setFont( font.deriveFont(2,14f) );
this.jTextFieldTRASH.setFont( font.deriveFont(13f) );
// whitelist panel
this.jPanelIPS.setFont( font.deriveFont(13f) );
// select
this.jTextFieldIPins.setFont( font.deriveFont(15f) );
this.jListIPskip.setFont( font.deriveFont(15f) );
// labels
this.jLabelIPtitle.setFont( font.deriveFont(17f) );
this.jLabelIPsub1.setFont( font.deriveFont(15f) );
this.jLabelIPsub2.setFont( font.deriveFont(15f) );
this.jLabelIPsub3.setFont( font.deriveFont(15f) );
}
private void jButtonOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOKActionPerformed
// apply changes
if ( this.craplog.isProcessing() == false ) {
this.craplog.setLogsDir( this.jTextFieldLOGS.getText());
this.craplog.setStatsDir( this.jTextFieldSTATS.getText());
this.craplog.setTrashDir( this.jTextFieldTRASH.getText());
ArrayList<String> tmp = new ArrayList<>();
for ( int i=0; i<this.ip_skip.size(); i++ ) {
tmp.add( this.ip_skip.get(i) );
}
this.craplog.setSkipIPs( tmp );
this.craplog.saveConfigs();
this.setVisible(false);
} else {
JOptionPane.showMessageDialog(null,
"Craplog is actually processing.\nPlease wait untill it finishes and retry",
"Retry later", 2);
}
}//GEN-LAST:event_jButtonOKActionPerformed
private void jButtonCANCELActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonCANCELActionPerformed
// close (hide) the window
this.setVisible(false);
}//GEN-LAST:event_jButtonCANCELActionPerformed
private void jTextFieldLOGSActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextFieldLOGSActionPerformed
// check the existence of the inserted path
this.checkLogsPath();
this.checkOK();
}//GEN-LAST:event_jTextFieldLOGSActionPerformed
private void jTextFieldSTATSActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextFieldSTATSActionPerformed
// check the existence of the inserted path
this.checkStatsPath();
this.checkOK();
}//GEN-LAST:event_jTextFieldSTATSActionPerformed
private void jTextFieldTRASHActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextFieldTRASHActionPerformed
// check the existence of the inserted path
this.checkTrashPath();
this.checkOK();
}//GEN-LAST:event_jTextFieldTRASHActionPerformed
private void jTextFieldLOGSCaretUpdate(javax.swing.event.CaretEvent evt) {//GEN-FIRST:event_jTextFieldLOGSCaretUpdate
// check the existence of the inserted path
this.checkLogsPath();
this.checkOK();
}//GEN-LAST:event_jTextFieldLOGSCaretUpdate
private void jTextFieldSTATSCaretUpdate(javax.swing.event.CaretEvent evt) {//GEN-FIRST:event_jTextFieldSTATSCaretUpdate
// check the existence of the inserted path
this.checkStatsPath();
this.checkOK();
}//GEN-LAST:event_jTextFieldSTATSCaretUpdate
private void jTextFieldTRASHCaretUpdate(javax.swing.event.CaretEvent evt) {//GEN-FIRST:event_jTextFieldTRASHCaretUpdate
// check the existence of the inserted path
this.checkTrashPath();
this.checkOK();
}//GEN-LAST:event_jTextFieldTRASHCaretUpdate
private void jTextFieldIPinsCaretUpdate(javax.swing.event.CaretEvent evt) {//GEN-FIRST:event_jTextFieldIPinsCaretUpdate
// check char sequence
String text = this.jTextFieldIPins.getText();
if (text.isBlank()
|| text.contains(" ")) {
this.jButtonIPadd.setEnabled(false);
} else {
this.jButtonIPadd.setEnabled(true);
}
}//GEN-LAST:event_jTextFieldIPinsCaretUpdate
private void jButtonIPaddActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonIPaddActionPerformed
// append to ip list
String ip = this.jTextFieldIPins.getText().trim();
if ( !this.ip_skip.contains( ip ) ) {
this.ip_skip.addElement( ip );
} else {
JOptionPane.showMessageDialog(null,
"The inserted string is already present in the list",
"Already exists", 1);
}
}//GEN-LAST:event_jButtonIPaddActionPerformed
private void jListIPskipKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jListIPskipKeyPressed
// enable removing if an item is selected
if ( this.jListIPskip.getSelectedIndices().length > 0 ) {
this.jButtonIPdel.setEnabled(true);
} else {
this.jButtonIPdel.setEnabled(false);
}
}//GEN-LAST:event_jListIPskipKeyPressed
private void jListIPskipMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jListIPskipMousePressed
// enable removing if an item is selected
if ( this.jListIPskip.getSelectedIndices().length > 0 ) {
this.jButtonIPdel.setEnabled(true);
} else {
this.jButtonIPdel.setEnabled(false);
}
}//GEN-LAST:event_jListIPskipMousePressed
private void jButtonIPdelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonIPdelActionPerformed
// remove the selected item/s
int[] indices = this.jListIPskip.getSelectedIndices();
ArrayList<String> items = new ArrayList<>();
for ( int i=0; i<indices.length; i++ ) {
items.add( this.ip_skip.get( indices[i] ) );
}
for ( String item : items ) {
this.ip_skip.removeElement( item );
}
}//GEN-LAST:event_jButtonIPdelActionPerformed
private void jButtonNEW2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonNEW2ActionPerformed
// create the new directory
this.mkdir( this.jTextFieldSTATS.getText().trim() );
this.jTextFieldSTATSActionPerformed( evt );
}//GEN-LAST:event_jButtonNEW2ActionPerformed
private void jButtonNEW3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonNEW3ActionPerformed
// create the new directory
this.mkdir( this.jTextFieldTRASH.getText().trim() );
this.jTextFieldTRASHActionPerformed( evt );
}//GEN-LAST:event_jButtonNEW3ActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButtonCANCEL;
private javax.swing.JButton jButtonIPadd;
private javax.swing.JButton jButtonIPdel;
private javax.swing.JButton jButtonNEW2;
private javax.swing.JButton jButtonNEW3;
private javax.swing.JButton jButtonOK;
private javax.swing.JLabel jLabelIPsub1;
private javax.swing.JLabel jLabelIPsub2;
private javax.swing.JLabel jLabelIPsub3;
private javax.swing.JLabel jLabelIPtitle;
private javax.swing.JLabel jLabelLOGS;
private javax.swing.JLabel jLabelPATHS;
private javax.swing.JLabel jLabelSTATS;
private javax.swing.JLabel jLabelTRASH;
private javax.swing.JLabel jLabelWARN1;
private javax.swing.JLabel jLabelWARN2;
private javax.swing.JLabel jLabelWARN3;
private javax.swing.JList<String> jListIPskip;
private javax.swing.JPanel jPanelIPS;
private javax.swing.JPanel jPanelOPTION;
private javax.swing.JPanel jPanelPATHS;
private javax.swing.JPanel jPanelSETTINGS;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JTabbedPane jTabbedPaneSETTINGS;
private javax.swing.JTextField jTextFieldIPins;
private javax.swing.JTextField jTextFieldLOGS;
private javax.swing.JTextField jTextFieldSTATS;
private javax.swing.JTextField jTextFieldTRASH;
// End of variables declaration//GEN-END:variables
}