predelani object dialog do jframe

main
Michal 2025-02-16 09:35:50 +01:00
parent a3681616bd
commit c28c2dfe19
9 changed files with 681 additions and 613 deletions

14
config.properties Normal file
View File

@ -0,0 +1,14 @@
autoconnect = true
debug = true
port = 1225
server = 10.5.5.49
user = michal
volume = 75
start_minimalized = false
password = Michal2407
sound = true
debuger = true
sound_one_online=sound/schema1/one_online.wav
sound_next_offline=sound/schema1/next_offline.wav
sound_all_online = sound/schema1/all_online.wav
sound_first_offline=sound/schema1/first_offline.wav

View File

@ -35,8 +35,8 @@ public class MapView extends JPanel {
paintObjects.clear(); paintObjects.clear();
try { try {
lockImage = ImageIO.read(new File("img/lock.png")); lockImage = ImageIO.read(getClass().getResourceAsStream("/img/lock.png"));
unlockImage = ImageIO.read(new File("img/unlock.png")); unlockImage = ImageIO.read(getClass().getResourceAsStream("/img/unlock.png"));
} catch (IOException ex) { } catch (IOException ex) {
LogFile.printErr("File not found: " + ex); LogFile.printErr("File not found: " + ex);
} }

View File

@ -1,6 +1,5 @@
package jnet.client.gui; package jnet.client.gui;
import jnet.client.gui.dialog.ObjectDialog;
import jnet.client.Client; import jnet.client.Client;
import jnet.client.ExtAppManager; import jnet.client.ExtAppManager;
import jnet.client.gui.dialog.DialogLocalPing; import jnet.client.gui.dialog.DialogLocalPing;
@ -11,10 +10,10 @@ import java.awt.event.ActionListener;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.event.MouseListener; import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener; import java.awt.event.MouseMotionListener;
import java.util.Iterator;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
import javax.swing.JMenuItem; import javax.swing.JMenuItem;
import javax.swing.JPopupMenu; import javax.swing.JPopupMenu;
import jnet.client.gui.dialog.object.ObjectDialog;
import jnet.lib.Message; import jnet.lib.Message;
import jnet.lib.object.Map; import jnet.lib.object.Map;
import jnet.lib.object.MapObject; import jnet.lib.object.MapObject;
@ -161,7 +160,8 @@ public class MapViewAction implements MouseMotionListener, MouseListener {
for (Map map : Client.maps) { for (Map map : Client.maps) {
for (MapObject object : map.getObjects()) { for (MapObject object : map.getObjects()) {
if (object.getId() == id) { if (object.getId() == id) {
new ObjectDialog(map.getId(), object, false); //new ObjectDialog(map.getId(), object, false);
new ObjectDialog(object);
break; break;
} }
} }
@ -200,7 +200,8 @@ public class MapViewAction implements MouseMotionListener, MouseListener {
MapObject mo = new MapObject(); MapObject mo = new MapObject();
mo.setX(me.getX()); mo.setX(me.getX());
mo.setY(me.getY()); mo.setY(me.getY());
new ObjectDialog(map.getId(), mo, true); mo.setMap(map.getId());
new ObjectDialog(mo, true);
} }
}); });
itemAdd.setEnabled(!map.isLock()); itemAdd.setEnabled(!map.isLock());

View File

