--- /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.services.widget;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.gwtext.client.data.FieldDef;
+import com.gwtext.client.data.MemoryProxy;
+import com.gwtext.client.data.ObjectFieldDef;
+import com.gwtext.client.data.Record;
+import com.gwtext.client.data.RecordDef;
+import com.gwtext.client.data.StringFieldDef;
+import com.gwtext.client.util.JavaScriptObjectHelper;
+import com.gwtext.client.widgets.Panel;
+import com.gwtext.client.widgets.form.ComboBox;
+import com.gwtext.client.widgets.form.Field;
+import com.gwtext.client.widgets.form.event.ComboBoxListenerAdapter;
+import com.pentila.evalcomp.client.ConnexionServer;
+import com.pentila.evalcomp.client.i18n.Messages;
+import com.pentila.evalcomp.client.services.IServiceProvider;
+import com.pentila.evalcomp.client.services.vaepp.VAEPPService;
+import com.pentila.evalcomp.client.utilities.MyPagingToolbar;
+import com.pentila.evalcomp.client.utilities.RPCReader;
+import com.pentila.evalcomp.client.utilities.RPCStore;
+import com.pentila.evalcomp.client.utilities.Tools;
+import com.pentila.evalcomp.domain.EObject;
+import com.pentila.evalcomp.domain.Entity;
+import com.pentila.evalcomp.domain.User;
+import com.pentila.evalcomp.domain.transit.TListEObject;
+
+/**
+ * The Class OptSelectionEvalWidget.
+ */
+public class OptSelectionEvalWidget extends Panel {
+
+ /** The cb. */
+ ComboBox cb;
+
+ /** The store. */
+ RPCStore store;
+
+
+ /** The service provider. */
+ private IServiceProvider serviceProvider;
+
+ /** The prd name. */
+ private String prdName;
+
+ /** The page init. */
+ boolean pageInit = false;
+
+ /** The page size. */
+ int pageSize = 50;
+
+ /** The paging toolbar. */
+ MyPagingToolbar pagingToolbar;
+
+ /** The selected. */
+ Record selected;
+
+ /**
+ * Instantiates a new opt selection eval widget.
+ *
+ * @param serviceProvider the service provider
+ * @param prdName the prd name
+ */
+ public OptSelectionEvalWidget(IServiceProvider serviceProvider,
+ String prdName) {
+ super();
+ this.prdName = prdName;
+ this.serviceProvider = serviceProvider;
+
+
+ cb = new ComboBox();
+ JavaScriptObjectHelper.setAttribute(cb.getConfig(), "lazyInit", false);
+ initializeInterface();
+ }
+
+ /**
+ * Initialize interface.
+ */
+ private void initializeInterface() {
+
+ this.setBorder(false);
+ this.setWidth(320);
+ Object[][] objList = new Object[][] {};
+
+ RecordDef rdef = new RecordDef(new FieldDef[] {
+
+ new StringFieldDef("userName"), new ObjectFieldDef("userObject") });
+
+ MemoryProxy mp = new MemoryProxy(objList);
+ RPCReader reader = new RPCReader(rdef);
+ store = new RPCStore(mp, reader, true) {
+
+ @Override
+ public void update(int start, int limit) {
+
+ updateUsers(start, limit, cb.getText());
+ }
+
+ };
+ reader.setStore(store);
+
+ store.sort("userName");
+
+ cb.setMinChars(1);
+
+ cb.setFieldLabel(Messages.getString("Votre_choix"));
+ cb.setStore(store);
+ cb.setDisplayField("userName");
+
+ cb.setMode(ComboBox.REMOTE);
+
+ cb.setTriggerAction(ComboBox.ALL);
+ cb.setEmptyText(Messages.getString("prevenir_service_entrer_nom"));
+ cb.setLoadingText(Messages.getString("prevenir_service_recherche"));
+
+ cb.setSelectOnFocus(true);
+ cb.setWidth(320);
+
+ add(cb);
+
+ cb.addListener(new ComboBoxListenerAdapter() {
+
+ public void onValid(Field field) {
+ try{
+ if(selected != null && !((User) selected.getAsObject("userObject")).getUid().equals("") && selected.getAsString("userName").equals(field.getValueAsString())){
+ if (serviceProvider instanceof VAEPPService) {
+ ((VAEPPService)serviceProvider).setEvalSelected(true);
+ }
+ else {
+ serviceProvider.getTransitionPanel().showButtons();
+ }
+ }else{
+ selected = null;
+
+ if (serviceProvider instanceof VAEPPService) {
+ ((VAEPPService)serviceProvider).setEvalSelected(false);
+ }
+ else {
+ serviceProvider.getTransitionPanel().hideButtons();
+ }
+
+ }
+
+ }catch (Exception e){
+ if (serviceProvider instanceof VAEPPService) {
+ ((VAEPPService)serviceProvider).setEvalSelected(false);
+ }
+ else {
+ serviceProvider.getTransitionPanel().hideButtons();
+ }
+ }
+
+ updateUsers(0, pageSize, cb.getText());
+ }
+
+ public void onFocus(Field field) {
+
+ if (!pageInit) {
+
+ pagingToolbar = new MyPagingToolbar(store);
+ pagingToolbar.initialize();
+ pagingToolbar.setPageSize(pageSize);
+ pagingToolbar.setDisplayInfo(true);
+ pagingToolbar.setDisplayMsg("{0} - {1} sur {2}");
+ pagingToolbar.setEmptyMsg("Aucun");
+ initPagingToolbar(cb, pagingToolbar);
+
+ pageInit = true;
+ store.update(0, pageSize);
+ }
+ }
+
+ @Override
+ public void onSelect(ComboBox comboBox, Record record, int index) {
+ try {
+ selected = record;
+ if (!((User)selected.getAsObject("userObject"))
+ .getUid().equals("")) {
+
+ if (serviceProvider instanceof VAEPPService) {
+ ((VAEPPService)serviceProvider).setEvalSelected(true);
+ }
+ else {
+ serviceProvider.getTransitionPanel().showButtons();
+ }
+
+ } else {
+ selected = null;
+
+ if (serviceProvider instanceof VAEPPService) {
+ ((VAEPPService)serviceProvider).setEvalSelected(false);
+ }
+ else {
+ serviceProvider.getTransitionPanel().hideButtons();
+ }
+ }
+ } catch (Exception ex) {
+ selected = null;
+ if (serviceProvider instanceof VAEPPService) {
+ ((VAEPPService)serviceProvider).setEvalSelected(false);
+ }
+ else {
+ serviceProvider.getTransitionPanel().hideButtons();
+ }
+ }
+ }
+
+ });
+
+ }
+
+ /**
+ * Gets the selected users.
+ *
+ * @return the selected users
+ */
+ public Map<String, Set<Entity>> getSelectedUsers() {
+ Map<String, Set<Entity>> se = new HashMap<String, Set<Entity>>();
+ if (selected != null && !((User)selected.getAsObject("userObject")) //$NON-NLS-1$
+ .getUid().equals("")){
+
+ Set<Entity> ss = new HashSet<Entity>();
+
+ ss.add((Entity) selected.getAsObject("userObject"));
+ se.put(prdName, ss);
+
+ }
+ return se;
+
+ }
+
+ /**
+ * Update users.
+ *
+ * @param start the start
+ * @param limit the limit
+ * @param searchTerm the search term
+ */
+ public void updateUsers(final int start, final int limit, String searchTerm) {
+ AsyncCallback callback = new AsyncCallback() {
+ public void onFailure(Throwable caught) {
+ System.out
+ .println("problem dans la recup des messages non lus"); //$NON-NLS-1$
+ Tools.hideLoadingRegion(getId());
+ }
+
+ public void onSuccess(Object result) {
+
+ TListEObject tlm = (TListEObject) result;
+
+ List<EObject> userList = tlm.getListOfEObjects();
+ int total = tlm.getTotal();
+
+ if (userList != null) {
+
+ store.initData(limit, total);
+
+ for (int i = 0; i < userList.size(); i++) {
+ User u = (User) userList.get(i);
+ Object[] monObjet = new Object[] {
+ u.getLastname() + " " + u.getFirstname(), u };
+
+ store.addObject(monObjet);
+ }
+
+ store.finish();
+
+ store.load(start, limit, true);
+
+
+
+ }
+ Tools.hideLoadingRegion(getId());
+ }
+ };
+
+ Tools.showLoadingRegion(getId(), Messages.getString("MAJ"), Messages
+ .getString("Chargement"));
+ ConnexionServer.definitionService.getUsersOfProcessRoleDefinition(
+ serviceProvider.getTodo().getScenarioInstanceAbstract().getId(),
+ prdName, start, limit, searchTerm, callback);
+ }
+
+ /**
+ * Inits the paging toolbar.
+ *
+ * @param cb the cb
+ * @param mp the mp
+ */
+ public native void initPagingToolbar(ComboBox cb, MyPagingToolbar mp)/*-{
+ var cls = 'x-combo-list';
+ var combobox = cb.@com.gwtext.client.widgets.Component::getOrCreateJsObj()();
+ combobox.footer = combobox.list.createChild({cls:cls+'-ft'});
+ combobox.pageTb = mp.@com.gwtext.client.widgets.Component::getOrCreateJsObj()();
+ combobox.pageTb.render(combobox.footer);
+ combobox.assetHeight += combobox.footer.getHeight();
+
+ }-*/;
+
+
+
+
+}