Java tutorial
/* Copyright 2010 Jeremie Gottero, Nicolas Bosc This file is part of Fallen Galaxy. Fallen Galaxy is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Fallen Galaxy is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with Fallen Galaxy. If not, see <http://www.gnu.org/licenses/>. */ package fr.fg.client.core; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.HashMap; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Element; import com.google.gwt.i18n.client.DateTimeFormat; import com.google.gwt.user.client.Event; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.WindowResizeListener; import com.google.gwt.user.client.ui.ClickListener; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.Widget; import fr.fg.client.ajax.Action; import fr.fg.client.ajax.ActionCallback; import fr.fg.client.ajax.ActionCallbackAdapter; import fr.fg.client.core.settings.Settings; import fr.fg.client.data.AlertData; import fr.fg.client.data.AnswerData; import fr.fg.client.data.EventData; import fr.fg.client.data.EventsData; import fr.fg.client.data.WardData; import fr.fg.client.i18n.DynamicMessages; import fr.fg.client.i18n.StaticMessages; import fr.fg.client.openjwt.OpenJWT; import fr.fg.client.openjwt.core.Config; import fr.fg.client.openjwt.core.Point; import fr.fg.client.openjwt.core.ToolTipManager; import fr.fg.client.openjwt.ui.JSButton; import fr.fg.client.openjwt.ui.JSComponent; import fr.fg.client.openjwt.ui.JSDialog; import fr.fg.client.openjwt.ui.JSLabel; import fr.fg.client.openjwt.ui.JSRowLayout; import fr.fg.client.openjwt.ui.JSScrollPane; import fr.fg.client.openjwt.ui.JSTabbedPane; import fr.fg.client.openjwt.ui.SelectionListener; import fr.fg.client.core.Client; import fr.fg.client.core.Utilities; public class EventDialog extends JSDialog implements ActionCallback, SelectionListener, WindowResizeListener, ClickListener { // ------------------------------------------------------- CONSTANTES -- // public final static int VIEW_EVENTS = 0, VIEW_ALERTS = 1, VIEW_RSS = 2; private final static int HIGH_RES_EXTRA_WIDTH = 180, HIGH_RES_EXTRA_HEIGHT = 140; private final static String[] EVENT_FILTERS = { "", "Battle", "Ally", "Diplomacy", "Structure", "Charge", "Emp", "Swap", "Research", "Colonization", "Blackhole", "Wards" }; // -------------------------------------------------------- ATTRIBUTS -- // private JSButton[] filtersBt; private int currentClientWidth; private boolean highres; private JSTabbedPane viewPane; private JSScrollPane scrollPane; private HTMLPanel eventsPanel; private Action downloadAction; private long lastUpdate; private boolean newEvents; private ArrayList<EventData> events; private ArrayList<AlertData> alerts; private String eventFilter; private JSRowLayout layout; private JSLabel label; // ---------------------------------------------------- CONSTRUCTEURS -- // public EventDialog() { super("<img src=\"" + Config.getMediaUrl() + "images/misc/blank.gif\" class=\"iconEvents\"/> " + ((StaticMessages) GWT.create(StaticMessages.class)).eventsLog(), false, true, true); this.lastUpdate = 0; this.newEvents = false; this.events = new ArrayList<EventData>(); this.alerts = new ArrayList<AlertData>(); this.currentClientWidth = OpenJWT.getClientWidth(); this.highres = currentClientWidth > 1024; this.eventFilter = EVENT_FILTERS[0]; this.scrollPane = new JSScrollPane(); this.scrollPane.setPixelSize(550 + (highres ? HIGH_RES_EXTRA_WIDTH : 0), 345 + (highres ? HIGH_RES_EXTRA_HEIGHT : 0)); this.viewPane = new JSTabbedPane(); this.viewPane.addTab("vnements"); this.viewPane.addTab("Alertes"); this.viewPane.addTab("Flux RSS"); this.viewPane.setPixelWidth(550 + (highres ? HIGH_RES_EXTRA_WIDTH : 0)); this.viewPane.addSelectionListener(this); this.eventsPanel = new HTMLPanel(""); this.eventsPanel.addStyleName("events"); this.scrollPane.setView(eventsPanel); String[] toolTipTexts = { "Tous", "Combats", "Alliance", "Diplomatie", "Structures", "Artificier", "Impulsions lectromagntiques", "Distortions spatiales", "Recherche", "Colonies", "Trous noirs", "Balises" }; filtersBt = new JSButton[EVENT_FILTERS.length]; for (int i = 0; i < EVENT_FILTERS.length; i++) { filtersBt[i] = new JSButton(i == 0 ? "Tous" : " "); filtersBt[i].setToolTipText("<div class=\"title\">" + toolTipTexts[i] + "</div>"); filtersBt[i].addClickListener(this); if (i > 0) { filtersBt[i] .setPixelWidth(JSComponent.getUIPropertyInt(JSButton.UI_CLASS_ID, OpenJWT.DEFAULT_HEIGHT)); filtersBt[i].addStyleName("icon" + EVENT_FILTERS[i]); } } filtersBt[0].setSelected(true); label = new JSLabel(" Afficher "); layout = new JSRowLayout(); layout.addComponent(viewPane); layout.addRowSeparator(3); layout.addComponent(label); for (int i = 0; i < EVENT_FILTERS.length; i++) layout.addComponent(filtersBt[i]); layout.addRow(); layout.addComponent(scrollPane); setComponent(layout); centerOnScreen(); sinkEvents(Event.ONCLICK); Window.addWindowResizeListener(this); } // --------------------------------------------------------- METHODES -- // @Override public void onBrowserEvent(Event event) { super.onBrowserEvent(event); switch (event.getTypeInt()) { case Event.ONCLICK: String id = event.getTarget().getId(); if (id == null || id.length() == 0) return; if (id.contains("showEventLocation")) { EventData eventData = events.get(Integer.parseInt(id.substring("showEventLocation".length()))); if (eventData.getX() != -1 && eventData.getY() != -1) Client.getInstance().getAreaContainer().setIdArea(eventData.getIdArea(), new Point(eventData.getX(), eventData.getY())); else Client.getInstance().getAreaContainer().setIdArea(eventData.getIdArea()); } else if (id.contains("showAlertLocation")) { AlertData alertData = alerts.get(Integer.parseInt(id.substring("showAlertLocation".length()))); if (alertData.getX() != -1 && alertData.getY() != -1) Client.getInstance().getAreaContainer().setIdArea(alertData.getIdArea(), new Point(alertData.getX(), alertData.getY())); else Client.getInstance().getAreaContainer().setIdArea(alertData.getIdArea()); } else if (id.contains("showBattleReport")) { Client.getInstance().getBattleReport() .showReport(Integer.parseInt(id.substring("showBattleReport".length()))); } break; } } public void setVisible(boolean visible) { super.setVisible(visible); if (visible) { if (downloadAction != null && downloadAction.isPending()) return; HashMap<String, String> params = new HashMap<String, String>(); params.put("date", String.valueOf(lastUpdate)); downloadAction = new Action("getevents", params, this); Client.getInstance().getTutorial().setLesson(Tutorial.LESSON_EVENT); } layout.update(); } public void onFailure(String error) { ActionCallbackAdapter.onFailureDefaultBehavior(error); } public void onSuccess(AnswerData data) { newEvents = false; Client.getInstance().getToolBar().blinkEvents(false); EventsData newEvents = data.getEvents(); this.lastUpdate = (long) newEvents.getLastUpdate(); // Ne garde que les 100 derniers vnements while (events.size() > 0 && events.size() + newEvents.getEventsCount() > 100) events.remove(events.size() - 1); // Nouveaux vnements for (int i = newEvents.getEventsCount() - 1; i >= 0; i--) this.events.add(0, newEvents.getEventAt(i)); // Nouvelles alertes ArrayList<AlertData> alerts = new ArrayList<AlertData>(); for (int i = 0; i < newEvents.getAlertsCount(); i++) alerts.add(0, newEvents.getAlertAt(i)); Collections.sort(alerts, new Comparator<AlertData>() { public int compare(AlertData a1, AlertData a2) { return a1.getPriority() > a2.getPriority() ? -1 : 1; } }); this.alerts = alerts; updateUI(); } public boolean hasNewEvents() { return newEvents; } public void setNewEvents(boolean newEvents) { this.newEvents = newEvents; if (isVisible()) { if (downloadAction != null && downloadAction.isPending()) return; HashMap<String, String> params = new HashMap<String, String>(); params.put("date", String.valueOf(lastUpdate)); downloadAction = new Action("getevents", params, this); } else { Client.getInstance().getToolBar().blinkEvents(true); } } public void selectionChanged(Widget sender, int newValue, int oldValue) { if (sender == viewPane) { updateUI(); scrollPane.scrollUp(99999); } String visibility = viewPane.getSelectedIndex() == VIEW_EVENTS ? "" : "hidden"; for (int i = 1; i < EVENT_FILTERS.length; i++) { filtersBt[i].getElement().getStyle().setProperty("visibility", visibility); if (viewPane.getSelectedIndex() == VIEW_EVENTS) filtersBt[i].setSelected(eventFilter.equals(EVENT_FILTERS[i])); } filtersBt[0] .setSelected(viewPane.getSelectedIndex() == VIEW_ALERTS || eventFilter.equals(EVENT_FILTERS[0])); filtersBt[0].getElement().getStyle().setProperty("visibility", viewPane.getSelectedIndex() == VIEW_RSS ? "hidden" : ""); label.getElement().getStyle().setProperty("visibility", viewPane.getSelectedIndex() == VIEW_RSS ? "hidden" : ""); } public void onWindowResized(int width, int height) { int clientWidth = Window.getClientWidth(); highres = clientWidth > 1024; if (currentClientWidth > 1024 && clientWidth <= 1024) { scrollPane.setPixelSize(550, 345); viewPane.setPixelWidth(550); updateUI(); if (isVisible()) centerOnScreen(); } else if (currentClientWidth <= 1024 && clientWidth > 1024) { scrollPane.setPixelSize(550 + HIGH_RES_EXTRA_WIDTH, 345 + HIGH_RES_EXTRA_HEIGHT); viewPane.setPixelWidth(550 + HIGH_RES_EXTRA_WIDTH); updateUI(); if (isVisible()) centerOnScreen(); } currentClientWidth = clientWidth; } public void onClick(Widget sender) { if (viewPane.getSelectedIndex() == VIEW_EVENTS) { for (int i = 0; i < EVENT_FILTERS.length; i++) { if (sender == filtersBt[i]) { filtersBt[i].setSelected(true); eventFilter = EVENT_FILTERS[i]; } else { filtersBt[i].setSelected(false); } } updateUI(); } } // ------------------------------------------------- METHODES PRIVEES -- // private void updateUI() { switch (viewPane.getSelectedIndex()) { case VIEW_EVENTS: StringBuffer content = new StringBuffer("<table style=\"width: 100%;\" cellspacing=\"0\">"); int count = 0; for (int i = 0; i < this.events.size(); i++) { String html = addEvent(i, events.get(i), count % 2 == 0); if (html != null) { content.append(html); count++; } } content.append("</table>"); this.eventsPanel.getElement().setInnerHTML(content.toString()); for (int i = 0; i < this.events.size(); i++) { EventData event = events.get(i); if (event.getIdArea() != 0) { Element element = OpenJWT.getElementById("showEventLocation" + i, eventsPanel.getElement()); if (element != null) ToolTipManager.getInstance().register(element, event.getAreaName()); } } this.scrollPane.update(); break; case VIEW_ALERTS: content = new StringBuffer("<table style=\"width: 100%;\" cellspacing=\"0\">"); count = 0; for (int i = 0; i < this.alerts.size(); i++) { String html = addAlert(i, alerts.get(i), count % 2 == 0); if (html != null) { content.append(html); count++; } } content.append("</table>"); this.eventsPanel.getElement().setInnerHTML(content.toString()); for (int i = 0; i < this.alerts.size(); i++) { AlertData alert = alerts.get(i); if (alert.getIdArea() != 0) { Element element = OpenJWT.getElementById("showAlertLocation" + i, eventsPanel.getElement()); if (element != null) ToolTipManager.getInstance().register(element, alert.getAreaName()); } } this.scrollPane.update(); break; case VIEW_RSS: String html; Utilities.log(Settings.getEkey()); String url = Config.getServerUrl() + "rss/events/" + Settings.getEkey() + ".xml"; if (Settings.isPremium()) html = "Copier / collez l'adresse suivante dans un agrgateur RSS pour visualiser vos vnements.<br/><br/><a href=\"" + url + "\" target=\"_blank\">" + url + "</a><br/><br/><br/><span style=\"color: red;\">Avertissement : ne communiquez <b>PAS</b> cette adresse d'autres personnes, sans quoi elles auront accs vos vnements !</span>"; else html = "Vous devez disposer d'un compte premium pour accder l'export des vnements sous forme de flux RSS."; this.eventsPanel.getElement() .setInnerHTML("<div class=\"center\" style=\"padding: 100px 20px 0 20px;\">" + html + "</div>"); this.scrollPane.update(); break; } } private String addAlert(int index, AlertData alert, boolean odd) { String description = ""; switch (alert.getType()) { case AlertData.ALERT_AVAILABLE_SKILL_POINT: // Point de comptence non attribu description = "Notre flotte <b>" + alert.getArg1() + "</b> a des points de comptences non attribus."; break; case AlertData.ALERT_NO_RESEARCH: // Pas de recherche en cours description = "Aucune recherche n'a t dfinie pour nos scientifiques !"; break; case AlertData.ALERT_SYSTEM_STOCK: // Stocks levs description = "Les stocks du systme <b>" + alert.getArg1() + "</b> sont remplis <b>" + (int) Math.floor(Double.parseDouble(alert.getArg2()) * 100) + "%</b>."; break; case AlertData.ALERT_PENDING_TREATY: // Trait en attente description = "Une proposition de trait avec <b>" + alert.getArg1() + "</b> est en attente."; break; case AlertData.ALERT_NO_TACTICS: // Flotte sans tactique description = "Aucune tactique n'a t dfinie pour notre flotte <b>" + alert.getArg1() + "</b>."; break; case AlertData.ALERT_DESACTIVATE_STRUCTURE: // Structure non active description = "Notre structure <b>" + alert.getArg1() + "</b> n'est pas active."; break; case AlertData.ALERT_AVAILABLE_CIVIL_POINT: // Point(s) de civilisation non utilis(s) description = "<b>" + alert.getArg1() + "<b> point(s) de civilisation " + "non utilis(s)."; break; default: description = "!Unknown alert: " + alert.getType() + "!"; break; } if (alert.getIdArea() != 0) description = "<img id=\"showAlertLocation" + index + "\" class=\"goToLocation\" src=\"" + Config.getMediaUrl() + "images/misc/blank.gif\"/ style=\"float: right; margin: 0 5px;\">" + description; return "<tr class=\"" + (odd ? "odd" : "even") + "\" style=\"padding: 0;\">" + "<td class=\"alert priority" + alert.getPriority() + " small\" style=\"padding: 4px;\">" + description + "</td></tr>"; } private String addEvent(int index, EventData event, boolean odd) { String type = "", description = "", icon = ""; StaticMessages messages = GWT.create(StaticMessages.class); DynamicMessages dynamicMessages = GWT.create(DynamicMessages.class); switch (event.getType()) { case EventData.EVENT_PREMIUM_START: // Nouveau compte premium type = "e-info"; icon = "Premium"; description = "Vous disposez dsormais d'un compte Premium pendant " + event.getArg1() + " jours."; break; case EventData.EVENT_PREMIUM_EXTENDED: // Compte premium prolong type = "e-info"; icon = "Premium"; description = "Vous avez prolong votre compte Premium de " + event.getArg1() + " jours ; il expirera dans " + event.getArg2() + " jours."; break; case EventData.EVENT_PREMIUM_NEAR_END: // Compte premium proche de l'expiration type = "e-info"; icon = "Premium"; description = "Votre compte Premium expirera dans " + event.getArg1() + " jours."; break; case EventData.EVENT_PREMIUM_END: // Compte premium expir type = "e-info"; icon = "Premium"; description = "Votre compte Premium a expir ; vous ne bnficiez plus des avantages lis aux comptes Premium."; break; case EventData.EVENT_FLEET_ATTACK: // Attaque de flotte type = "e-war"; icon = "Battle"; description = "Notre flotte <b>" + event.getArg1() + "</b> " + "a engag le combat avec la flotte <b>" + event.getArg2() + "</b> " + "appartenant <b>" + event.getArg3() + "</b>."; break; case EventData.EVENT_FLEET_UNDER_ATTACK: // Flotte attaque type = "e-war"; icon = "Battle"; description = "Notre flotte <b>" + event.getArg1() + "</b> " + "a t attaque par la flotte <b>" + event.getArg2() + "</b> " + "appartenant <b>" + event.getArg3() + "</b>."; break; case EventData.EVENT_FLEET_DESTROYED: // Flotte dtruite type = "e-war"; icon = "Battle"; description = "Nos forces ont dtruit la flotte <b>" + event.getArg1() + "</b> !"; break; case EventData.EVENT_FLEET_LOST: // Flotte perdue type = "e-war"; icon = "Battle"; description = "Notre flotte <b>" + event.getArg1() + "</b> a t dtruite par les forces ennemies !"; break; case EventData.EVENT_BATTLE_REPORT: // Rapport de combat type = "e-war"; icon = "Battle"; description = "<b><a id=\"showBattleReport" + event.getArg1() + "\" class=\"link\">Voir le combat</a></b> - " + "Lien pour partager le combat : <a href=\"" + event.getArg2() + "\" target=\"_blank\">" + event.getArg2() + "</a>"; break; case EventData.EVENT_SWAP: // Distorsion spatiale type = "e-war"; icon = "Swap"; description = "Notre flotte <b>" + event.getArg1() + "</b> a " + "t dplace suite une distorsion spatiale gnre " + "par la flotte <b>" + event.getArg2() + "</b> appartenant " + " <b>" + event.getArg3() + "</b>."; break; case EventData.EVENT_EMP: // IEM type = "e-war"; icon = "Emp"; description = "Notre flotte <b>" + event.getArg1() + "</b> a " + "subi une impulsion lectromagntique gnre " + "par la flotte <b>" + event.getArg2() + "</b> appartenant " + " <b>" + event.getArg3() + "</b>."; break; case EventData.EVENT_DELUDE_LOST: // Leurre dtruit type = "e-war"; icon = "Battle"; description = "Notre leurre <b>" + event.getArg1() + "</b> " + "a t dtruit par la flotte <b>" + event.getArg2() + "</b> " + "appartenant <b>" + event.getArg3() + "</b>."; break; case EventData.EVENT_COLONIZATION: // Colonisation type = "e-info"; icon = "Colonization"; description = "Notre flotte <b>" + event.getArg1() + "</b> a colonis le systme <b>" + event.getArg2() + "</b>."; break; case EventData.EVENT_SYSTEM_CAPTURED: // Systme captur type = "e-war"; icon = "Colonization"; description = "Notre flotte <b>" + event.getArg1() + "</b> a pris le contrle du systme <b>" + event.getArg3() + "</b> appartenant <b>" + event.getArg2() + "</b> !"; break; case EventData.EVENT_SYSTEM_LOST: // Systme perdu type = "e-war"; icon = "Colonization"; description = "Notre systme <b>" + event.getArg3() + "</b> a t captur par la flotte <b>" + event.getArg1() + "</b> appartenant <b>" + event.getArg2() + "</b> !"; break; case EventData.EVENT_START_CAPTURE: // Dbut de capture d"un systme type = "e-war"; icon = "Colonization"; description = "Notre systme <b>" + event.getArg3() + "</b> est en train d'tre captur par la flotte <b>" + event.getArg1() + "</b> appartenant <b>" + event.getArg2() + "</b> !"; break; case EventData.EVENT_DEVASTATE_SYSTEM: // Devastation de systme type = "e-war"; icon = "Colonization"; description = "Notre flotte <b>" + event.getArg1() + "</b> a dvast le systme <b>" + event.getArg3() + "</b> appartenant <b>" + event.getArg2() + "</b> !"; break; case EventData.EVENT_SYSTEM_DEVASTATED: // Systme devast type = "e-war"; icon = "Colonization"; description = "Notre systme <b>" + event.getArg3() + "</b> a t dvast par la flotte <b>" + event.getArg1() + "</b> appartenant <b>" + event.getArg2() + "</b> !"; break; case EventData.EVENT_STATION_UNDER_ATTACK: // Station endommage type = "e-war"; icon = "Battle"; description = "Notre station spatiale <b>" + event.getArg1() + "</b> est endommage <b>" + (int) Math.round((1 - Double.parseDouble(event.getArg2())) * 100) + "%</b>."; break; case EventData.EVENT_STATION_LOST: // Station perdue type = "e-war"; icon = "Battle"; description = "Notre station spatiale <b>" + event.getArg1() + "</b> a t dtruite !"; break; case EventData.EVENT_STATION_SELF_DESTRUCT: // Station auto dtruite type = "e-war"; icon = "Battle"; description = "<b>" + event.getArg2() + "</b> a enclench la procdure " + "d'auto-destruction de notre station spatiale <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_NEW_TECHNOLOGY: // Nouvelle technologie recherche type = "e-info"; icon = "Research"; description = "Nos chercheurs ont dcouvert la technologie <b>" + dynamicMessages.getString("research" + Integer.parseInt(event.getArg1())) + "</b>."; break; case EventData.EVENT_ALLY_CREATED: // Cration d"une alliance type = "e-ally"; icon = "Ally"; description = "L'alliance <b>" + event.getArg2() + "</b> a t fonde par <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_ALLY_DESTROYED: // Dissolution d"une alliance type = "e-ally"; icon = "Ally"; description = "L'alliance <b>" + event.getArg1() + "</b> a t dissoute."; break; case EventData.EVENT_ALLY_MEMBER_JOINED: // Nouveau membre type = "e-ally"; icon = "Ally"; description = "<b>" + event.getArg1() + "</b> a intgr notre alliance."; break; case EventData.EVENT_ALLY_MEMBER_LEFT: // Membre qui quitte l"alliance type = "e-ally"; icon = "Ally"; description = "<b>" + event.getArg1() + "</b> a quitt notre alliance."; break; case EventData.EVENT_ALLY_NEW_RANK: // Changement de rang du joueur type = "e-ally"; icon = "Ally"; description = "Vous avez dsormais le rang de <b>" + dynamicMessages.getString(event.getArg1() + "Rank" + event.getArg2()) + "</b>."; break; case EventData.EVENT_ALLY_APPLICANT: // Nouveau postulant type = "e-ally"; icon = "Ally"; description = "<b>" + event.getArg1() + "</b> a postul notre alliance."; break; case EventData.EVENT_ALLY_CANCEL_APPLY: // Postulant qui retire sa candidatuer type = "e-ally"; icon = "Ally"; description = "<b>" + event.getArg1() + "</b> a retir sa " + "candidature dans notre alliance."; break; case EventData.EVENT_ALLY_NEW_VOTEKICK: // Joueur qui lance un vote de kick type = "e-ally"; icon = "Ally"; description = "<b>" + event.getArg1() + "</b> a lanc un vote pour jecter <b>" + event.getArg2() + "</b> de notre alliance."; break; case EventData.EVENT_ALLY_NEW_VOTEACCEPT: // Joueur qui lance un vote d"accept type = "e-ally"; icon = "Ally"; description = "<b>" + event.getArg1() + "</b> a lanc un vote pour accepter <b>" + event.getArg2() + "</b> dans notre alliance."; break; case EventData.EVENT_ALLY_BREAK_ALLY: // Alliance qui rompt un trait d"alliance type = "e-ally"; icon = "Diplomacy"; description = "Nous avons rompu le pacte de non agression " + "pass avec l'alliance <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_ALLY_ALLY_BROKEN: // Trait d"alliance rompu type = "e-ally"; icon = "Diplomacy"; description = "L'alliance <b>" + event.getArg1() + "</b> a rompu le pacte de non agression pass avec notre alliance."; break; case EventData.EVENT_ALLY_DECLARE_WAR: // Dclaration de guerre type = "e-war"; icon = "Diplomacy"; description = "Nous avons dclar la guerre l'alliance <b>" + event.getArg1() + "</b> !"; break; case EventData.EVENT_ALLY_WAR_DECLARED: // Guerre dclare type = "e-war"; icon = "Diplomacy"; description = "L'alliance <b>" + event.getArg1() + "</b> nous a dclar la guerre !"; break; case EventData.EVENT_ALLY_OFFER_ALLY: // Proposition d"alliance type = "e-ally"; icon = "Diplomacy"; description = "Nous avons propos un pacte de non agression l'alliance <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_ALLY_ALLY_OFFERED: // Alliance propose type = "e-ally"; icon = "Diplomacy"; description = "L'alliance <b>" + event.getArg1() + "</b> souhaite signer un pacte de non agression avec notre alliance."; break; case EventData.EVENT_ALLY_DECLINE_ALLY: // Refus d"alliance type = "e-ally"; icon = "Diplomacy"; description = "Nous avons refus le pacte de non agression avec l'alliance <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_ALLY_ALLY_DECLINED: // Alliance refuse type = "e-ally"; icon = "Diplomacy"; description = "L'alliance <b>" + event.getArg1() + "</b> a refus de signer un pacte de non agression avec notre alliance."; break; case EventData.EVENT_ALLY_CANCEL_ALLY: // Proposition d'alliance retire type = "e-ally"; icon = "Diplomacy"; description = "Nous avons retir notre proposition de pacte de non agression avec l'alliance <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_ALLY_ALLY_CANCELED: // Proposition d'alliance retire type = "e-ally"; icon = "Diplomacy"; description = "L'alliance <b>" + event.getArg1() + "</b> a retir sa proposition de pacte de non agression."; break; case EventData.EVENT_ALLY_NEW_ALLY: // Alliance accepte type = "e-ally"; icon = "Diplomacy"; description = "Nous avons dsormais un pacte de non agression avec l'alliance <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_ALLY_OFFER_PEACE: // Proposition de paix type = "e-war"; icon = "Diplomacy"; description = "Nous avons propos de signer la paix l'alliance <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_ALLY_PEACE_OFFERED: // Paix propose type = "e-war"; icon = "Diplomacy"; description = "L'alliance <b>" + event.getArg1() + "</b> souhaite signer la paix avec notre alliance."; break; case EventData.EVENT_ALLY_DECLINE_PEACE: // Refus proposition de paix type = "e-war"; icon = "Diplomacy"; description = "Nous avons refus de signer la paix avec l'alliance <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_ALLY_PEACE_DECLINED: // Proposition de paix refuse type = "e-war"; icon = "Diplomacy"; description = "L'alliance <b>" + event.getArg1() + "</b> a refus de signer la paix avec notre alliance."; break; case EventData.EVENT_ALLY_CANCEL_PEACE: // Retirer proposition de paix type = "e-war"; icon = "Diplomacy"; description = "Nous avons retir notre proposition de paix avec l'alliance <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_ALLY_PEACE_CANCELED: // Proposition de paix retire type = "e-war"; icon = "Diplomacy"; description = "L'alliance <b>" + event.getArg1() + "</b> a retir sa proposition de paix avec notre alliance."; break; case EventData.EVENT_ALLY_NEW_PEACE: // Paix signe type = "e-war"; icon = "Diplomacy"; description = "Nous avons sign la paix avec l'alliance <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_PLAYER_BREAK_ALLY: // Alliance qui rompt un trait d"alliance type = "e-ally"; icon = "Diplomacy"; description = "Nous avons rompu le pacte de non agression " + "pass avec <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_PLAYER_ALLY_BROKEN: // Trait d"alliance rompu type = "e-ally"; icon = "Diplomacy"; description = "<b>" + event.getArg1() + "</b> a rompu le pacte de non agression pass avec notre gouvernement."; break; case EventData.EVENT_PLAYER_DECLARE_WAR: // Dclaration de guerre type = "e-war"; icon = "Diplomacy"; description = "Nous avons dclar la guerre <b>" + event.getArg1() + "</b> !"; break; case EventData.EVENT_PLAYER_WAR_DECLARED: // Guerre dclare type = "e-war"; icon = "Diplomacy"; description = "<b>" + event.getArg1() + "</b> nous a dclar la guerre !"; break; case EventData.EVENT_PLAYER_OFFER_ALLY: // Proposition d"alliance type = "e-ally"; icon = "Diplomacy"; description = "Nous avons propos pacte de non agression <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_PLAYER_ALLY_OFFERED: // Alliance propose type = "e-ally"; icon = "Diplomacy"; description = "<b>" + event.getArg1() + "</b> souhaite signer un pacte de non agression avec notre gouvernement."; break; case EventData.EVENT_PLAYER_DECLINE_ALLY: // Refus d"alliance type = "e-ally"; icon = "Diplomacy"; description = "Nous avons refus le pacte de non agression avec <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_PLAYER_ALLY_DECLINED: // Alliance refuse type = "e-ally"; icon = "Diplomacy"; description = "<b>" + event.getArg1() + "</b> a refus de signer un pacte de non agression avec notre gouvernement."; break; case EventData.EVENT_PLAYER_CANCEL_ALLY: // Proposition d'alliance retire type = "e-ally"; icon = "Diplomacy"; description = "Nous avons retir notre proposition de pacte de non agression avec <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_PLAYER_ALLY_CANCELED: // Proposition d'alliance retire type = "e-ally"; icon = "Diplomacy"; description = "<b>" + event.getArg1() + "</b> a retir sa proposition de coalition."; break; case EventData.EVENT_PLAYER_NEW_ALLY: // Alliance accepte type = "e-ally"; icon = "Diplomacy"; description = "Nous avons dsormais un pacte de non agression avec <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_PLAYER_OFFER_PEACE: // Proposition de paix type = "e-war"; icon = "Diplomacy"; description = "Nous avons propos de signer la paix <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_PLAYER_PEACE_OFFERED: // Paix propose type = "e-war"; icon = "Diplomacy"; description = "<b>" + event.getArg1() + "</b> souhaite signer la paix avec nous."; break; case EventData.EVENT_PLAYER_DECLINE_PEACE: // Refus proposition de paix type = "e-war"; icon = "Diplomacy"; description = "Nous avons refus de signer la paix avec <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_PLAYER_PEACE_DECLINED: // Proposition de paix refuse type = "e-war"; icon = "Diplomacy"; description = "<b>" + event.getArg1() + "</b> a refus de signer la paix avec notre gouvernement."; break; case EventData.EVENT_PLAYER_CANCEL_PEACE: // Retirer proposition de paix type = "e-war"; icon = "Diplomacy"; description = "Nous avons retir notre proposition de signer la paix avec <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_PLAYER_PEACE_CANCELED: // Proposition de paix retire type = "e-war"; icon = "Diplomacy"; description = "<b>" + event.getArg1() + "</b> a retir sa proposition de signer la paix."; break; case EventData.EVENT_PLAYER_NEW_PEACE: // Paix signe type = "e-war"; icon = "Diplomacy"; description = "Nous avons sign la paix avec <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_PLAYER_END_OF_WAR: // Paix signe par guerre inactive type = "e-war"; icon = "Diplomacy"; description = "Les affrontements avec <b>" + event.getArg1() + "</b> ayant cess, la paix a t signe."; break; case EventData.EVENT_NEW_STATION: // Nouvelle station type = "e-ally"; icon = "Ally"; description = "Nous disposons d'une nouvelle station spatiale dans le secteur <b>" + event.getArg1() + "</b> !"; break; case EventData.EVENT_STATION_UPGRADED: // Station amliore type = "e-ally"; icon = "Ally"; description = "Notre station spatiale <b>" + event.getArg1() + "</b> a t amliore au niveau <b>" + event.getArg2() + "</b> !"; break; case EventData.EVENT_CHARGE_DEFUSED: // Charge dsamorce type = "e-war"; icon = "Charge"; description = "La flotte <b>" + event.getArg1() + "</b> appartenant <b>" + event.getArg2() + "</b> a dsamorc une de nos " + getChargeName(event.getArg3(), 2) + "."; break; case EventData.EVENT_CHARGE_TRIGGERED: // Charge dclenche type = "e-war"; icon = "Charge"; if (event.getArg3().startsWith(WardData.TYPE_MINE)) description = "La flotte <b>" + event.getArg1() + "</b> appartenant <b>" + event.getArg2() + "</b> a t endommage par " + event.getArg4() + " de nos " + getChargeName(event.getArg3(), 2) + "."; else description = "La flotte <b>" + event.getArg1() + "</b> appartenant <b>" + event.getArg2() + "</b> a t immobilise par " + event.getArg4() + " de nos " + getChargeName(event.getArg3(), 2) + "."; break; case EventData.EVENT_CHARGE_BLOWED: // Charge subie type = "e-war"; icon = "Charge"; if (event.getArg2().startsWith(WardData.TYPE_MINE)) description = "Notre flotte <b>" + event.getArg1() + "</b> a t endommage par " + event.getArg3() + " " + getChargeName(event.getArg2(), Integer.parseInt(event.getArg3())) + "."; else description = "Notre flotte <b>" + event.getArg1() + "</b> a t immobilise par " + event.getArg3() + " " + getChargeName(event.getArg2(), Integer.parseInt(event.getArg3())) + "."; break; case EventData.EVENT_CHARGE_FLEET_DESTROYED: // Flotte dtruite par une charge type = "e-war"; icon = "Charge"; description = "La flotte <b>" + event.getArg1() + "</b> appartenant <b>" + event.getArg2() + "</b> a t dtruite par " + event.getArg4() + " de nos " + getChargeName(event.getArg3(), 2) + "."; break; case EventData.EVENT_CHARGE_FLEET_LOST: // Flotte perdue cause d'une charge type = "e-war"; icon = "Charge"; description = "Notre flotte <b>" + event.getArg1() + "</b> a t dtruite par " + event.getArg3() + " " + getChargeName(event.getArg2(), Integer.parseInt(event.getArg3())) + "."; break; case EventData.EVENT_STRUCTURE_ATTACKED: // Structure bombarde type = "e-war"; icon = "Structure"; description = "Notre structure <b>" + event.getArg1() + "</b> subit un bombardement de la flotte <b>" + event.getArg2() + "</b> appartenant <b>" + event.getArg3() + "</b>."; break; case EventData.EVENT_STRUCTURE_LOST: // Structure perdue type = "e-war"; icon = "Structure"; description = "Notre structure <b>" + event.getArg1() + "</b> a t dtruite par la flotte <b>" + event.getArg2() + "</b> appartenant <b>" + event.getArg3() + "</b>."; break; case EventData.EVENT_STRUCTURE_DESTROYED: // Structure dtruite type = "e-war"; icon = "Structure"; description = "Notre flotte <b>" + event.getArg3() + "</b> a dtruit la structure <b>" + event.getArg1() + "</b> appartenant <b>" + event.getArg2() + "</b>."; break; case EventData.EVENT_STRUCTURE_DISMOUNTED: // Structure dtruite type = "e-info"; icon = "Structure"; description = "Notre flotte <b>" + event.getArg2() + "</b> a achev le dmontage de la structure <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_STRUCTURE_MOUNTED: // Structure dtruite type = "e-info"; icon = "Structure"; description = "Notre flotte <b>" + event.getArg2() + "</b> a achev l'assemblage de la structure <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_STRUCTURE_DAMAGED: // Structure endommage type = "e-war"; icon = "Structure"; description = "Notre structure <b>" + event.getArg1() + "</b> est endommage <b>" + (int) Math.round((1 - Double.parseDouble(event.getArg2())) * 100) + "</b>."; break; case EventData.EVENT_FLEET_CAPTURED_BLACKHOLE: // Flotte capture par un trou noir type = "e-war"; icon = "Blackhole"; description = "Notre flotte <b>" + event.getArg1() + "</b> vient d'tre affaiblie par un trou noir !"; break; case EventData.EVENT_WARD_OBSERVER_LOST: // Observer ward dtruite type = "e-war"; icon = "Wards"; description = "<b>" + event.getArg1() + "</b> dtruit une de nos balises d'observation."; break; case EventData.EVENT_WARD_SENTRY_LOST: // Sentry ward dtruite type = "e-war"; icon = "Wards"; description = "<b>" + event.getArg1() + "</b> dtruit une de nos balises de dtection."; break; case EventData.EVENT_PLAYER_ADD_FRIEND: //Ajout d'un ami type = "e-ally"; icon = "Diplomacy"; description = "<b>" + event.getArg1() + "</b> a t ajout votre liste d'amis."; break; case EventData.EVENT_PLAYER_REMOVE_FRIEND: //Suppression d'un ami type = "e-ally"; icon = "Diplomacy"; description = "<b>" + event.getArg1() + "</b> a t retir de votre liste d'amis."; break; case EventData.EVENT_PLAYER_ADDED_FRIEND: //Ajout d'un ami type = "e-ally"; icon = "Diplomacy"; description = "<b>" + event.getArg1() + "</b> vous a ajout sa liste d'amis."; break; case EventData.EVENT_PLAYER_REMOVED_FRIEND: //Suppression d'un ami type = "e-ally"; icon = "Diplomacy"; description = "<b>" + event.getArg1() + "</b> vous a retir de sa liste d'amis."; break; case EventData.EVENT_ALLY_ADDED_NEWS: //Ajout d'une news type = "e-ally"; icon = "Ally"; description = "<b>" + event.getArg1() + "</b> a ajout une news."; break; case EventData.EVENT_ALLY_REMOVED_NEWS: //Suppression d'une news type = "e-ally"; icon = "Ally"; description = "<b>" + event.getArg1() + "</b> a supprim une news."; break; case EventData.EVENT_MIGRATION_START: //Debut de migration type = "e-info"; icon = "Colonization"; description = "Notre flotte <b>" + event.getArg1() + "</b> a commenc migrer le systme <b>" + event.getArg2() + "</b> vers le systme <b>" + event.getArg3() + "</b>."; break; case EventData.EVENT_MIGRATION_END: //Fin de migration type = "e-info"; icon = "Colonization"; description = "Notre flotte <b>" + event.getArg1() + "</b> vient d'achever la migration du systme <b>" + event.getArg2() + "</b> vers le systme <b>" + event.getArg3() + "</b>."; break; case EventData.EVENT_ALLY_BREAK_ALLY_DEFENSIVE: type = "e-ally"; icon = "Diplomacy"; description = "Nous avons rompu le pacte Dfensif " + "pass avec l'alliance <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_ALLY_ALLY_DEFENSIVE_BROKEN: type = "e-ally"; icon = "Diplomacy"; description = "L'alliance <b>" + event.getArg1() + "</b> a rompu le pacte Dfensif pass avec notre alliance."; break; case EventData.EVENT_ALLY_OFFER_ALLY_DEFENSIVE: type = "e-ally"; icon = "Diplomacy"; description = "Nous avons propos un pacte Dfensif l'alliance <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_ALLY_ALLY_DEFENSIVE_OFFERED: type = "e-ally"; icon = "Diplomacy"; description = "L'alliance <b>" + event.getArg1() + "</b> souhaite signer un pacte Dfensif avec notre alliance."; break; case EventData.EVENT_ALLY_DECLINE_ALLY_DEFENSIVE: type = "e-ally"; icon = "Diplomacy"; description = "Nous avons refus le pacte Dfensif avec l'alliance <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_ALLY_ALLY_DEFENSIVE_DECLINED: type = "e-ally"; icon = "Diplomacy"; description = "L'alliance <b>" + event.getArg1() + "</b> a refus de signer un pacte Dfensif avec notre alliance."; break; case EventData.EVENT_ALLY_CANCEL_ALLY_DEFENSIVE: type = "e-ally"; icon = "Diplomacy"; description = "Nous avons retir notre proposition de pacte Dfensif avec l'alliance <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_ALLY_ALLY_DEFENSIVE_CANCELED: type = "e-ally"; icon = "Diplomacy"; description = "L'alliance <b>" + event.getArg1() + "</b> a retir sa proposition de pacte Dfensif."; break; case EventData.EVENT_ALLY_NEW_ALLY_DEFENSIVE: type = "e-ally"; icon = "Diplomacy"; description = "Nous avons dsormais un pacte Dfensif avec l'alliance <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_ALLY_BREAK_ALLY_TOTAL: type = "e-ally"; icon = "Diplomacy"; description = "Nous avons rompu le pacte Total " + "pass avec l'alliance <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_ALLY_ALLY_TOTAL_BROKEN: type = "e-ally"; icon = "Diplomacy"; description = "L'alliance <b>" + event.getArg1() + "</b> a rompu le pacte Total pass avec notre alliance."; break; case EventData.EVENT_ALLY_OFFER_ALLY_TOTAL: type = "e-ally"; icon = "Diplomacy"; description = "Nous avons propos un pacte Total l'alliance <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_ALLY_ALLY_TOTAL_OFFERED: type = "e-ally"; icon = "Diplomacy"; description = "L'alliance <b>" + event.getArg1() + "</b> souhaite signer un pacte Total avec notre alliance."; break; case EventData.EVENT_ALLY_DECLINE_ALLY_TOTAL: type = "e-ally"; icon = "Diplomacy"; description = "Nous avons refus le pacte Total avec l'alliance <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_ALLY_ALLY_TOTAL_DECLINED: type = "e-ally"; icon = "Diplomacy"; description = "L'alliance <b>" + event.getArg1() + "</b> a refus de signer un pacte Total avec notre alliance."; break; case EventData.EVENT_ALLY_CANCEL_ALLY_TOTAL: type = "e-ally"; icon = "Diplomacy"; description = "Nous avons retir notre proposition de pacte Total avec l'alliance <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_ALLY_ALLY_TOTAL_CANCELED: type = "e-ally"; icon = "Diplomacy"; description = "L'alliance <b>" + event.getArg1() + "</b> a retir sa proposition de pacte Total."; break; case EventData.EVENT_ALLY_NEW_ALLY_TOTAL: type = "e-ally"; icon = "Diplomacy"; description = "Nous avons dsormais un pacte Total avec l'alliance <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_PLAYER_BREAK_ALLY_DEFENSIVE: // Alliance qui rompt un trait d"alliance type = "e-ally"; icon = "Diplomacy"; description = "Nous avons rompu le pacte Dfensif " + "pass avec <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_PLAYER_ALLY_DEFENSIVE_BROKEN: // Trait d"alliance rompu type = "e-ally"; icon = "Diplomacy"; description = "<b>" + event.getArg1() + "</b> a rompu le pacte Dfensif pass avec notre gouvernement."; break; case EventData.EVENT_PLAYER_OFFER_ALLY_DEFENSIVE: // Proposition d"alliance type = "e-ally"; icon = "Diplomacy"; description = "Nous avons propos un pacte Dfensif <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_PLAYER_ALLY_DEFENSIVE_OFFERED: // Alliance propose type = "e-ally"; icon = "Diplomacy"; description = "<b>" + event.getArg1() + "</b> souhaite signer un pacte Dfensif avec notre gouvernement."; break; case EventData.EVENT_PLAYER_DECLINE_ALLY_DEFENSIVE: // Refus d"alliance type = "e-ally"; icon = "Diplomacy"; description = "Nous avons refus le pacte Dfensif avec <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_PLAYER_ALLY_DEFENSIVE_DECLINED: // Alliance refuse type = "e-ally"; icon = "Diplomacy"; description = "<b>" + event.getArg1() + "</b> a refus de signer un pacte Dfensif avec notre gouvernement."; break; case EventData.EVENT_PLAYER_CANCEL_ALLY_DEFENSIVE: // Proposition d'alliance retire type = "e-ally"; icon = "Diplomacy"; description = "Nous avons retir notre proposition de pacte Dfensif avec <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_PLAYER_ALLY_DEFENSIVE_CANCELED: // Proposition d'alliance retire type = "e-ally"; icon = "Diplomacy"; description = "<b>" + event.getArg1() + "</b> a retir sa proposition de pacte Dfensif."; break; case EventData.EVENT_PLAYER_NEW_ALLY_DEFENSIVE: // Alliance accepte type = "e-ally"; icon = "Diplomacy"; description = "Nous avons dsormais un pacte Dfensif avec <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_PLAYER_BREAK_ALLY_TOTAL: // Alliance qui rompt un trait d"alliance type = "e-ally"; icon = "Diplomacy"; description = "Nous avons rompu le pacte Total " + "pass avec <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_PLAYER_ALLY_TOTAL_BROKEN: // Trait d"alliance rompu type = "e-ally"; icon = "Diplomacy"; description = "<b>" + event.getArg1() + "</b> a rompu le pacte Total pass avec notre gouvernement."; break; case EventData.EVENT_PLAYER_OFFER_ALLY_TOTAL: // Proposition d"alliance type = "e-ally"; icon = "Diplomacy"; description = "Nous avons propos un pacte Total <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_PLAYER_ALLY_TOTAL_OFFERED: // Alliance propose type = "e-ally"; icon = "Diplomacy"; description = "<b>" + event.getArg1() + "</b> souhaite signer un pacte Total avec notre gouvernement."; break; case EventData.EVENT_PLAYER_DECLINE_ALLY_TOTAL: // Refus d"alliance type = "e-ally"; icon = "Diplomacy"; description = "Nous avons refus le pacte Total avec <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_PLAYER_ALLY_TOTAL_DECLINED: // Alliance refuse type = "e-ally"; icon = "Diplomacy"; description = "<b>" + event.getArg1() + "</b> a refus de signer un pacte Total avec notre gouvernement."; break; case EventData.EVENT_PLAYER_CANCEL_ALLY_TOTAL: // Proposition d'alliance retire type = "e-ally"; icon = "Diplomacy"; description = "Nous avons retir notre proposition de pacte Total avec <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_PLAYER_ALLY_TOTAL_CANCELED: // Proposition d'alliance retire type = "e-ally"; icon = "Diplomacy"; description = "<b>" + event.getArg1() + "</b> a retir sa proposition de pacte Total."; break; case EventData.EVENT_PLAYER_NEW_ALLY_TOTAL: // Alliance accepte type = "e-ally"; icon = "Diplomacy"; description = "Nous avons dsormais un pacte Total avec <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_ALLY_DECLARE_WAR_TOTAL: type = "e-war"; icon = "Diplomacy"; description = "Notre pacte Total pass avec <b>" + event.getArg1() + "</b> nous oblige dclarer " + "la guerre l'alliance <b>" + event.getArg2() + "</b> !"; break; case EventData.EVENT_ALLY_WAR_DECLARED_TOTAL: type = "e-war"; icon = "Diplomacy"; description = "A cause du pacte Total conclu avec <b>" + event.getArg1() + "</b>, <b>" + event.getArg2() + "</b> nous a dclar la guerre!"; break; case EventData.EVENT_ALLY_DECLARE_WAR_DEFENSIVE: type = "e-war"; icon = "Diplomacy"; description = "Notre pacte Dfensif pass avec <b>" + event.getArg1() + "</b> nous oblige dclarer " + "la guerre l'alliance <b>" + event.getArg2() + "</b> !"; break; case EventData.EVENT_ALLY_WAR_DECLARED_DEFENSIVE: type = "e-war"; icon = "Diplomacy"; description = "A cause du pacte Dfensif conclu avec <b>" + event.getArg1() + "</b>, <b>" + event.getArg2() + "</b> nous a dclar la guerre!"; break; case EventData.EVENT_PLAYER_DECLARE_WAR_TOTAL: type = "e-war"; icon = "Diplomacy"; description = "Notre pacte Total pass avec <b>" + event.getArg1() + "</b> nous oblige dclarer " + "la guerre <b>" + event.getArg2() + "</b> !"; break; case EventData.EVENT_PLAYER_WAR_DECLARED_TOTAL: type = "e-war"; icon = "Diplomacy"; description = "A cause du pacte Total conclu avec <b>" + event.getArg1() + "</b>, <b>" + event.getArg2() + "</b> nous a dclar la guerre!"; break; case EventData.EVENT_PLAYER_DECLARE_WAR_DEFENSIVE: type = "e-war"; icon = "Diplomacy"; description = "Notre pacte Dfensif pass avec <b>" + event.getArg1() + "</b> nous oblige dclarer " + "la guerre <b>" + event.getArg2() + "</b> !"; break; case EventData.EVENT_PLAYER_WAR_DECLARED_DEFENSIVE: type = "e-war"; icon = "Diplomacy"; description = "A cause du pacte Dfensif conclu avec <b>" + event.getArg1() + "</b>, <b>" + event.getArg2() + "</b> nous a dclar la guerre!"; break; case EventData.EVENT_REWARD_PERSO: // Obtention du %reward% la fin d'un contrat d'alliance type = "e-info"; icon = "Ally"; description = "Votre alliance vient de terminer un contrat d'alliance ! " + "Vous obtenez les bonus suivants : <b>" + event.getArg1() + "</b>."; break; case EventData.EVENT_ELECTION_START: // Les elections commencent type = "e-ally"; icon = "Ally"; description = "Les elections pour la gestion de l'alliance viennent de commencer."; break; case EventData.EVENT_LEADER_DELEGATE: // Dlgation des droits de leader un joueur type = "e-ally"; icon = "Ally"; description = "<b>" + event.getArg1() + "</b> a donn son rang de leader de l'alliance <b>" + event.getArg2() + "</b> !"; break; case EventData.EVENT_PREMIUM: //Le joueur devient premium type = "e-info"; icon = "Diplomacy"; description = "Vous possdez maintenant un compte premium, il expirera dans 30 jours."; break; case EventData.EVENT_PREMIUM_EXPIRED: //Le joueur n'est plus premium type = "e-info"; icon = "Diplomacy"; description = "Vous n'tes plus premium!"; break; case EventData.EVENT_PREMIUM_ADDED: type = "e-info"; icon = "Diplomacy"; description = "Votre compte premium expirera le " + event.getArg1() + "."; break; case EventData.EVENT_LOTTERY_WON: // Tirage gagnant type = "e-info"; icon = "Lottery"; description = "Le symbole gagnant pour la loterie Eden est le " + LotteryDialog.SIGNS.charAt(Integer.parseInt(event.getArg1())) + ", nous avons gagn " + event.getArg2() + " !"; break; case EventData.EVENT_LOTTERY_LOST: // Tirage perdant type = "e-info"; icon = "Lottery"; description = "Le symbole gagnant pour la loterie Eden est le " + LotteryDialog.SIGNS.charAt(Integer.parseInt(event.getArg1())) + ", nous avons perdu. La prochaine fois sera la bonne !"; break; default: type = ""; icon = "Error"; description = "!Unknown event: " + event.getType() + "!"; break; } if (!eventFilter.equals("") && !icon.equals(eventFilter)) return null; if (event.getIdArea() != 0) description = "<img id=\"showEventLocation" + index + "\" class=\"goToLocation\" src=\"" + Config.getMediaUrl() + "images/misc/blank.gif\"/ style=\"float: right; margin: 0 5px;\">" + description; String date; if ((int) Math.floor(Utilities.getCurrentTime() / (3600 * 24)) == (int) Math .floor(event.getDate() / (3600 * 24))) date = DateTimeFormat.getFormat(messages.timeFormat()) .format(new Date((long) (1000 * event.getDate()))); else date = DateTimeFormat.getFormat(messages.dateFormat()) .format(new Date((long) (1000 * event.getDate()))); return "<tr class=\"" + (odd ? "odd" : "even") + "\" style=\"padding: 0;\">" + "<td class=\"date\" style=\"width: 60px;\" style=\"padding: 4px;\">" + date + "</td><td style=\"width: 16px;\"><img src=\"" + Config.getMediaUrl() + "images/misc/blank.gif\" class=\"icon icon" + icon + "\"/></td>" + "<td class=\"" + type + " small\" style=\"padding: 4px;\">" + description + "</td></tr>"; } private String getChargeName(String type, int count) { DynamicMessages messages = GWT.create(DynamicMessages.class); String key = "ward"; if (type.equals(WardData.TYPE_MINE)) key += "Mine"; else if (type.equals(WardData.TYPE_MINE_INVISIBLE)) key += "MineInvisible"; else if (type.equals(WardData.TYPE_STUN)) key += "Stun"; else if (type.equals(WardData.TYPE_STUN_INVISIBLE)) key += "StunInvisible"; return messages.getString(key + (count > 1 ? "s" : "")).toLowerCase(); } }