--- /dev/null
+/*****************************************************************************
+ * Copyright Igor Barma, Eric Brun, Alexandre Desoubeaux, Christian Martel,
+ * (2 décembre 2008)
+ *
+ * Ce logiciel est un programme informatique servant à l'évaluation des
+ * compétences.
+ *
+ * Ce logiciel est régi par la licence CeCILL soumise au droit français et
+ * respectant les principes de diffusion des logiciels libres. Vous pouvez
+ * utiliser, modifier et/ou redistribuer ce programme sous les conditions
+ * de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
+ * sur le site "http://www.cecill.info".
+ *
+ * En contrepartie de l'accessibilité au code source et des droits de copie,
+ * de modification et de redistribution accordés par cette licence, il n'est
+ * offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
+ * seule une responsabilité restreinte pèse sur l'auteur du programme, le
+ * titulaire des droits patrimoniaux et les concédants successifs.
+ *
+ * A cet égard l'attention de l'utilisateur est attirée sur les risques
+ * associés au chargement, à l'utilisation, à la modification et/ou au
+ * développement et à la reproduction du logiciel par l'utilisateur étant
+ * donné sa spécificité de logiciel libre, qui peut le rendre complexe à
+ * manipuler et qui le réserve donc à des développeurs et des professionnels
+ * avertis possédant des connaissances informatiques approfondies. Les
+ * utilisateurs sont donc invités à charger et tester l'adéquation du
+ * logiciel à leurs besoins dans des conditions permettant d'assurer la
+ * sécurité de leurs systèmes et ou de leurs données et, plus généralement,
+ * à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.
+ *
+ * Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
+ * pris connaissance de la licence CeCILL, et que vous en avez accepté les
+ * termes.
+ *******************************************************************************/
+package com.pentila.evalcomp.client.event;
+
+import java.util.List;
+
+import com.google.gwt.core.client.JavaScriptObject;
+import com.google.gwt.http.client.RequestBuilder;
+import com.google.gwt.user.client.Timer;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
+import com.gwtext.client.core.EventObject;
+import com.gwtext.client.widgets.Button;
+import com.gwtext.client.widgets.Component;
+import com.gwtext.client.widgets.Panel;
+import com.gwtext.client.widgets.Toolbar;
+import com.gwtext.client.widgets.ToolbarButton;
+import com.gwtext.client.widgets.event.ButtonListener;
+import com.gwtext.client.widgets.event.ButtonListenerAdapter;
+import com.gwtext.client.widgets.menu.Menu;
+import com.pentila.evalcomp.client.ConnexionServer;
+import com.pentila.evalcomp.client.i18n.Messages;
+import com.pentila.evalcomp.client.utilities.ITabManager;
+import com.pentila.evalcomp.client.utilities.UserTools;
+import com.pentila.evalcomp.domain.Event;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class EventWidget. The widget used in the left panel to show the last 3
+ * events
+ */
+public class EventWidget extends ToolbarButton {
+
+ /** The msg. */
+ private Label msg;
+
+
+
+ /** The it manager. */
+ private ITabManager itManager = null;
+
+ /** The list evt. */
+ private List<Event> listEvt;
+
+ /**
+ * Instantiates a new event widget.
+ *
+ * @param itManager
+ * the top level tab
+ */
+ public EventWidget(ITabManager itManager) {
+ super();
+
+ this.itManager = itManager;
+ initializeInterface();
+ updateEventList();
+ scheduleEventList();
+ }
+
+ /**
+ * Schedule event list. Used to auto refresh the widget
+ */
+ public void scheduleEventList() {
+
+ Timer timer = new Timer() {
+ @Override
+ public void run() {
+ updateEventList();
+ }
+ };
+ timer.scheduleRepeating(60000);
+ }
+
+ /**
+ * Update widget event list.
+ */
+ public void updateEventList() {
+ // TODO Auto-generated method stub
+ AsyncCallback callback = new AsyncCallback() {
+ public void onFailure(Throwable caught) {
+ System.out.println("problem dans la recup des events"); //$NON-NLS-1$
+ }
+
+ public void onSuccess(Object result) {
+ listEvt = (List<Event>) result;
+ updateInterface();
+
+ }
+ };
+
+ // Here hard code for event list max lenght
+
+ RequestBuilder rb = ConnexionServer.instanceService.getEvents(UserTools
+ .getUser().getUid(), 5000, callback);
+
+ ConnexionServer.doSend(rb);
+ }
+
+ /**
+ * Update GUI.
+ */
+ private void updateInterface() {
+
+
+ if (listEvt != null) {
+
+ /*
+ *
+ * for (Event evt : listEvt) {
+ *
+ * String emetteur = Messages.getString("Non_renseigne");
+ * //$NON-NLS-1$ if (evt.getIssuer() != null) { emetteur =
+ * evt.getIssuer().getFirstname() + " " //$NON-NLS-1$ +
+ * evt.getIssuer().getLastname(); } String evalDefName = "";
+ * //$NON-NLS-1$ if (evt.getEvaluationDefinition() != null) {
+ * evalDefName = evt.getEvaluationDefinition().getName(); }
+ *
+ * String evalSubName = ""; //$NON-NLS-1$ try { evalSubName =
+ * evt.getScenarioInstance() .getEvaluationSubjectInstance()
+ * .getEvaluationSubject().getComputedName(); } catch (Exception ex)
+ * { }
+ *
+ * Label labAlert = new Label(Format.format(EventTranslation
+ * .getShortEventTr(evt.getDescription()), new String[] {
+ * Tools.getDateFormated(evt.getStartDate()),
+ * Tools.getDateFormated(evt.getEndDate()),
+ * Tools.getDateFormated(evt.getCreationDate()), emetteur,
+ * evalSubName, evalDefName, "" //$NON-NLS-1$ + Tools.deltaDays(new
+ * Date(), evt.getEndDate(), 0), }));
+ *
+ * ListenerConfig clickListenerConfig = new ListenerConfig();
+ *
+ * EventManager.addListener(labAlert.getElement(), "mousedown",
+ * //$NON-NLS-1$ new EventCallback() { public void
+ * execute(EventObject e) { itManager.showEventList(); } },
+ * clickListenerConfig);
+ *
+ * content.add(labAlert);
+ *
+ * if (evt.getType() == Event.TYPE_ALERT) {
+ * labAlert.setStyleName("label-alert"); //$NON-NLS-1$ } if
+ * (evt.getType() == Event.TYPE_INFO) {
+ * labAlert.setStyleName("label-info"); //$NON-NLS-1$ }
+ *
+ * content.add(labAlert);
+ *
+ * ToolTip tip = new ToolTip(); String html =
+ * Format.format(EventTranslation
+ * .getPopupEventTr(evt.getDescription()), new String[] {
+ * Tools.getDateFormated(evt.getStartDate()),
+ * Tools.getDateFormated(evt.getEndDate()),
+ * Tools.getDateFormated(evt.getCreationDate()), emetteur,
+ * evalSubName, evalDefName, "" //$NON-NLS-1$ + Tools.deltaDays(new
+ * Date(), evt.getEndDate(), 0), });
+ *
+ * tip.setHtml(html); tip.applyTo(labAlert); }
+ */
+ if (listEvt.size() != 0) {
+ setText(Messages.getString("Alertes") + " ("
+ + listEvt.size() + ")");
+ } else {
+ setText(Messages.getString("Alertes"));
+ }
+ }
+ }
+
+ /**
+ * Initialize GUI.
+ */
+ private void initializeInterface() {
+
+ //this.setCls("panelMessage"); //$NON-NLS-1$
+ //this.setHeight(41);
+ //this.setWidth(175);
+ //this.setPaddings(5);
+
+
+ addListener(new ButtonListenerAdapter(){
+
+
+ @Override
+ public void onClick(Button button, EventObject e) {
+ // TODO Auto-generated method stub
+ itManager.showEventList();
+
+ }
+
+
+ });
+
+ this.setIconCls("labelAlerte");
+ this.setText(Messages.getString("Alertes"));
+
+ /*
+ *
+ * this.setIconCls("iconAlert32"); //$NON-NLS-1$ //this.setHeight(150);
+ * this.setWidth(175); this.setAutoScroll(true);
+ *
+ *
+ * this.setTitle(Messages.getString("Alertes")); //$NON-NLS-1$
+ *
+ *
+ *
+ *
+ *
+ * //content = new VerticalPanel(); //content.setSpacing(2);
+ * //this.add(content);
+ *
+ * ListenerConfig clickListenerConfig = new ListenerConfig();
+ *
+ * EventManager.addListener(this.getElement(), "mousedown",
+ * //$NON-NLS-1$ new EventCallback() { public void execute(EventObject
+ * e) { itManager.showEventList(); } }, clickListenerConfig);
+ *
+ *
+ * this.getBody().addClassOnOver("panel-over", true);
+ */
+ }
+
+}