@ -1,607 +0,0 @@
package jnet.client.gui.dialog;
import jnet.client.Client;
import jnet.client.network.NettyClient;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Collections;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import jnet.lib.EventComparator;
import jnet.lib.LogFile;
import jnet.lib.Message;
import jnet.lib.Status;
import jnet.lib.object.Event;
import jnet.lib.object.MapObject;
import jnet.lib.object.ObjectType;
import jnet.lib.object.SnmpProfile;
public class ObjectDialog extends JDialog {
private MapObject obj;
private int mapId;
private Boolean newObject;
private JTextField nazevText = new JTextField();
private JLabel nazevWarning = new JLabel("Název musi mit min. 3 znaky");
private JTextField ipText = new JTextField();
private JLabel ipWarning = new JLabel("Neplatná IP adresa");
private JComboBox<String> typeComboBox = new JComboBox<String>();
private JTextField userText = new JTextField();
private JPasswordField hesloText = new JPasswordField();
private DefaultComboBoxModel<String> snmpmodel = new DefaultComboBoxModel<String>();
private JCheckBox disableCheBox = new JCheckBox();
private JTextField locationText = new JTextField();
private JTextArea descriptionText = new JTextArea();
private JCheckBox winboxBox = new JCheckBox("Winbox");
private JTextField portWinbox = new JTextField("8291");
private JCheckBox sshBox = new JCheckBox("SSH");
private JTextField portSsh = new JTextField("22");
private JCheckBox wwwBox = new JCheckBox("Web");
private JTextField portWww = new JTextField("80");
private JComboBox<String> wwwVerzeComboBox = new JComboBox<String>();
private JCheckBox telnetBox = new JCheckBox("Telnet");
private JTextField portTelnet = new JTextField("23");
private JCheckBox smstBox = new JCheckBox("Summit SMS");
private JTextField portSms = new JTextField("5020");
private JComboBox<String> smsVerzeComboBox = new JComboBox<String>();
private JComboBox<String> snmpProfileComboBox = new JComboBox<String>();
public ObjectDialog(int mapId, MapObject obj, boolean newObject) {
this.obj = obj;
this.mapId = mapId;
this.newObject = newObject;
if (newObject) {
setTitle("Nový objekt");
} else {
setTitle("Vlastnosti objektu");
}
setSize(600, 520);
setLocationRelativeTo(null);
setVisible(true);
setAlwaysOnTop(false);
setResizable(false);
setLayout(new BorderLayout());
JTabbedPane tabbedPane = new JTabbedPane();
JScrollPane tabNastaveni = new JScrollPane(tabNastaveni(),
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
tabbedPane.addTab("Informace", tabInfo());
tabbedPane.addTab("Nastaveni", tabNastaveni);
tabbedPane.addTab("Služby", tabSluzby());
tabbedPane.addTab("Události", tabUdalosti());
//tabbedPane.addTab("Sondy", tabSondy());
// pokud se jedna o novy objekt
if (newObject) {
tabbedPane.setSelectedIndex(1); // prepne na kartu nastaveni
tabbedPane.setEnabledAt(0, false); // vypne kartu informace
tabbedPane.setEnabledAt(3, false); // vypne kartu udalosti
}
add(tabbedPane, BorderLayout.CENTER);
JPanel pane = new JPanel();
JButton save = new JButton("Ulozit");
save.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// kontrola chyb
if (nazevText.getText().length() < 3) {
nazevWarning.setVisible(true);
return;
}
nazevWarning.setVisible(false);
if (!validateIp(ipText.getText())) {
ipWarning.setVisible(true);
return;
}
ipWarning.setVisible(false);
// ulozeni do objektu
obj.setMap(mapId);
obj.setName(nazevText.getText());
obj.setIp(ipText.getText());
obj.setUser(userText.getText());
obj.setPassword(new String(hesloText.getPassword()));
for (int i = 0; i < Client.objectType.size(); i++) {
if (typeComboBox.getSelectedIndex() == i) {
obj.setObjectType(Client.objectType.get(i).getId());
}
}
obj.setSnmpProfile(Client.snmpProfile.get(snmpProfileComboBox.getSelectedIndex()).getId());
obj.setActive(disableCheBox.isSelected());
obj.setDescription(descriptionText.getText());
obj.setLocation(locationText.getText());
obj.setWinbox(winboxBox.isSelected());
obj.setWinboxPort(portWinbox.getText());
obj.setSsh(sshBox.isSelected());
obj.setSshPort(portSsh.getText());
obj.setWeb(wwwBox.isSelected());
obj.setWebPort(portWww.getText());
obj.setWebVerze(wwwVerzeComboBox.getSelectedIndex());
obj.setTelnet(telnetBox.isSelected());
obj.setTelnetPort(portTelnet.getText());
obj.setSms(smstBox.isSelected());
obj.setSmsPort(portSms.getText());
obj.setSmsVerze(smsVerzeComboBox.getSelectedIndex());
if (!obj.isActive() || newObject) {
obj.setStatus(Status.NA);
}
// ArrayList<SnmpProbe> probe = new ArrayList<>();
// if (!newObject) {
// probe.addAll(obj.getSnmpProbe());
// }
// obj.setSnmpProbe(probe);
if (newObject) {
NettyClient.send(Message.ADD_OBJECT, obj);
} else {
NettyClient.send(Message.UPDATE_OBJECT, obj);
}
// zavreni dialogu
dispose();
}
});
pane.add(save);
JButton cancel = new JButton("Zrusit");
cancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});
pane.add(cancel);
add(pane, BorderLayout.PAGE_END);
// nacteni snmp profilu
for (SnmpProfile sp : Client.snmpProfile) {
snmpmodel.addElement(sp.getName());
}
// doplneni poli dialogu podle vybraneho objektu
if (!newObject) {
nazevText.setText(obj.getName());
ipText.setText(obj.getIp());
userText.setText(obj.getUser());
hesloText.setText(obj.getPassword());
for (int i = 0; i < Client.objectType.size() - 1; i++) {
if (obj.getObjectType() == Client.objectType.get(i).getId()) {
typeComboBox.setSelectedIndex(i);
}
}
for (int i = 0; i < Client.snmpProfile.size(); i++) {
if (Client.snmpProfile.get(i).getId() == obj.getSnmpProfile()) {
snmpProfileComboBox.setSelectedIndex(i);
}
}
disableCheBox.setSelected(obj.isActive());
descriptionText.setText(obj.getDescription());
locationText.setText(obj.getLocation());
winboxBox.setSelected(obj.isWinbox());
portWinbox.setText(obj.getWinboxPort());
sshBox.setSelected(obj.isSsh());
portSsh.setText(obj.getSshPort());
wwwBox.setSelected(obj.isWeb());
portWww.setText(obj.getWebPort());
wwwVerzeComboBox.setSelectedIndex(obj.getWebVerze());
telnetBox.setSelected(obj.isTelnet());
portTelnet.setText(obj.getTelnetPort());
smstBox.setSelected(obj.isSms());
portSms.setText(obj.getSmsPort());
smsVerzeComboBox.setSelectedIndex(obj.getSmsVerze());
} else {
disableCheBox.setSelected(true);
}
show();
}
private JPanel tabInfo() {
JPanel p = new JPanel(null);
/*
Map<String, String> label = new HashMap<String, String>();
label.put("Popis", "1.3.6.1.2.1.1.1.0");
label.put("Uptime", "1.3.6.1.2.1.1.3.0");
label.put("Contact", "1.3.6.1.2.1.1.4.0");
label.put("Name", "1.3.6.1.2.1.1.5.0");
if(!newObject){ /// TODO u objektu u kterych neni snmp protokol povolen vraci system err null
Thread ti = new Thread() {
@Override
public void run() {
super.run();
// nacteni snmp profilu
String port = "161";
String community = "public";
int version = SNMPManager.version1;
for (SnmpProfile sp : Client.serverSettings.getSnmp()) {
if (obj.getSnmpProfile() == sp.getId()) {
port = sp.getPort();
community = sp.getCommunity();
version = sp.getVersion();
break;
}
}
SNMPManager mngr = new SNMPManager(obj.getIp(), port, community, version);
try {
mngr.start();
} catch (Exception e) {
}
int y = 30;
for (Entry<String, String> entry : label.entrySet()) {
try {
JLabel label = new JLabel(entry.getKey());
label.setBounds(20, y, 90, 25);
JLabel value = new JLabel(mngr.getAsString(new OID(entry.getValue())));
value.setBounds(100, y, 200, 25);
p.add(label);
p.add(value);
y += 30;
p.revalidate();
p.repaint();
} catch (Exception e) {
LogFile.printErr("Object dialog - SNMP error: " + e);
}
}
}
};
ti.start();
}
*/
return p;
}
private JPanel tabNastaveni() {
JPanel p = new JPanel();
p.setLayout(null);
JLabel nazevLabel = new JLabel("Název");
nazevLabel.setBounds(20, 30, 80, 25);
p.add(nazevLabel);
nazevText.setBounds(110, 30, 160, 25);
p.add(nazevText);
nazevWarning.setForeground(Color.red);
nazevWarning.setBounds(110, 55, 160, 25);
nazevWarning.setVisible(false);
p.add(nazevWarning);
JLabel ipLabel = new JLabel("IP adresa");
ipLabel.setBounds(300, 30, 80, 25);
p.add(ipLabel);
ipText.setBounds(390, 30, 160, 25);
p.add(ipText);
ipWarning.setForeground(Color.red);
ipWarning.setBounds(390, 55, 160, 25);
ipWarning.setVisible(false);
p.add(ipWarning);
JLabel typLabel = new JLabel("Typ");
typLabel.setBounds(20, 130, 80, 25);
p.add(typLabel);
DefaultComboBoxModel<String> model = new DefaultComboBoxModel<String>();
for (ObjectType obj : Client.objectType) {
model.addElement(obj.getName());
}
typeComboBox.setModel(model);
typeComboBox.setBounds(110, 130, 160, 25);
p.add(typeComboBox);
JLabel userLabel = new JLabel("Uživatel");
userLabel.setBounds(20, 80, 80, 25);
p.add(userLabel);
userText.setBounds(110, 80, 160, 25);
p.add(userText);
JLabel hesloLabel = new JLabel("Heslo");
hesloLabel.setBounds(300, 80, 80, 25);
p.add(hesloLabel);
hesloText.setBounds(390, 80, 160, 25);
p.add(hesloText);
JLabel snmpLabel = new JLabel("SNMP profil");
snmpLabel.setBounds(300, 130, 80, 25);
p.add(snmpLabel);
snmpProfileComboBox.setModel(snmpmodel);
snmpProfileComboBox.setBounds(390, 130, 160, 25);
p.add(snmpProfileComboBox);
JLabel disableLabel = new JLabel("Aktivní");
disableLabel.setBounds(20, 180, 80, 25);
p.add(disableLabel);
disableCheBox.setBounds(110, 180, 160, 25);
p.add(disableCheBox);
JButton snmpTest = new JButton("Test SNMP");
snmpTest.setBounds(390, 180, 160, 25);
snmpTest.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
/* TODO idealne at test provede server (ten bude osesilat informace o snmp pozadavky!!!!
Thread testSnmp = new Thread() {
@Override
public void run() {
try {
// nacteni snmp profilu
String port = "161";
String community = "public";
int version = SNMPManager.version1;
for (int i = 0; i < Client.serverSettings.getSnmp().size(); i++) {
if (snmpProfileComboBox.getSelectedIndex() == i) {
port = Client.serverSettings.getSnmp().get(i).getPort();
community = Client.serverSettings.getSnmp().get(i).getCommunity();
version = Client.serverSettings.getSnmp().get(i).getVersion();
break;
}
}
SNMPManager mngr = new SNMPManager(ipText.getText(), port, community, version);
mngr.start();
String desc = mngr.getSysDescr();
JOptionPane.showMessageDialog(ObjectDialog.this, "Odpoved: " + desc, "SNMP test", JOptionPane.INFORMATION_MESSAGE);
} catch (Exception ex) {
JOptionPane.showMessageDialog(ObjectDialog.this, "SNMP se nepodařilo načíst", "SNMP test", JOptionPane.ERROR_MESSAGE);
System.err.println("SNMP test error: " + ex.getMessage());
}
}
};
testSnmp.start();
*/
}
});
p.add(snmpTest);
JLabel locLabel = new JLabel("Umístění");
locLabel.setBounds(20, 230, 80, 25);
p.add(locLabel);
locationText.setBounds(110, 230, 440, 25);
p.add(locationText);
JLabel descLabel = new JLabel("Poznámka");
descLabel.setBounds(20, 280, 80, 25);
p.add(descLabel);
descriptionText.setBounds(110, 280, 440, 100);
descriptionText.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.BLACK), BorderFactory.createEmptyBorder(10, 10, 10, 10)));
p.add(descriptionText);
return p;
}
private JPanel tabSluzby() {
JPanel p = new JPanel();
p.setLayout(null);
winboxBox.setBounds(20, 30, 80, 25);
p.add(winboxBox);
JLabel winbox_port = new JLabel("port:");
winbox_port.setBounds(130, 30, 60, 25);
p.add(winbox_port);
portWinbox.setBounds(180, 30, 60, 25);
p.add(portWinbox);
sshBox.setBounds(20, 60, 80, 25);
p.add(sshBox);
JLabel ssh_port = new JLabel("port:");
ssh_port.setBounds(130, 60, 60, 25);
p.add(ssh_port);
portSsh.setBounds(180, 60, 60, 25);
p.add(portSsh);
wwwBox.setBounds(20, 90, 80, 25);
p.add(wwwBox);
JLabel www_port = new JLabel("port:");
www_port.setBounds(130, 90, 60, 25);
p.add(www_port);
portWww.setBounds(180, 90, 60, 25);
p.add(portWww);
JLabel www_verze = new JLabel("verze:");
www_verze.setBounds(260, 90, 60, 25);
p.add(www_verze);
wwwVerzeComboBox.setModel(new DefaultComboBoxModel(new String[]{"HTTP", "HTTPS"}));
wwwVerzeComboBox.setBounds(320, 90, 80, 25);
p.add(wwwVerzeComboBox);
telnetBox.setBounds(20, 120, 80, 25);
p.add(telnetBox);
JLabel telnet_port = new JLabel("port:");
telnet_port.setBounds(130, 120, 60, 25);
p.add(telnet_port);
portTelnet.setBounds(180, 120, 60, 25);
p.add(portTelnet);
smstBox.setBounds(20, 150, 80, 25);
p.add(smstBox);
JLabel sms_port = new JLabel("port:");
sms_port.setBounds(130, 150, 60, 25);
p.add(sms_port);
portSms.setBounds(180, 150, 60, 25);
p.add(portSms);
JLabel sms_verze = new JLabel("verze:");
sms_verze.setBounds(260, 150, 60, 25);
p.add(sms_verze);
smsVerzeComboBox.setModel(new DefaultComboBoxModel(new String[]{"SDV", "BT"}));
smsVerzeComboBox.setBounds(320, 150, 80, 25);
p.add(smsVerzeComboBox);
return p;
}
private JPanel tabUdalosti() {
String column[] = {"Začátek", "Konec", "Stav"};
DefaultTableModel tableModel = new DefaultTableModel(column, 0) {
@Override
public boolean isCellEditable(int row, int column) {
//all cells false
return false;
}
};
try {
// TODO pri vytvareni noveho objektu to vyhodi chybu
Collections.sort(Client.events, new EventComparator());
Collections.reverse(Client.events);
if (!newObject) {
for (Event e : Client.events) {
if (e.getObject() == obj.getId()) {
Object[] d = {
getDate(e.getStart()),
getDate(e.getEnd()),
e.getDescription()};
tableModel.addRow(d);
}
}
}
} catch (Exception e) {
LogFile.printErr("Object log error: " + e.getMessage());
}
JTable table = new JTable(tableModel);
table.setPreferredScrollableViewportSize(new Dimension(500, 350)); // Šířka 500, výška 300
JButton btn = new JButton("Smazat události");
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
tableModel.setRowCount(0);
NettyClient.send(Message.DELETE_LOG, obj.getId());
}
});
JPanel panel = new JPanel();
panel.add(new JScrollPane(table));
panel.add(btn);
return panel;
}
private JPanel tabSondy() {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
String column[] = {"Popis", "OID", "Aktivni", "Zobrazit"};
DefaultTableModel tableModel = new DefaultTableModel(column, 0);
if (!newObject) {
// try {
// for (SnmpProbe p : obj.getSnmpProbe()) {
// Object[] d = {p.getName(), p.getOid(), "", ""};
// tableModel.addRow(d);
// }
// } catch (Exception e) {
// LogFile.printErr("Probe list " + e.getMessage());
// }
}
JScrollPane table = new JScrollPane();
table.add(new JTable(tableModel));
panel.add(new JTable(tableModel), BorderLayout.CENTER);
JPanel jp = new JPanel();
jp.add(new JLabel("Přidat: "));
panel.add(jp, BorderLayout.PAGE_END);
return panel;
}
private boolean validateIp(String ip) {
Pattern pattern = Pattern.compile("^(([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d\\d?|2[0-4]\\d|25[0-5])$");
Matcher matcher = pattern.matcher(ip);
return matcher.matches();
}
private boolean validatePort(String port) {
try {
int pNum = Integer.parseInt(port);
if ((pNum > 0) && (pNum < 65536)) {
return true;
}
} catch (NumberFormatException e) {
}
return false;
}
private String getDate(long date) {
if (date != 0) {
SimpleDateFormat ft = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
return ft.format(new Date(date));
}
return "";
}
private String getStatus(int status) {
switch (status) {
case Status.OK: // online
return "online";
case Status.WARNING: // warning
return "varování";
case Status.OFFLINE: // offline
return "offline";
default: // other
return "n/a";
}
}
}

