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 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"; } } }