Compare commits
10 Commits
465879cdae
...
a3681616bd
| Author | SHA1 | Date |
|---|---|---|
|
|
a3681616bd | |
|
|
c73a87645b | |
|
|
fb09049516 | |
|
|
16bbf9ee0f | |
|
|
064bbdeb46 | |
|
|
e5cd72cb5f | |
|
|
57371e1f26 | |
|
|
05dd0f7273 | |
|
|
d9144acbc1 | |
|
|
86af127945 |
|
|
@ -0,0 +1 @@
|
||||||
|
*.log
|
||||||
11
build.xml
|
|
@ -69,5 +69,16 @@
|
||||||
properties which you can use, check the target you are overriding in the
|
properties which you can use, check the target you are overriding in the
|
||||||
nbproject/build-impl.xml file.
|
nbproject/build-impl.xml file.
|
||||||
|
|
||||||
|
|
||||||
-->
|
-->
|
||||||
|
<target name="-post-compile">
|
||||||
|
<copy todir="${build.classes.dir}">
|
||||||
|
<fileset dir="resources"/>
|
||||||
|
</copy>
|
||||||
|
</target>
|
||||||
|
<target name="-post-jar">
|
||||||
|
<copy todir="${dist.jar.dir}">
|
||||||
|
<fileset dir="resources"/>
|
||||||
|
</copy>
|
||||||
|
</target>
|
||||||
</project>
|
</project>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 424 B After Width: | Height: | Size: 424 B |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 725 B After Width: | Height: | Size: 725 B |
|
Before Width: | Height: | Size: 644 B After Width: | Height: | Size: 644 B |
|
Before Width: | Height: | Size: 634 B After Width: | Height: | Size: 634 B |
|
Before Width: | Height: | Size: 679 B After Width: | Height: | Size: 679 B |
|
Before Width: | Height: | Size: 769 B After Width: | Height: | Size: 769 B |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 188 B After Width: | Height: | Size: 188 B |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 362 B After Width: | Height: | Size: 362 B |
|
Before Width: | Height: | Size: 312 B After Width: | Height: | Size: 312 B |
|
Before Width: | Height: | Size: 659 B After Width: | Height: | Size: 659 B |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 397 B After Width: | Height: | Size: 397 B |
|
Before Width: | Height: | Size: 313 B After Width: | Height: | Size: 313 B |
|
Before Width: | Height: | Size: 802 B After Width: | Height: | Size: 802 B |
|
Before Width: | Height: | Size: 1023 B After Width: | Height: | Size: 1023 B |
|
Before Width: | Height: | Size: 177 B After Width: | Height: | Size: 177 B |
|
|
@ -1,23 +1,23 @@
|
||||||
package jnet.client;
|
package jnet.client;
|
||||||
|
|
||||||
import jnet.client.gui.Tray;
|
|
||||||
import jnet.client.gui.Window;
|
import jnet.client.gui.Window;
|
||||||
import jnet.client.network.NettyClient;
|
import jnet.client.network.NettyClient;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.CopyOnWriteArrayList;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
|
import jnet.client.gui.Tray;
|
||||||
import jnet.lib.BuilddDate;
|
import jnet.lib.BuilddDate;
|
||||||
import jnet.lib.LogFile;
|
import jnet.lib.LogFile;
|
||||||
import jnet.lib.PropertiesManager;
|
import jnet.lib.PropertiesManager;
|
||||||
import jnet.lib.object.Event;
|
import jnet.lib.object.Event;
|
||||||
import jnet.lib.object.Map;
|
import jnet.lib.object.Map;
|
||||||
import jnet.lib.object.MapObject;
|
|
||||||
import jnet.lib.object.ObjectType;
|
import jnet.lib.object.ObjectType;
|
||||||
import jnet.lib.object.OnlineClients;
|
import jnet.lib.object.OnlineClients;
|
||||||
import jnet.lib.object.ServerConfig;
|
import jnet.lib.object.ServerConfig;
|
||||||
import jnet.lib.object.SnmpProfile;
|
import jnet.lib.object.SnmpProfile;
|
||||||
import jnet.lib.object.User;
|
import jnet.lib.object.User;
|
||||||
|
|
||||||
|
|
||||||
public class Client {
|
public class Client {
|
||||||
|
|
||||||
// verze serveru
|
// verze serveru
|
||||||
|
|
@ -26,12 +26,12 @@ public class Client {
|
||||||
public static final String APP_NAME = "jNet";
|
public static final String APP_NAME = "jNet";
|
||||||
|
|
||||||
public static List<Map> maps = new CopyOnWriteArrayList<>();
|
public static List<Map> maps = new CopyOnWriteArrayList<>();
|
||||||
public static ArrayList<MapObject> mapObject = new ArrayList<>();
|
//public static List<MapObject> mapObject = new ArrayList<>();
|
||||||
public static ArrayList<OnlineClients> onlineClients = new ArrayList<>();
|
public static List<OnlineClients> onlineClients = new ArrayList<>();
|
||||||
public static ArrayList<ObjectType> objectType = new ArrayList<>();
|
public static List<ObjectType> objectType = new ArrayList<>();
|
||||||
public static ArrayList<SnmpProfile> snmpProfile = new ArrayList<>();
|
public static List<SnmpProfile> snmpProfile = new ArrayList<>();
|
||||||
public static ArrayList<User> users = new ArrayList<>();
|
public static List<User> users = new ArrayList<>();
|
||||||
public static ArrayList<Event> events = new ArrayList<>();
|
public static List<Event> events = new ArrayList<>();
|
||||||
public static User user;
|
public static User user;
|
||||||
public static boolean connected = false;
|
public static boolean connected = false;
|
||||||
public static Window okno = new Window();
|
public static Window okno = new Window();
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,14 @@
|
||||||
package jnet.client;
|
package jnet.client;
|
||||||
|
|
||||||
import jnet.client.gui.MapTree;
|
|
||||||
import jnet.client.gui.MapView;
|
|
||||||
import jnet.client.gui.Tray;
|
|
||||||
import jnet.client.network.NettyClient;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
|
import jnet.client.gui.UIUpdater;
|
||||||
|
import jnet.client.network.NettyClient;
|
||||||
import jnet.lib.LogFile;
|
import jnet.lib.LogFile;
|
||||||
import jnet.lib.Message;
|
import jnet.lib.Message;
|
||||||
import jnet.lib.object.Event;
|
import jnet.lib.object.Event;
|
||||||
import jnet.lib.object.Map;
|
import jnet.lib.object.Map;
|
||||||
import jnet.lib.object.MapObject;
|
import jnet.lib.object.MapObject;
|
||||||
import jnet.lib.object.ObjectType;
|
import jnet.lib.object.ObjectType;
|
||||||
|
|
@ -17,204 +18,196 @@ import jnet.lib.object.SnmpProfile;
|
||||||
import jnet.lib.object.User;
|
import jnet.lib.object.User;
|
||||||
|
|
||||||
public class ClientMessageParser {
|
public class ClientMessageParser {
|
||||||
|
|
||||||
public static void parse(Message msg) {
|
private static final java.util.Map<Integer, Consumer<Message>> handlers = new HashMap<>();
|
||||||
|
|
||||||
LogFile.printDebug("-> Message type: " + msg.getType());
|
static {
|
||||||
|
handlers.put(Message.CLIENT_VERSION, ClientMessageParser::handleClientVersion);
|
||||||
|
handlers.put(Message.UPDATE, ClientMessageParser::handleUpdate);
|
||||||
switch (msg.getType()) {
|
handlers.put(Message.AUTH_REQUEST, ClientMessageParser::handleAuthRequest);
|
||||||
|
handlers.put(Message.AUTH_SUCEFULL, ClientMessageParser::handleAuthSuccessful);
|
||||||
case Message.CLIENT_VERSION:
|
handlers.put(Message.AUTH_FAIL, ClientMessageParser::handleAuthFail);
|
||||||
NettyClient.send(Message.CLIENT_VERSION, Client.CLIENT_VERSION);
|
handlers.put(Message.ONLINE_CLIENTS, ClientMessageParser::handleOnlineClients);
|
||||||
break;
|
handlers.put(Message.OBJECT_TYPE, ClientMessageParser::handleObjectType);
|
||||||
|
handlers.put(Message.USER, ClientMessageParser::handleUser);
|
||||||
case Message.UPDATE:
|
handlers.put(Message.USER_INFO, ClientMessageParser::handleUserInfo);
|
||||||
LogFile.printInfo("Received update request");
|
handlers.put(Message.MAP, ClientMessageParser::handleMap);
|
||||||
// String[] run = {"java", "-jar", "Updater.jar"};
|
handlers.put(Message.STATUS_UPDATE, ClientMessageParser::handleStatusUpdate);
|
||||||
// // TODO po přijetí pozadavku dialogove okno s informaci ze dojde k aktualizace a odpoctem k jejimu provedeni
|
handlers.put(Message.SET_MAP_LOCK, ClientMessageParser::handleSetMapLock);
|
||||||
// try {
|
handlers.put(Message.SNMP_PROFILE, ClientMessageParser::handleSnmpProfile);
|
||||||
// // odpoji se
|
handlers.put(Message.EVENT_LIST, ClientMessageParser::handleEventList);
|
||||||
// client.disconnect();
|
handlers.put(Message.EVENT_NEW, ClientMessageParser::handleEventNew);
|
||||||
// // spusti updater
|
handlers.put(Message.EVENT_UPDATE, ClientMessageParser::handleEventUpdate);
|
||||||
// Runtime.getRuntime().exec(run);
|
handlers.put(Message.ADD_OBJECT, ClientMessageParser::handleAddObject);
|
||||||
// // vypne program
|
handlers.put(Message.REMOVE_OBJECT, ClientMessageParser::handleRemoveObject);
|
||||||
// System.exit(0);
|
handlers.put(Message.UPDATE_OBJECT, ClientMessageParser::handleUpdateObject);
|
||||||
// } catch (IOException ex) {
|
handlers.put(Message.MAP_REMOVE, ClientMessageParser::handleMapRemove);
|
||||||
// LogFile.printErr("Client update exception: " + ex.getMessage());
|
handlers.put(Message.USER_EDIT, ClientMessageParser::handleUserEdit);
|
||||||
// }
|
handlers.put(Message.DELETE_LOG, ClientMessageParser::handleDeleteLog);
|
||||||
break;
|
handlers.put(Message.SERVER_CONFIG, ClientMessageParser::handleServerConfig);
|
||||||
|
|
||||||
case Message.AUTH_REQUEST:
|
|
||||||
String[] userPass = {Client.config.getString("user"), Client.config.getString("password"), String.valueOf(OnlineClients.PLATFORM_PC)};
|
|
||||||
NettyClient.send(Message.AUTH, userPass);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.AUTH_SUCEFULL:
|
|
||||||
LogFile.printInfo("Log in to server");
|
|
||||||
Client.setConnected();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.AUTH_FAIL:
|
|
||||||
LogFile.printInfo("Authorization failed on server");
|
|
||||||
// TODO co dal ? když se nepřihlásí ? někam vypsat informaci nebo otevřít okno s informací ?
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.ONLINE_CLIENTS:
|
|
||||||
Client.onlineClients = (ArrayList<OnlineClients>) msg.getMsg();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.OBJECT_TYPE:
|
|
||||||
Client.objectType.add((ObjectType) msg.getMsg());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.USER:
|
|
||||||
Client.users.add((User) msg.getMsg());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.USER_INFO:
|
|
||||||
Client.user = (User) msg.getMsg();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.MAP:
|
|
||||||
// pridani do arraylistu
|
|
||||||
Client.maps.add((Map) msg.getMsg());
|
|
||||||
// pridani do stromu map o refres se postara pri pridavani
|
|
||||||
MapTree.reload();
|
|
||||||
// aktualizace tray icon
|
|
||||||
Tray.refresh();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.OBJECT_LIST:
|
|
||||||
Client.mapObject = (ArrayList<MapObject>) msg.getMsg();
|
|
||||||
// pridani do stromu map o refres se postara pri pridavani
|
|
||||||
MapTree.reload();
|
|
||||||
// aktualizace tray icon
|
|
||||||
Tray.refresh();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.STATUS_UPDATE:
|
|
||||||
int[] o = (int[]) msg.getMsg();
|
|
||||||
int status = o[1];
|
|
||||||
int obj_id = o[0];
|
|
||||||
for (MapObject mapObject : Client.mapObject) {
|
|
||||||
if (mapObject.getId() == obj_id) {
|
|
||||||
// nastaveni statusu objektu
|
|
||||||
mapObject.setStatus(status);
|
|
||||||
// aktualizace pohledu map
|
|
||||||
MapView.updateMapView(mapObject.getId());
|
|
||||||
//aktualizace seznamu map
|
|
||||||
MapTree.reload();
|
|
||||||
// aktualizace tray icon
|
|
||||||
Tray.refresh();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
SoundManager.changeStatus(status);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.SET_MAP_LOCK:
|
|
||||||
int[] data_lock = (int[]) msg.getMsg();
|
|
||||||
for (Map map : Client.maps) {
|
|
||||||
if (map.getId() == data_lock[0]) {
|
|
||||||
map.setLock((data_lock[1] == 1));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.SNMP_PROFILE:
|
|
||||||
Client.snmpProfile.add((SnmpProfile) msg.getMsg());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.EVENT_LIST:
|
|
||||||
Client.events = ((ArrayList<Event>) msg.getMsg());
|
|
||||||
break;
|
|
||||||
case Message.EVENT_NEW:
|
|
||||||
Client.events.add((Event) msg.getMsg());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.EVENT_UPDATE:
|
|
||||||
Event event_update = (Event) msg.getMsg();
|
|
||||||
for (int i = 0; i < Client.events.size(); i++) {
|
|
||||||
if (event_update.getId() == Client.events.get(i).getId()) {
|
|
||||||
Client.events.set(i, event_update);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case Message.ADD_OBJECT:
|
|
||||||
MapObject new_mo = (MapObject) msg.getMsg();
|
|
||||||
// pridat do seznamu
|
|
||||||
Client.mapObject.add(new_mo);
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.REMOVE_OBJECT:
|
|
||||||
for (MapObject mapObject : Client.mapObject) {
|
|
||||||
if (mapObject.getId() == (int) msg.getMsg()) {
|
|
||||||
// odebere ze seznamu
|
|
||||||
Client.mapObject.remove(mapObject);
|
|
||||||
// update map view
|
|
||||||
MapView.updateMapView(mapObject.getId());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.UPDATE_OBJECT:
|
|
||||||
MapObject mo = (MapObject) msg.getMsg();
|
|
||||||
for (int i = 0; i < Client.mapObject.size(); i++) {
|
|
||||||
if (Client.mapObject.get(i).getId() == mo.getId()) {
|
|
||||||
Client.mapObject.set(i, mo);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.MAP_REMOVE:
|
|
||||||
for (Map map : Client.maps) {
|
|
||||||
if (map.getId() == (int) msg.getMsg()) {
|
|
||||||
// odebere ze seznamu
|
|
||||||
Client.maps.remove(map);
|
|
||||||
// aktualizace seznamu map
|
|
||||||
MapTree.reload();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.USER_EDIT:
|
|
||||||
User ue = (User) msg.getMsg();
|
|
||||||
// zmenit v seznamu
|
|
||||||
for (User user : Client.users) {
|
|
||||||
if (user.getId() == ue.getId()) {
|
|
||||||
Client.users.remove(user);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.DELETE_LOG:
|
|
||||||
int objId = (int) msg.getMsg();
|
|
||||||
// vymaze logy v listu
|
|
||||||
for (Event event : Client.events) {
|
|
||||||
if (event.getObject() == objId) {
|
|
||||||
Client.events.remove(event);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.SERVER_CONFIG:
|
|
||||||
Client.serverConfig = (ServerConfig) msg.getMsg();
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
LogFile.printErr("Neznamy typ zpravy");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void parse(Message msg) {
|
||||||
|
LogFile.printDebug("-> Message type: " + msg.getType());
|
||||||
|
handlers.getOrDefault(msg.getType(), m -> LogFile.printErr("Neznámý typ zprávy")).accept(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleClientVersion(Message msg) {
|
||||||
|
NettyClient.send(Message.CLIENT_VERSION, Client.CLIENT_VERSION);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleUpdate(Message msg) {
|
||||||
|
LogFile.printInfo("Received update request");
|
||||||
|
// TODO: Dialogové okno s informací o aktualizaci a odpočtem k jejímu provedení
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleAuthRequest(Message msg) {
|
||||||
|
String[] userPass = {Client.config.getString("user"), Client.config.getString("password"), String.valueOf(OnlineClients.PLATFORM_PC)};
|
||||||
|
NettyClient.send(Message.AUTH, userPass);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleAuthSuccessful(Message msg) {
|
||||||
|
LogFile.printInfo("Log in to server");
|
||||||
|
Client.setConnected();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleAuthFail(Message msg) {
|
||||||
|
LogFile.printInfo("Authorization failed on server");
|
||||||
|
JOptionPane.showMessageDialog(null, "Chybné přihlašovací údaje!", "Chyba", JOptionPane.ERROR_MESSAGE);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleOnlineClients(Message msg) {
|
||||||
|
Client.onlineClients = (ArrayList<OnlineClients>) msg.getMsg();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleObjectType(Message msg) {
|
||||||
|
Client.objectType.add((ObjectType) msg.getMsg());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleUser(Message msg) {
|
||||||
|
Client.users.add((User) msg.getMsg());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleUserInfo(Message msg) {
|
||||||
|
Client.user = (User) msg.getMsg();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleMap(Message msg) {
|
||||||
|
Client.maps.add((Map) (Map) msg.getMsg());
|
||||||
|
// aktualizace UI
|
||||||
|
UIUpdater.updateMapTree();
|
||||||
|
UIUpdater.updateTray();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleStatusUpdate(Message msg) {
|
||||||
|
int[] o = (int[]) msg.getMsg();
|
||||||
|
int obj_id = o[0];
|
||||||
|
int status = o[1];
|
||||||
|
for (Map map : Client.maps) {
|
||||||
|
for (MapObject mapObject : map.getObjects()) {
|
||||||
|
if (mapObject.getId() == obj_id) {
|
||||||
|
mapObject.setStatus(status);
|
||||||
|
// aktualizace UI
|
||||||
|
UIUpdater.updateMapTree();
|
||||||
|
UIUpdater.updateTray();
|
||||||
|
UIUpdater.updateMapView();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SoundManager.changeStatus(status);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleSetMapLock(Message msg) {
|
||||||
|
int[] data_lock = (int[]) msg.getMsg();
|
||||||
|
for (Map map : Client.maps) {
|
||||||
|
if (map.getId() == data_lock[0]) {
|
||||||
|
map.setLock((data_lock[1] == 1));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleSnmpProfile(Message msg) {
|
||||||
|
Client.snmpProfile.add((SnmpProfile) msg.getMsg());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleEventList(Message msg) {
|
||||||
|
Client.events = (ArrayList<Event>) msg.getMsg();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleEventNew(Message msg) {
|
||||||
|
Client.events.add((Event) msg.getMsg());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleEventUpdate(Message msg) {
|
||||||
|
Event event_update = (Event) msg.getMsg();
|
||||||
|
for (int i = 0; i < Client.events.size(); i++) {
|
||||||
|
if (event_update.getId() == Client.events.get(i).getId()) {
|
||||||
|
Client.events.set(i, event_update);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleAddObject(Message msg) {
|
||||||
|
MapObject mo = (MapObject) msg.getMsg();
|
||||||
|
for (Map map : Client.maps) {
|
||||||
|
if (map.getId() == mo.getMap()) {
|
||||||
|
map.getObjects().add(mo);
|
||||||
|
UIUpdater.updateMapView();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleRemoveObject(Message msg) {
|
||||||
|
int objId = (int) msg.getMsg();
|
||||||
|
for (Map map : Client.maps) {
|
||||||
|
for (MapObject object : map.getObjects()) {
|
||||||
|
if (object.getId() == objId) {
|
||||||
|
map.getObjects().remove(object);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// aktualizace UI
|
||||||
|
UIUpdater.updateMapTree();
|
||||||
|
UIUpdater.updateTray();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleUpdateObject(Message msg) {
|
||||||
|
MapObject mo = (MapObject) msg.getMsg();
|
||||||
|
for (Map map : Client.maps) {
|
||||||
|
for (int i = 0; i < map.getObjects().size(); i++) {
|
||||||
|
if (map.getObjects().get(i).getId() == mo.getId()) {
|
||||||
|
map.getObjects().set(i, mo);
|
||||||
|
UIUpdater.updateMapView();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleMapRemove(Message msg) {
|
||||||
|
int mapId = (int) msg.getMsg();
|
||||||
|
Client.maps.removeIf(map -> map.getId() == mapId);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleUserEdit(Message msg) {
|
||||||
|
User ue = (User) msg.getMsg();
|
||||||
|
Client.users.removeIf(user -> user.getId() == ue.getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleDeleteLog(Message msg) {
|
||||||
|
int objId = (int) msg.getMsg();
|
||||||
|
Client.events.removeIf(event -> event.getObject() == objId);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleServerConfig(Message msg) {
|
||||||
|
Client.serverConfig = (ServerConfig) msg.getMsg();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import javax.sound.sampled.FloatControl;
|
||||||
import javax.sound.sampled.LineUnavailableException;
|
import javax.sound.sampled.LineUnavailableException;
|
||||||
import javax.sound.sampled.UnsupportedAudioFileException;
|
import javax.sound.sampled.UnsupportedAudioFileException;
|
||||||
import jnet.lib.Status;
|
import jnet.lib.Status;
|
||||||
|
import jnet.lib.object.Map;
|
||||||
import jnet.lib.object.MapObject;
|
import jnet.lib.object.MapObject;
|
||||||
|
|
||||||
public class SoundManager {
|
public class SoundManager {
|
||||||
|
|
@ -19,18 +20,17 @@ public class SoundManager {
|
||||||
|
|
||||||
public static void playOnline(){
|
public static void playOnline(){
|
||||||
int count = 0;
|
int count = 0;
|
||||||
ListIterator<MapObject> iteratorMapObject = Client.mapObject.listIterator();
|
for (Map map : Client.maps) {
|
||||||
while (iteratorMapObject.hasNext()) {
|
for (MapObject object : map.getObjects()) {
|
||||||
MapObject obj = iteratorMapObject.next();
|
if (object.getStatus() == Status.OFFLINE && count != 0) {
|
||||||
if (obj.getStatus() == Status.OFFLINE && count != 0) {
|
|
||||||
playNextOffline();
|
playNextOffline();
|
||||||
break;
|
break;
|
||||||
} else if (obj.getStatus() == Status.OFFLINE) {
|
} else if (object.getStatus() == Status.OFFLINE) {
|
||||||
System.err.println(obj.getName());
|
|
||||||
count++;
|
count++;
|
||||||
playFirstOffline();
|
playFirstOffline();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -81,9 +81,9 @@ public class EventsPanel extends JPanel {
|
||||||
}
|
}
|
||||||
|
|
||||||
private String[] getObjetInfo(int id) {
|
private String[] getObjetInfo(int id) {
|
||||||
for (MapObject mapObject : Client.mapObject) {
|
for (Map map : Client.maps) {
|
||||||
if (mapObject.getId() == id) {
|
for (MapObject mapObject : map.getObjects()) {
|
||||||
for (Map map : Client.maps) {
|
if (mapObject.getId() == id) {
|
||||||
if (map.getId() == mapObject.getMap()) {
|
if (map.getId() == mapObject.getMap()) {
|
||||||
String[] data = {map.getName(), mapObject.getName()};
|
String[] data = {map.getName(), mapObject.getName()};
|
||||||
return data;
|
return data;
|
||||||
|
|
@ -91,6 +91,7 @@ public class EventsPanel extends JPanel {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,8 @@
|
||||||
package jnet.client.gui;
|
package jnet.client.gui;
|
||||||
|
|
||||||
import jnet.client.Client;
|
|
||||||
import java.awt.Component;
|
import java.awt.Component;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Iterator;
|
|
||||||
import javax.imageio.ImageIO;
|
import javax.imageio.ImageIO;
|
||||||
import javax.swing.ImageIcon;
|
import javax.swing.ImageIcon;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
|
|
@ -14,18 +12,17 @@ import javax.swing.tree.DefaultMutableTreeNode;
|
||||||
import javax.swing.tree.DefaultTreeCellRenderer;
|
import javax.swing.tree.DefaultTreeCellRenderer;
|
||||||
import jnet.lib.Status;
|
import jnet.lib.Status;
|
||||||
import jnet.lib.object.Map;
|
import jnet.lib.object.Map;
|
||||||
import jnet.lib.object.MapObject;
|
|
||||||
|
|
||||||
public class MapTreeCellRenderer extends DefaultTreeCellRenderer {
|
public class MapTreeCellRenderer extends DefaultTreeCellRenderer {
|
||||||
|
|
||||||
private JLabel label;
|
private JLabel label;
|
||||||
private BufferedImage image;
|
private BufferedImage image;
|
||||||
|
|
||||||
public MapTreeCellRenderer() {
|
public MapTreeCellRenderer() {
|
||||||
label = new JLabel();
|
label = new JLabel();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
|
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
|
||||||
label = (JLabel) super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
|
label = (JLabel) super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
|
||||||
|
|
@ -33,19 +30,22 @@ public class MapTreeCellRenderer extends DefaultTreeCellRenderer {
|
||||||
if (o instanceof Map) {
|
if (o instanceof Map) {
|
||||||
try {
|
try {
|
||||||
Map m = (Map) o;
|
Map m = (Map) o;
|
||||||
switch (getMapStatus(m.getId())) {
|
String imagePath = "";
|
||||||
|
switch (m.getStatus()) {
|
||||||
case Status.OK: // online
|
case Status.OK: // online
|
||||||
image = ImageIO.read(new File("img/flag_green.png"));
|
imagePath = "/img/flag_green.png";
|
||||||
break;
|
break;
|
||||||
case Status.WARNING: // warning
|
case Status.WARNING: // warning
|
||||||
image = ImageIO.read(new File("img/flag_orange.png"));
|
imagePath = "/img/flag_orange.png";
|
||||||
break;
|
break;
|
||||||
case Status.OFFLINE: // offline
|
case Status.OFFLINE: // offline
|
||||||
image = ImageIO.read(new File("img/flag_red.png"));
|
imagePath = "/img/flag_red.png";
|
||||||
break;
|
break;
|
||||||
default: // other
|
default: // other
|
||||||
image = ImageIO.read(new File("img/flag_gray.png"));
|
imagePath = "/img/flag_gray.png";
|
||||||
}
|
}
|
||||||
|
image = ImageIO.read(getClass().getResourceAsStream(imagePath));
|
||||||
|
|
||||||
if (image != null) {
|
if (image != null) {
|
||||||
label.setIcon(new ImageIcon(image));
|
label.setIcon(new ImageIcon(image));
|
||||||
}
|
}
|
||||||
|
|
@ -59,27 +59,5 @@ public class MapTreeCellRenderer extends DefaultTreeCellRenderer {
|
||||||
label.setBorder(border);
|
label.setBorder(border);
|
||||||
return label;
|
return label;
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getMapStatus(int mapId) {
|
|
||||||
int status = Status.NA;
|
|
||||||
Iterator<MapObject> iteratorMapObject = Client.mapObject.iterator();
|
|
||||||
while (iteratorMapObject.hasNext()) {
|
|
||||||
MapObject obj = iteratorMapObject.next();
|
|
||||||
if (obj.getMap() == mapId) {
|
|
||||||
switch (obj.getStatus()) {
|
|
||||||
case Status.OFFLINE:
|
|
||||||
return Status.OFFLINE;
|
|
||||||
case Status.WARNING:
|
|
||||||
status = Status.WARNING;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
if (status != Status.WARNING) {
|
|
||||||
status = Status.OK;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,11 @@ import jnet.lib.object.MapObject;
|
||||||
public class MapView extends JPanel {
|
public class MapView extends JPanel {
|
||||||
|
|
||||||
public static List<PaintObject> paintObjects = new ArrayList<>();
|
public static List<PaintObject> paintObjects = new ArrayList<>();
|
||||||
;
|
|
||||||
|
|
||||||
|
private BufferedImage lockImage;
|
||||||
|
private BufferedImage unlockImage;
|
||||||
|
|
||||||
private static Map map;
|
private static Map map;
|
||||||
|
|
||||||
public MapView(Map map) {
|
public MapView(Map map) {
|
||||||
|
|
@ -30,6 +34,13 @@ public class MapView extends JPanel {
|
||||||
LogFile.printDebug("View map: " + map.getName());
|
LogFile.printDebug("View map: " + map.getName());
|
||||||
paintObjects.clear();
|
paintObjects.clear();
|
||||||
|
|
||||||
|
try {
|
||||||
|
lockImage = ImageIO.read(new File("img/lock.png"));
|
||||||
|
unlockImage = ImageIO.read(new File("img/unlock.png"));
|
||||||
|
} catch (IOException ex) {
|
||||||
|
LogFile.printErr("File not found: " + ex);
|
||||||
|
}
|
||||||
|
|
||||||
loadObject(map.getId());
|
loadObject(map.getId());
|
||||||
|
|
||||||
this.addMouseMotionListener(new MapViewAction(map));
|
this.addMouseMotionListener(new MapViewAction(map));
|
||||||
|
|
@ -53,18 +64,7 @@ public class MapView extends JPanel {
|
||||||
Graphics2D g2 = (Graphics2D) g.create();
|
Graphics2D g2 = (Graphics2D) g.create();
|
||||||
|
|
||||||
// vykresleni lock/unlock mapy
|
// vykresleni lock/unlock mapy
|
||||||
try {
|
g.drawImage(map.isLock() ? lockImage : unlockImage, 0, 0, this);
|
||||||
BufferedImage image;
|
|
||||||
|
|
||||||
if (map.isLock()) {
|
|
||||||
image = ImageIO.read(new File("img/lock.png"));
|
|
||||||
} else {
|
|
||||||
image = ImageIO.read(new File("img/unlock.png"));
|
|
||||||
}
|
|
||||||
g.drawImage(image, 0, 0, this);
|
|
||||||
} catch (IOException ex) {
|
|
||||||
LogFile.printErr("File not found: " + ex);
|
|
||||||
}
|
|
||||||
|
|
||||||
// vykresleni objektu
|
// vykresleni objektu
|
||||||
for (PaintObject paintObject : paintObjects) {
|
for (PaintObject paintObject : paintObjects) {
|
||||||
|
|
@ -81,24 +81,25 @@ public class MapView extends JPanel {
|
||||||
loadObject(map.getId());
|
loadObject(map.getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void updateMapView(int mapId) {
|
public static void updateMapView() {
|
||||||
for (Map map : Client.maps) {
|
if (map.equals(MapView.map)) {
|
||||||
if (map.equals(MapView.map)) {
|
// obnoveni objektu
|
||||||
// obnoveni objektu
|
paintObjects.clear();
|
||||||
paintObjects.clear();
|
// nahrat objekty
|
||||||
// nahrat objekty
|
loadObject(map.getId());
|
||||||
loadObject(map.getId());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void loadObject(int mapId) {
|
private static void loadObject(int mapId) {
|
||||||
for (MapObject obj : Client.mapObject) {
|
for (Map map : Client.maps) {
|
||||||
if (obj.getMap() == mapId) {
|
for (MapObject obj : map.getObjects()) {
|
||||||
paintObjects.add(new PaintObject(obj));
|
if (obj.getMap() == mapId) {
|
||||||
|
paintObjects.add(new PaintObject(obj));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,26 +20,26 @@ import jnet.lib.object.Map;
|
||||||
import jnet.lib.object.MapObject;
|
import jnet.lib.object.MapObject;
|
||||||
|
|
||||||
public class MapViewAction implements MouseMotionListener, MouseListener {
|
public class MapViewAction implements MouseMotionListener, MouseListener {
|
||||||
|
|
||||||
private Map map;
|
private Map map;
|
||||||
|
|
||||||
public MapViewAction(Map map) {
|
public MapViewAction(Map map) {
|
||||||
this.map = map;
|
this.map = map;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static PaintObject selectedObject;
|
private static PaintObject selectedObject;
|
||||||
private static Point offset;
|
private static Point offset;
|
||||||
public static boolean createConnection = false;
|
public static boolean createConnection = false;
|
||||||
public static PaintObject startConMapObject;
|
public static PaintObject startConMapObject;
|
||||||
public static PaintObject endConMapObject;
|
public static PaintObject endConMapObject;
|
||||||
public static Point endConnPoint;
|
public static Point endConnPoint;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseClicked(MouseEvent e) {
|
public void mouseClicked(MouseEvent e) {
|
||||||
// vola se pri kliknuti v mape
|
// vola se pri kliknuti v mape
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mousePressed(MouseEvent e) { // vola se pri stisknuti tlacitka
|
public void mousePressed(MouseEvent e) { // vola se pri stisknuti tlacitka
|
||||||
// vyhledani jestli se kliklo na nejaky objekt
|
// vyhledani jestli se kliklo na nejaky objekt
|
||||||
|
|
@ -66,7 +66,7 @@ public class MapViewAction implements MouseMotionListener, MouseListener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseReleased(MouseEvent e) { // vola se pri uvolneni tlacitka
|
public void mouseReleased(MouseEvent e) { // vola se pri uvolneni tlacitka
|
||||||
if (selectedObject != null) {
|
if (selectedObject != null) {
|
||||||
|
|
@ -75,12 +75,12 @@ public class MapViewAction implements MouseMotionListener, MouseListener {
|
||||||
// odeslani nove pozice objektu
|
// odeslani nove pozice objektu
|
||||||
// TODO doresit kontrolu souradnic aby se zbytecne neodesilala zmena kdyz k ni nedojde
|
// TODO doresit kontrolu souradnic aby se zbytecne neodesilala zmena kdyz k ni nedojde
|
||||||
// zkontrolovat zda došlo ke zmene pozice
|
// zkontrolovat zda došlo ke zmene pozice
|
||||||
int[] data = {
|
int[] data = {
|
||||||
selectedObject.getId(),
|
selectedObject.getId(),
|
||||||
(int) selectedObject.getX(),
|
(int) selectedObject.getX(),
|
||||||
(int) selectedObject.getY()
|
(int) selectedObject.getY()
|
||||||
};
|
};
|
||||||
NettyClient.send(Message.OBJECT_MOVE, data);
|
NettyClient.send(Message.OBJECT_MOVE, data);
|
||||||
}
|
}
|
||||||
// dvojklik na objekt
|
// dvojklik na objekt
|
||||||
if (e.getClickCount() == 2) {
|
if (e.getClickCount() == 2) {
|
||||||
|
|
@ -98,7 +98,7 @@ public class MapViewAction implements MouseMotionListener, MouseListener {
|
||||||
}
|
}
|
||||||
selectedObject = null;
|
selectedObject = null;
|
||||||
offset = null;
|
offset = null;
|
||||||
|
|
||||||
if (createConnection) {
|
if (createConnection) {
|
||||||
for (PaintObject node : MapView.paintObjects) {
|
for (PaintObject node : MapView.paintObjects) {
|
||||||
if (node.contains(e.getPoint())) {
|
if (node.contains(e.getPoint())) {
|
||||||
|
|
@ -112,17 +112,17 @@ public class MapViewAction implements MouseMotionListener, MouseListener {
|
||||||
createConnection = false;
|
createConnection = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseEntered(MouseEvent e) {
|
public void mouseEntered(MouseEvent e) {
|
||||||
// vola se pri vstupu kurzoru
|
// vola se pri vstupu kurzoru
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseExited(MouseEvent e) {
|
public void mouseExited(MouseEvent e) {
|
||||||
// vola se pri opusteni kurzoru
|
// vola se pri opusteni kurzoru
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseDragged(MouseEvent e) {
|
public void mouseDragged(MouseEvent e) {
|
||||||
//jen pokud neni mapa zamcena
|
//jen pokud neni mapa zamcena
|
||||||
|
|
@ -150,24 +150,24 @@ public class MapViewAction implements MouseMotionListener, MouseListener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseMoved(MouseEvent e) {
|
public void mouseMoved(MouseEvent e) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void doubleClickOnObject(PaintObject selectedObject) {
|
private void doubleClickOnObject(PaintObject selectedObject) {
|
||||||
int id = selectedObject.getId();
|
int id = selectedObject.getId();
|
||||||
Iterator<MapObject> iteratorMapObject = Client.mapObject.iterator();
|
for (Map map : Client.maps) {
|
||||||
while (iteratorMapObject.hasNext()) {
|
for (MapObject object : map.getObjects()) {
|
||||||
MapObject obj = iteratorMapObject.next();
|
if (object.getId() == id) {
|
||||||
if (obj.getId() == id) {
|
new ObjectDialog(map.getId(), object, false);
|
||||||
new ObjectDialog(map.getId(), obj, false);
|
break;
|
||||||
break;
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void rigthClick(MouseEvent me) {
|
private void rigthClick(MouseEvent me) {
|
||||||
JPopupMenu menu = new JPopupMenu();
|
JPopupMenu menu = new JPopupMenu();
|
||||||
// zamek mapy
|
// zamek mapy
|
||||||
|
|
@ -219,10 +219,10 @@ public class MapViewAction implements MouseMotionListener, MouseListener {
|
||||||
});
|
});
|
||||||
menu.add(itemPropoj);
|
menu.add(itemPropoj);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
menu.show(me.getComponent(), me.getX(), me.getY());
|
menu.show(me.getComponent(), me.getX(), me.getY());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void rightClickOnObject(MouseEvent e, PaintObject obj) {
|
private void rightClickOnObject(MouseEvent e, PaintObject obj) {
|
||||||
JPopupMenu menu = new JPopupMenu();
|
JPopupMenu menu = new JPopupMenu();
|
||||||
if (obj.getObject().isWinbox()) {
|
if (obj.getObject().isWinbox()) {
|
||||||
|
|
@ -295,5 +295,5 @@ public class MapViewAction implements MouseMotionListener, MouseListener {
|
||||||
// zobrazeni menu
|
// zobrazeni menu
|
||||||
menu.show(e.getComponent(), e.getX(), e.getY());
|
menu.show(e.getComponent(), e.getX(), e.getY());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ class MenuPanel extends JPanel {
|
||||||
|
|
||||||
// tlacitko pripojit / odpojit
|
// tlacitko pripojit / odpojit
|
||||||
try {
|
try {
|
||||||
BufferedImage buttonIcon = ImageIO.read(new File("img/connect.png"));
|
BufferedImage buttonIcon = ImageIO.read(getClass().getResourceAsStream("/img/connect.png"));
|
||||||
JButton bLogin = new JButton(new ImageIcon(buttonIcon));
|
JButton bLogin = new JButton(new ImageIcon(buttonIcon));
|
||||||
bLogin.setFocusPainted(false);
|
bLogin.setFocusPainted(false);
|
||||||
bLogin.setContentAreaFilled(false);
|
bLogin.setContentAreaFilled(false);
|
||||||
|
|
@ -44,7 +44,7 @@ class MenuPanel extends JPanel {
|
||||||
|
|
||||||
// tlacitko nastaveni
|
// tlacitko nastaveni
|
||||||
try {
|
try {
|
||||||
BufferedImage buttonIcon = ImageIO.read(new File("img/settings.png"));
|
BufferedImage buttonIcon = ImageIO.read(getClass().getResourceAsStream("/img/settings.png"));
|
||||||
JButton bSettings = new JButton(new ImageIcon(buttonIcon));
|
JButton bSettings = new JButton(new ImageIcon(buttonIcon));
|
||||||
bSettings.setFocusPainted(false);
|
bSettings.setFocusPainted(false);
|
||||||
bSettings.setContentAreaFilled(false);
|
bSettings.setContentAreaFilled(false);
|
||||||
|
|
@ -62,7 +62,7 @@ class MenuPanel extends JPanel {
|
||||||
|
|
||||||
// tlacitko log
|
// tlacitko log
|
||||||
try {
|
try {
|
||||||
BufferedImage buttonIcon = ImageIO.read(new File("img/log.png"));
|
BufferedImage buttonIcon = ImageIO.read(getClass().getResourceAsStream("/img/log.png"));
|
||||||
JButton bLog = new JButton(new ImageIcon(buttonIcon));
|
JButton bLog = new JButton(new ImageIcon(buttonIcon));
|
||||||
bLog.setFocusPainted(false);
|
bLog.setFocusPainted(false);
|
||||||
bLog.setContentAreaFilled(false);
|
bLog.setContentAreaFilled(false);
|
||||||
|
|
@ -80,7 +80,7 @@ class MenuPanel extends JPanel {
|
||||||
|
|
||||||
// tlacitko server settings
|
// tlacitko server settings
|
||||||
try {
|
try {
|
||||||
BufferedImage buttonIcon = ImageIO.read(new File("img/server_settings.png"));
|
BufferedImage buttonIcon = ImageIO.read(getClass().getResourceAsStream("/img/server_settings.png"));
|
||||||
JButton bServerSettings = new JButton(new ImageIcon(buttonIcon));
|
JButton bServerSettings = new JButton(new ImageIcon(buttonIcon));
|
||||||
bServerSettings.setFocusPainted(false);
|
bServerSettings.setFocusPainted(false);
|
||||||
bServerSettings.setContentAreaFilled(false);
|
bServerSettings.setContentAreaFilled(false);
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ public class StatusBar extends JPanel {
|
||||||
|
|
||||||
// tlacitko zobrazujici klienty
|
// tlacitko zobrazujici klienty
|
||||||
try {
|
try {
|
||||||
BufferedImage buttonIcon = ImageIO.read(new File("img/online_clients.png"));
|
BufferedImage buttonIcon = ImageIO.read(getClass().getResourceAsStream("/img/online_clients.png"));
|
||||||
btnOnline = new JButton(new ImageIcon(buttonIcon));
|
btnOnline = new JButton(new ImageIcon(buttonIcon));
|
||||||
btnOnline.setFocusPainted(false);
|
btnOnline.setFocusPainted(false);
|
||||||
btnOnline.setContentAreaFilled(false);
|
btnOnline.setContentAreaFilled(false);
|
||||||
|
|
|
||||||
|
|
@ -1,113 +1,96 @@
|
||||||
package jnet.client.gui;
|
package jnet.client.gui;
|
||||||
|
|
||||||
import jnet.client.Client;
|
import java.awt.*;
|
||||||
import java.awt.AWTException;
|
|
||||||
import java.awt.MenuItem;
|
|
||||||
import java.awt.PopupMenu;
|
|
||||||
import java.awt.SystemTray;
|
|
||||||
import java.awt.TrayIcon;
|
|
||||||
import java.awt.event.ActionEvent;
|
|
||||||
import java.awt.event.ActionListener;
|
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Iterator;
|
|
||||||
import javax.imageio.ImageIO;
|
import javax.imageio.ImageIO;
|
||||||
|
import jnet.client.Client;
|
||||||
import jnet.lib.LogFile;
|
import jnet.lib.LogFile;
|
||||||
import jnet.lib.Status;
|
import jnet.lib.Status;
|
||||||
import jnet.lib.object.MapObject;
|
import jnet.lib.object.Map;
|
||||||
|
|
||||||
public class Tray {
|
public class Tray {
|
||||||
|
|
||||||
|
private SystemTray tray;
|
||||||
|
|
||||||
private SystemTray tray = SystemTray.getSystemTray();
|
|
||||||
private static TrayIcon trayIcon;
|
private static TrayIcon trayIcon;
|
||||||
private static PopupMenu menu = new PopupMenu();
|
private static PopupMenu menu = new PopupMenu();
|
||||||
|
|
||||||
public void createAndShowTray() {
|
public void createAndShowTray() {
|
||||||
try {
|
try {
|
||||||
|
// Ověření, zda je SystemTray podporován
|
||||||
//Check the SystemTray is supported
|
|
||||||
if (!SystemTray.isSupported()) {
|
if (!SystemTray.isSupported()) {
|
||||||
LogFile.printErr("SystemTray is not supported");
|
LogFile.printErr("SystemTray is not supported");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// tray menu
|
|
||||||
MenuItem exitItem = new MenuItem("Ukončit");
|
|
||||||
exitItem.addActionListener(new ActionListener() {
|
|
||||||
|
|
||||||
@Override
|
// Menu pro tray ikonu
|
||||||
public void actionPerformed(ActionEvent e) {
|
MenuItem exitItem = new MenuItem("Ukončit");
|
||||||
LogFile.printInfo("Exit appliaction from tray icon");
|
exitItem.addActionListener(e -> {
|
||||||
System.exit(0);
|
LogFile.printInfo("Exit application from tray icon");
|
||||||
}
|
System.exit(0);
|
||||||
});
|
});
|
||||||
menu.add(exitItem);
|
menu.add(exitItem);
|
||||||
|
|
||||||
trayIcon = new TrayIcon(ImageIO.read(new File("img/flag_gray.png")), Client.APP_NAME, menu);
|
// Načtení výchozí ikony ze zdrojů
|
||||||
trayIcon.addActionListener(new ActionListener() {
|
trayIcon = new TrayIcon(loadImage("/img/flag_gray.png"), Client.APP_NAME, menu);
|
||||||
@Override
|
trayIcon.setImageAutoSize(true);
|
||||||
public void actionPerformed( ActionEvent e ) {
|
trayIcon.addActionListener(e -> {
|
||||||
//Double click - obnovit/minimalizovat
|
// Dvojklik - obnovit/minimalizovat okno
|
||||||
if (Client.okno.isVisible()) {
|
Client.okno.setVisible(!Client.okno.isVisible());
|
||||||
Client.okno.setVisible(false);
|
});
|
||||||
} else {
|
|
||||||
Client.okno.setVisible(true);
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
);
|
|
||||||
|
|
||||||
tray = SystemTray.getSystemTray();
|
tray = SystemTray.getSystemTray();
|
||||||
tray.add(trayIcon);
|
tray.add(trayIcon);
|
||||||
|
|
||||||
} catch (IOException ex) {
|
} catch (IOException | AWTException ex) {
|
||||||
LogFile.printErr("TrayIcon error: " + ex.getMessage());
|
|
||||||
} catch (AWTException ex) {
|
|
||||||
LogFile.printErr("TrayIcon error: " + ex.getMessage());
|
LogFile.printErr("TrayIcon error: " + ex.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static BufferedImage loadImage(String path) throws IOException {
|
||||||
|
try (var input = Tray.class.getResourceAsStream(path)) {
|
||||||
|
if (input == null) {
|
||||||
|
throw new IOException("Soubor nenalezen: " + path);
|
||||||
|
}
|
||||||
|
return ImageIO.read(input);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void setIcon(String icon) {
|
public static void setIcon(String icon) {
|
||||||
try {
|
try {
|
||||||
BufferedImage image = ImageIO.read(new File("img/"+icon));
|
trayIcon.setImage(loadImage("/img/" + icon));
|
||||||
trayIcon.setImage(image);
|
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
LogFile.printErr("TrayIcon error: " + ex.getMessage());
|
LogFile.printErr("TrayIcon error: " + ex.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void setStatusOffline() {
|
public static void setStatusOffline() {
|
||||||
setIcon("flag_red.png");
|
setIcon("flag_red.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setStatusOnline() {
|
public static void setStatusOnline() {
|
||||||
setIcon("flag_green.png");
|
setIcon("flag_green.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setStatusWarning() {
|
public static void setStatusWarning() {
|
||||||
setIcon("flag_orange.png");
|
setIcon("flag_orange.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setStatusDisconnected() {
|
public static void setStatusDisconnected() {
|
||||||
setIcon("flag_gray.png");
|
setIcon("flag_gray.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void refresh() {
|
public static void refresh() {
|
||||||
Iterator<MapObject> iteratorMapObject = Client.mapObject.iterator();
|
setStatusOnline(); // Výchozí stav
|
||||||
while (iteratorMapObject.hasNext()) {
|
|
||||||
MapObject obj = iteratorMapObject.next();
|
for (Map map : Client.maps) {
|
||||||
switch (obj.getStatus()) {
|
int status = map.getStatus();
|
||||||
case Status.OFFLINE:
|
if (status == Status.OFFLINE) {
|
||||||
setStatusOffline();
|
setStatusOffline();
|
||||||
case Status.WARNING:
|
return;
|
||||||
setStatusWarning();
|
}
|
||||||
break;
|
if (status == Status.WARNING) {
|
||||||
default:
|
setStatusWarning();
|
||||||
setStatusOnline();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
package jnet.client.gui;
|
||||||
|
|
||||||
|
import javax.swing.SwingUtilities;
|
||||||
|
|
||||||
|
|
||||||
|
public class UIUpdater {
|
||||||
|
|
||||||
|
public static void updateMapUI() {
|
||||||
|
SwingUtilities.invokeLater(() -> {
|
||||||
|
MapTree.reload();
|
||||||
|
Tray.refresh();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void updateMapTree() {
|
||||||
|
SwingUtilities.invokeLater(() -> {
|
||||||
|
MapTree.reload();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void updateTray() {
|
||||||
|
SwingUtilities.invokeLater(() -> {
|
||||||
|
Tray.refresh();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void updateMapView() {
|
||||||
|
SwingUtilities.invokeLater(() -> {
|
||||||
|
MapView.updateMapView();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -40,7 +40,6 @@ public class Window extends JFrame {
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
LogFile.printErr("APP icon exception");
|
LogFile.printErr("APP icon exception");
|
||||||
}
|
}
|
||||||
|
|
||||||
this.addWindowListener(new WindowAdapter() {
|
this.addWindowListener(new WindowAdapter() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||