--- /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.widget;
+
+import java.util.Set;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.dom.client.IFrameElement;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwt.user.client.ui.Frame;
+import com.gwtext.client.core.EventObject;
+import com.gwtext.client.data.FieldDef;
+import com.gwtext.client.data.Record;
+import com.gwtext.client.data.SimpleStore;
+import com.gwtext.client.data.StringFieldDef;
+import com.gwtext.client.widgets.Button;
+import com.gwtext.client.widgets.MessageBox;
+import com.gwtext.client.widgets.Panel;
+import com.gwtext.client.widgets.Toolbar;
+import com.gwtext.client.widgets.ToolbarButton;
+import com.gwtext.client.widgets.event.ButtonListenerAdapter;
+import com.gwtext.client.widgets.layout.FitLayout;
+import com.gwtext.client.widgets.menu.BaseItem;
+import com.gwtext.client.widgets.menu.Item;
+import com.gwtext.client.widgets.menu.Menu;
+import com.gwtext.client.widgets.menu.event.BaseItemListenerAdapter;
+import com.pentila.evalcomp.client.ConnexionServer;
+import com.pentila.evalcomp.client.i18n.Messages;
+import com.pentila.evalcomp.client.utilities.Tools;
+import com.pentila.evalcomp.client.utilities.UserTools;
+import com.pentila.evalcomp.domain.Entity;
+import com.pentila.evalcomp.domain.Role;
+import com.pentila.evalcomp.domain.User;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class InfoZoneWidget.
+ */
+public class InfoZoneWidget extends Panel {
+
+ /**
+ * Instantiates a new info zone widget.
+ */
+ public InfoZoneWidget() {
+
+ super();
+
+ this.setBorder(false);
+ this.setHeight("25px");
+
+ Toolbar toolbar = new Toolbar();
+ toolbar.setAutoWidth(true);
+
+
+ Menu userMenu = new Menu();
+ userMenu.setShadow(true);
+ userMenu.setMinWidth(100);
+
+ final ToolbarButton userButton = new ToolbarButton();
+ final User userTmp = UserTools.getUser();
+ userButton.setText((userTmp.getFirstname() + " " //$NON-NLS-1$
+ + userTmp.getLastname()));
+
+ userButton.setMenu(userMenu);
+
+ String userStyleTmp = "label-user";
+ if (Tools.interfaceShown == Tools.EVAL_PEDA_INTERFACE) {
+ userStyleTmp = "label-gestionnaire";
+ }
+ userButton.setIconCls(userStyleTmp);
+ toolbar.addButton(userButton);
+ toolbar.addSeparator();
+
+ final String userStyle = userStyleTmp;
+
+ ToolbarButton roleButton = new ToolbarButton();
+
+ Menu roleMenu = new Menu();
+
+ Set<Role> roleSet = null;
+ try {
+ roleSet = userTmp.getRoles();
+
+ } catch (Exception ex) {
+ roleSet = null;
+ }
+
+ if (roleSet != null) {
+ if (roleSet.size() > 0) {
+ int roleCount = 1;
+
+ for (int i = 0; i < roleSet.size(); i++) {
+ Role r = (Role) roleSet.toArray()[i];
+
+ if (r.getName().equals(Tools.ROLE_GEST_INST)
+ && !Tools.IS_INST) {
+ Tools.IS_INST = true;
+ roleCount += 1;
+ }
+ if (r.getName().equals(Tools.ROLE_GEST_TECH)
+ && !Tools.IS_TECH) {
+ Tools.IS_TECH = true;
+ roleCount += 1;
+ }
+ if (r.getName().equals(Tools.ROLE_GEST_PEDA)
+ && !Tools.IS_PEDA) {
+ Tools.IS_PEDA = true;
+ roleCount += 1;
+ }
+ }
+
+ int placeCount = 0;
+ Object[][] objList = new Object[roleCount][];
+
+ Object[] monObjetPart = new Object[] {
+ Messages.getString("Participant"), //$NON-NLS-1$
+ GWT.getHostPageBaseURL() + "EvalComp.jsp" }; //$NON-NLS-1$
+ objList[placeCount++] = monObjetPart;
+
+
+ if (Tools.IS_INST) {
+ Object[] monObjet = new Object[] {
+ Messages.getString("Gestionnaire_institutionnel"), //$NON-NLS-1$
+ GWT.getHostPageBaseURL() + "EvalCompInst.jsp" }; //$NON-NLS-1$
+ objList[placeCount++] = monObjet;
+
+ }
+
+ if (Tools.IS_TECH) {
+ Object[] monObjet = new Object[] {
+ Messages.getString("Gestionnaire_technique"), //$NON-NLS-1$
+ GWT.getHostPageBaseURL() + "EvalCompTech.jsp" }; //$NON-NLS-1$
+ objList[placeCount++] = monObjet;
+ }
+
+ if (Tools.IS_PEDA) {
+ Object[] monObjet = new Object[] {
+ Messages.getString("Gestionnaire_pedagogique"), //$NON-NLS-1$
+ GWT.getHostPageBaseURL() + "EvalCompPeda.jsp" }; //$NON-NLS-1$
+ objList[placeCount++] = monObjet;
+ }
+
+ SimpleStore storeRoles = new SimpleStore(0, new FieldDef[] {
+ new StringFieldDef("labelRole"), //$NON-NLS-1$
+ new StringFieldDef("urlRole") }, objList); //$NON-NLS-1$
+ storeRoles.load();
+ storeRoles.sort("labelRole"); //$NON-NLS-1$
+
+ for (final Record r : storeRoles.getRecords()){
+
+ Item it = new Item();
+ it.setText(r.getAsString("labelRole"));
+ it.addListener(new BaseItemListenerAdapter(){
+
+ public void onClick(BaseItem item, EventObject e) {
+
+ Tools.redirect(r.getAsString("urlRole"));
+
+ }
+
+
+ });
+
+ roleMenu.addItem(it);
+
+ }
+
+
+ if (Tools.interfaceShown == Tools.EVAL_PEDA_INTERFACE) {
+ roleButton.setText(Messages
+ .getString("Gestionnaire_pedagogique")); //$NON-NLS-1$
+ }
+ if (Tools.interfaceShown == Tools.EVAL_INST_INTERFACE) {
+ roleButton.setText(Messages
+ .getString("Gestionnaire_institutionnel")); //$NON-NLS-1$
+ }
+ if (Tools.interfaceShown == Tools.EVAL_TECH_INTERFACE) {
+ roleButton.setText(Messages
+ .getString("Gestionnaire_technique")); //$NON-NLS-1$
+ }
+ if (Tools.interfaceShown == Tools.USER_INTERFACE || Tools.interfaceShown == 0) {
+ roleButton.setText(Messages.getString("Participant")); //$NON-NLS-1$
+ }
+
+ roleButton.setMenu(roleMenu);
+
+ toolbar.addButton(roleButton);
+ toolbar.addSeparator();
+
+ } else {
+
+ }
+
+ }
+
+
+ final Item test = new Item();
+
+ String text = "";
+ if (userTmp.getStatus() != Entity.VALID) {
+ text = Messages.getString("Me_rendre_de_nouveau_disponible");
+ userButton.setIconCls("label-nouser");
+ test.setIconCls("label-user");
+ } else {
+ text = Messages.getString("Me_rendre_indisponible");
+ userButton.setIconCls(userStyle);
+ test.setIconCls("label-nouser");
+ }
+
+ test.setText(text);
+ test.addListener(new BaseItemListenerAdapter() {
+ @Override
+ public void onClick(final BaseItem item, EventObject e) {
+
+ if (userTmp.getStatus() == Entity.VALID) {
+
+ MessageBox
+ .confirm(
+ Messages
+ .getString("confirm_indisponibilite"),
+ Messages
+ .getString("Etes_vous_sure_de_vouloir_vous_rendre_indisponible"),
+ new MessageBox.ConfirmCallback() {
+ public void execute(String btnID) {
+ if (btnID.equals("yes")) {
+ userTmp
+ .setStatus(Entity.NOTHERE);
+
+ userButton.setIconCls("label-nouser");
+ userButton
+ .setTitle(Messages
+ .getString("Vous_etes_actuellement_indisponible"));
+
+ ((Item)item).setText(Messages.getString("Me_rendre_de_nouveau_disponible"));
+ ((Item)item).setIconCls("label-user");
+ editUser(userTmp);
+
+
+ }
+ }
+ });
+
+ } else {
+ userTmp.setStatus(Entity.VALID);
+
+ userButton.setIconCls(userStyle);
+ userButton.setTitle("");
+ ((Item)item).setText(Messages.getString("Me_rendre_indisponible"));
+ ((Item)item).setIconCls("label-nouser");
+
+ editUser(userTmp);
+
+ }
+
+ }
+ });
+ userMenu.addItem(test);
+
+ final Item preferences = new Item();
+ preferences.setText(Messages.getString("preferences"));
+
+ preferences.addListener(new BaseItemListenerAdapter(){
+ public void onClick(final BaseItem item, EventObject e) {
+ ExtWindow window = new ExtWindow();
+ window.setTitle(Messages.getString("preferences"));
+ window.setSize(700, 330);
+ window.setModal(true);
+ window.setLayout(new FitLayout());
+ window.setClosable(true);
+ window.setDraggable(false);
+ Frame pref = new Frame(GWT.getHostPageBaseURL() + "Preferences.jsp");
+ IFrameElement.as(pref.getElement()).setFrameBorder(0);
+ Panel p = new Panel();
+ p.setLayout(new FitLayout());
+ p.add(pref);
+
+ window.add(p);
+
+ window.show();
+ }
+ });
+
+ userMenu.addItem(preferences);
+
+ ToolbarButton helpButton = new ToolbarButton();
+ helpButton.setIcon(Tools.getBaseURL() + "images/help18x18.png");
+ //helpButton.setCls("image-button");
+ helpButton.setTooltip(Messages.getString("Aide"));
+ helpButton.addListener(new ButtonListenerAdapter(){
+
+ public void onClick(Button button, EventObject e) {
+
+ String helpURL = "";
+ switch (Tools.interfaceShown) {
+ case Tools.USER_INTERFACE:
+ helpURL = Tools.getBaseURL() + "docs/EMa-guide-P.pdf";
+ break;
+ case Tools.EVAL_INST_INTERFACE:
+ helpURL = Tools.getBaseURL() + "docs/EMa-guide-GI.pdf";
+ break;
+ case Tools.EVAL_PEDA_INTERFACE:
+ helpURL = Tools.getBaseURL() + "docs/EMa-guide-GP.pdf";
+ break;
+ case Tools.EVAL_TECH_INTERFACE:
+ helpURL = Tools.getBaseURL() + "docs/EMa-guide-GT.pdf";
+ break;
+ default:
+ helpURL = Tools.getBaseURL() + "docs/EMa-guide-P.pdf";
+ break;
+ }
+ Tools.openWindow(helpURL, Messages
+ .getString("Aide_utilisateur"));
+
+ }
+
+ });
+
+
+ toolbar.addButton(helpButton);
+ toolbar.addSeparator();
+
+ ToolbarButton logoutButton = new ToolbarButton();
+ logoutButton.setIcon(Tools.getBaseURL() + "images/logout18x18.png");
+
+ logoutButton.setTooltip(Messages.getString("Deconnexion"));
+ logoutButton.addListener(new ButtonListenerAdapter(){
+
+ public void onClick(Button button, EventObject e) {
+ Tools.redirect(Tools.getLogoutURL());
+
+ }
+
+ });
+
+
+
+
+
+
+ toolbar.addButton(logoutButton);
+ add(toolbar);
+ }
+
+ /**
+ * Edits the user.
+ *
+ * @param userTmp
+ * the user tmp
+ */
+ protected void editUser(User userTmp) {
+ AsyncCallback callback = new AsyncCallback() {
+
+ public void onFailure(Throwable arg0) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void onSuccess(Object arg0) {
+ // TODO Auto-generated method stub
+
+ }
+
+ };
+
+ ConnexionServer.entityService.editEntity(userTmp, callback);
+
+ }
+
+}