View File

@ -0,0 +1,182 @@
package jnet.client.gui.dialog.object;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import jnet.client.Client;
import jnet.client.network.NettyClient;
import jnet.lib.Message;
import jnet.lib.Status;
import jnet.lib.object.MapObject;
public class ObjectDialog extends JFrame {
private MapObject obj;
private int mapId;
private Boolean newObject;
public ObjectDialog(MapObject obj) {
this.obj = obj;
this.mapId = obj.getMap();
this.newObject = false;
init();
}
public ObjectDialog(MapObject obj, boolean newObject) {
this.obj = new MapObject();
this.mapId = obj.getMap();
this.newObject = newObject;
init();
}
private void init() {
if (newObject) {
setTitle("Nový objekt");
} else {
setTitle(obj.getName());
}
setSize(600, 520);
setLocationRelativeTo(null);
setVisible(true);
setAlwaysOnTop(false);
setResizable(false);
setLayout(new BorderLayout());
JTabbedPane tabbedPane = new JTabbedPane();
// JScrollPane tabNastaveni = new JScrollPane(tabNastaveni(),
// JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
TabInfo tabInfo = new TabInfo();
TabSettings tabSettings = new TabSettings(obj, newObject);
TabServices tabServices = new TabServices(obj, newObject);
TabEvents tabEvents = new TabEvents(obj);
tabbedPane.addTab("Informace", tabInfo);
tabbedPane.addTab("Nastaveni", tabSettings);
tabbedPane.addTab("Služby", tabServices);
tabbedPane.addTab("Události", tabEvents);
//tabbedPane.addTab("Sondy", tabSondy());
// pokud se jedna o novy objekt
if (newObject) {
tabbedPane.setSelectedIndex(1); // prepne na kartu nastaveni
tabbedPane.setEnabledAt(0, false); // vypne kartu informace
tabbedPane.setEnabledAt(3, false); // vypne kartu udalosti
}
add(tabbedPane, BorderLayout.CENTER);
JPanel pane = new JPanel();
JButton save = new JButton("Ulozit");
save.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// kontrola chyb
String nazev = tabSettings.getName();
if (nazev == null) {
return;
}
String ip = tabSettings.getIp();
if (ip == null) {
return;
}
// ulozeni do objektu
obj.setMap(mapId);
obj.setName(nazev);
obj.setIp(ip);
obj.setUser(tabSettings.getUser());
obj.setPassword(new String(tabSettings.getPassword()));
obj.setObjectType(Client.objectType.get(tabSettings.getObjType()).getId());
obj.setSnmpProfile(Client.snmpProfile.get(tabSettings.getSnmpProfile()).getId());
obj.setActive(tabSettings.isActive());
obj.setDescription(tabSettings.getDesc());
obj.setLocation(tabSettings.getLoc());
// TODO validaci portu
obj.setWinbox(tabServices.isWinbox());
obj.setWinboxPort(tabServices.getWinboxPort());
obj.setSsh(tabServices.isSsh());
obj.setSshPort(tabServices.getSshPort());
obj.setWeb(tabServices.isWeb());
obj.setWebPort(tabServices.getWebPort());
obj.setWebVerze(tabServices.getWebVersion());
obj.setTelnet(tabServices.isTelnet());
obj.setTelnetPort(tabServices.getTelnetPort());
obj.setSms(tabServices.isSms());
obj.setSmsPort(tabServices.getSmsPort());
obj.setSmsVerze(tabServices.getSmsVersion());
if (!obj.isActive() || newObject) {
obj.setStatus(Status.NA);
}
// ArrayList<SnmpProbe> probe = new ArrayList<>();
// if (!newObject) {
// probe.addAll(obj.getSnmpProbe());
// }
// obj.setSnmpProbe(probe);
if (newObject) {
NettyClient.send(Message.ADD_OBJECT, obj);
} else {
NettyClient.send(Message.UPDATE_OBJECT, obj);
}
// zavreni dialogu
dispose();
}
});
pane.add(save);
JButton cancel = new JButton("Zrusit");
cancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});
pane.add(cancel);
add(pane, BorderLayout.PAGE_END);
}
private boolean validatePort(String port) {
try {
int pNum = Integer.parseInt(port);
if ((pNum > 0) && (pNum < 65536)) {
return true;
}
} catch (NumberFormatException e) {
}
return false;
}
private String getStatus(int status) {
switch (status) {
case Status.OK: // online
return "online";
case Status.WARNING: // warning
return "varování";
case Status.OFFLINE: // offline
return "offline";
default: // other
return "n/a";
}
}
}

View File

@ -0,0 +1,82 @@
package jnet.client.gui.dialog.object;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Collections;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import jnet.client.Client;
import jnet.client.network.NettyClient;
import jnet.lib.EventComparator;
import jnet.lib.LogFile;
import jnet.lib.Message;
import jnet.lib.object.Event;
import jnet.lib.object.MapObject;
public class TabEvents extends JPanel {
private MapObject obj;
public TabEvents(MapObject obj) {
this.obj = obj;
String column[] = {"Začátek", "Konec", "Stav"};
DefaultTableModel tableModel = new DefaultTableModel(column, 0) {
@Override
public boolean isCellEditable(int row, int column) {
//all cells false
return false;
}
};
try {
// TODO pri vytvareni noveho objektu to vyhodi chybu
Collections.sort(Client.events, new EventComparator());
Collections.reverse(Client.events);
for (Event e : Client.events) {
if (e.getObject() == obj.getId()) {
Object[] d = {
getDate(e.getStart()),
getDate(e.getEnd()),
e.getDescription()};
tableModel.addRow(d);
}
}
} catch (Exception e) {
LogFile.printErr("Object log error: " + e.getMessage());
}
JTable table = new JTable(tableModel);
table.setPreferredScrollableViewportSize(new Dimension(500, 350)); // Šířka 500, výška 300
JButton btn = new JButton("Smazat události");
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
tableModel.setRowCount(0);
NettyClient.send(Message.DELETE_LOG, obj.getId());
}
});
this.add(new JScrollPane(table));
this.add(btn);
}
private String getDate(long date) {
if (date != 0) {
SimpleDateFormat ft = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
return ft.format(new Date(date));
}
return "";
}
}

View File

@ -0,0 +1,13 @@
package jnet.client.gui.dialog.object;
import javax.swing.JPanel;
public class TabInfo extends JPanel{
public TabInfo() {
}
}

View File

@ -0,0 +1,165 @@
package jnet.client.gui.dialog.object;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import jnet.lib.object.MapObject;
class TabServices extends JPanel {
private MapObject obj;
private boolean newObject;
private JCheckBox winboxBox = new JCheckBox("Winbox");
private JTextField portWinbox = new JTextField("8291");
private JCheckBox sshBox = new JCheckBox("SSH");
private JTextField portSsh = new JTextField("22");
private JCheckBox wwwBox = new JCheckBox("Web");
private JTextField portWww = new JTextField("80");
private JComboBox<String> wwwVerzeComboBox = new JComboBox<String>();
private JCheckBox telnetBox = new JCheckBox("Telnet");
private JTextField portTelnet = new JTextField("21");
private JCheckBox smstBox = new JCheckBox("Summit SMS");
private JTextField portSms = new JTextField("5020");
private JComboBox<String> smsVerzeComboBox = new JComboBox<String>();
public TabServices(MapObject obj, boolean newObject) {
this.obj = obj;
this.newObject = newObject;
this.setLayout(null);
winboxBox.setBounds(20, 30, 80, 25);
this.add(winboxBox);
JLabel winbox_port = new JLabel("port:");
winbox_port.setBounds(130, 30, 60, 25);
this.add(winbox_port);
portWinbox.setBounds(180, 30, 60, 25);
this.add(portWinbox);
sshBox.setBounds(20, 60, 80, 25);
this.add(sshBox);
JLabel ssh_port = new JLabel("port:");
ssh_port.setBounds(130, 60, 60, 25);
this.add(ssh_port);
portSsh.setBounds(180, 60, 60, 25);
this.add(portSsh);
wwwBox.setBounds(20, 90, 80, 25);
this.add(wwwBox);
JLabel www_port = new JLabel("port:");
www_port.setBounds(130, 90, 60, 25);
this.add(www_port);
portWww.setBounds(180, 90, 60, 25);
this.add(portWww);
JLabel www_verze = new JLabel("verze:");
www_verze.setBounds(260, 90, 60, 25);
this.add(www_verze);
wwwVerzeComboBox.setModel(new DefaultComboBoxModel(new String[]{"HTTP", "HTTPS"}));
wwwVerzeComboBox.setBounds(320, 90, 80, 25);
this.add(wwwVerzeComboBox);
telnetBox.setBounds(20, 120, 80, 25);
this.add(telnetBox);
JLabel telnet_port = new JLabel("port:");
telnet_port.setBounds(130, 120, 60, 25);
this.add(telnet_port);
portTelnet.setBounds(180, 120, 60, 25);
this.add(portTelnet);
smstBox.setBounds(20, 150, 80, 25);
this.add(smstBox);
JLabel sms_port = new JLabel("port:");
sms_port.setBounds(130, 150, 60, 25);
this.add(sms_port);
portSms.setBounds(180, 150, 60, 25);
this.add(portSms);
JLabel sms_verze = new JLabel("verze:");
sms_verze.setBounds(260, 150, 60, 25);
this.add(sms_verze);
smsVerzeComboBox.setModel(new DefaultComboBoxModel(new String[]{"SDV", "BT"}));
smsVerzeComboBox.setBounds(320, 150, 80, 25);
this.add(smsVerzeComboBox);
// predvyplneni poli
if (!newObject) {
winboxBox.setSelected(obj.isWinbox());
portWinbox.setText(obj.getWinboxPort());
sshBox.setSelected(obj.isSsh());
portSsh.setText(obj.getSshPort());
wwwBox.setSelected(obj.isWeb());
portWww.setText(obj.getWebPort());
wwwVerzeComboBox.setSelectedIndex(obj.getWebVerze());
telnetBox.setSelected(obj.isTelnet());
portTelnet.setText(obj.getTelnetPort());
smstBox.setSelected(obj.isSms());
portSms.setText(obj.getSmsPort());
smsVerzeComboBox.setSelectedIndex(obj.getSmsVerze());
}
}
public boolean isWinbox() {
return winboxBox.isSelected();
}
public String getWinboxPort() {
return portWinbox.getText();
}
public boolean isSsh() {
return sshBox.isSelected();
}
public String getSshPort() {
return portSsh.getText();
}
public boolean isWeb() {
return wwwBox.isSelected();
}
public String getWebPort() {
return portWww.getText();
}
public int getWebVersion() {
return wwwVerzeComboBox.getSelectedIndex();
}
public boolean isTelnet() {
return telnetBox.isSelected();
}
public String getTelnetPort() {
return portTelnet.getText();
}
public boolean isSms() {
return smstBox.isSelected();
}
public String getSmsPort() {
return portSms.getText();
}
public int getSmsVersion() {
return smsVerzeComboBox.getSelectedIndex();
}
}

View File

@ -0,0 +1,218 @@
package jnet.client.gui.dialog.object;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import jnet.client.Client;
import jnet.lib.object.MapObject;
import jnet.lib.object.ObjectType;
import jnet.lib.object.SnmpProfile;
public class TabSettings extends JPanel {
private MapObject obj;
private boolean newObject;
private JTextField nazevText = new JTextField();
private JLabel nazevWarning = new JLabel("Název musi mit min. 3 znaky");
private JTextField ipText = new JTextField();
private JLabel ipWarning = new JLabel("Neplatná IP adresa");
private JComboBox<String> typeComboBox = new JComboBox<String>();
private JTextField userText = new JTextField();
private JPasswordField hesloText = new JPasswordField();
private DefaultComboBoxModel<String> snmpmodel = new DefaultComboBoxModel<String>();
private JCheckBox disableCheBox = new JCheckBox();
private JTextField locationText = new JTextField();
private JTextArea descriptionText = new JTextArea();
private JComboBox<String> snmpProfileComboBox = new JComboBox<String>();
public TabSettings(MapObject obj, boolean newObject) {
this.obj = obj;
this.newObject = newObject;
this.setLayout(null);
JLabel nazevLabel = new JLabel("Název");
nazevLabel.setBounds(20, 30, 80, 25);
this.add(nazevLabel);
nazevText.setBounds(110, 30, 160, 25);
this.add(nazevText);
nazevWarning.setForeground(Color.red);
nazevWarning.setBounds(110, 55, 160, 25);
nazevWarning.setVisible(false);
this.add(nazevWarning);
JLabel ipLabel = new JLabel("IP adresa");
ipLabel.setBounds(300, 30, 80, 25);
this.add(ipLabel);
ipText.setBounds(390, 30, 160, 25);
this.add(ipText);
ipWarning.setForeground(Color.red);
ipWarning.setBounds(390, 55, 160, 25);
ipWarning.setVisible(false);
this.add(ipWarning);
JLabel typLabel = new JLabel("Typ");
typLabel.setBounds(20, 130, 80, 25);
this.add(typLabel);
DefaultComboBoxModel<String> model = new DefaultComboBoxModel<String>();
for (ObjectType ot : Client.objectType) {
model.addElement(ot.getName());
}
typeComboBox.setModel(model);
typeComboBox.setBounds(110, 130, 160, 25);
this.add(typeComboBox);
JLabel userLabel = new JLabel("Uživatel");
userLabel.setBounds(20, 80, 80, 25);
this.add(userLabel);
userText.setBounds(110, 80, 160, 25);
this.add(userText);
JLabel hesloLabel = new JLabel("Heslo");
hesloLabel.setBounds(300, 80, 80, 25);
this.add(hesloLabel);
hesloText.setBounds(390, 80, 160, 25);
this.add(hesloText);
JLabel snmpLabel = new JLabel("SNMP profil");
snmpLabel.setBounds(300, 130, 80, 25);
this.add(snmpLabel);
// nacteni snmp profilu
for (SnmpProfile sp : Client.snmpProfile) {
snmpmodel.addElement(sp.getName());
}
snmpProfileComboBox.setModel(snmpmodel);
snmpProfileComboBox.setBounds(390, 130, 160, 25);
this.add(snmpProfileComboBox);
JLabel disableLabel = new JLabel("Aktivní");
disableLabel.setBounds(20, 180, 80, 25);
this.add(disableLabel);
disableCheBox.setBounds(110, 180, 160, 25);
this.add(disableCheBox);
JButton snmpTest = new JButton("Test SNMP");
snmpTest.setBounds(390, 180, 160, 25);
snmpTest.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
/* TODO idealne at test provede server (ten bude osesilat informace o snmp pozadavky!!!!
*/
}
});
this.add(snmpTest);
JLabel locLabel = new JLabel("Umístění");
locLabel.setBounds(20, 230, 80, 25);
this.add(locLabel);
locationText.setBounds(110, 230, 440, 25);
this.add(locationText);
JLabel descLabel = new JLabel("Poznámka");
descLabel.setBounds(20, 280, 80, 25);
this.add(descLabel);
descriptionText.setBounds(110, 280, 440, 100);
descriptionText.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.BLACK), BorderFactory.createEmptyBorder(10, 10, 10, 10)));
this.add(descriptionText);
// predvyplneni poli
if (!newObject) {
nazevText.setText(obj.getName());
ipText.setText(obj.getIp());
userText.setText(obj.getUser());
hesloText.setText(obj.getPassword());
for (int i = 0; i < Client.objectType.size() - 1; i++) {
if (obj.getObjectType() == Client.objectType.get(i).getId()) {
typeComboBox.setSelectedIndex(i);
}
}
for (int i = 0; i < Client.snmpProfile.size(); i++) {
if (Client.snmpProfile.get(i).getId() == obj.getSnmpProfile()) {
snmpProfileComboBox.setSelectedIndex(i);
}
}
disableCheBox.setSelected(obj.isActive());
descriptionText.setText(obj.getDescription());
locationText.setText(obj.getLocation());
} else {
disableCheBox.setSelected(true);
}
}
private boolean validateIp(String ip) {
Pattern pattern = Pattern.compile("^(([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d\\d?|2[0-4]\\d|25[0-5])$");
Matcher matcher = pattern.matcher(ip);
return matcher.matches();
}
public String getName() {
if (nazevText.getText().length() < 3) {
nazevWarning.setVisible(true);
return null;
}
return nazevText.getText();
}
public String getIp() {
if (!validateIp(ipText.getText())) {
ipWarning.setVisible(true);
return null;
}
return ipText.getText();
}
public String getUser() {
return userText.getText();
}
public char[] getPassword(){
return hesloText.getPassword();
}
public int getObjType(){
return typeComboBox.getSelectedIndex();
}
public int getSnmpProfile(){
return snmpProfileComboBox.getSelectedIndex();
}
public String getDesc(){
return descriptionText.getText();
}
public String getLoc() {
return locationText.getText();
}
public boolean isActive(){
return disableCheBox.isSelected();
}
}