--- /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;
+
+import java.util.Set;
+
+
+import com.gwtext.client.util.Format;
+import com.gwtext.client.widgets.BoxComponent;
+import com.gwtext.client.widgets.Component;
+
+import com.gwtext.client.widgets.Panel;
+
+import com.gwtext.client.widgets.event.PanelListenerAdapter;
+import com.gwtext.client.widgets.form.Label;
+import com.gwtext.client.widgets.layout.FitLayout;
+import com.gwtext.client.widgets.layout.RowLayout;
+import com.gwtext.client.widgets.layout.RowLayoutData;
+import com.pentila.evalcomp.client.i18n.Messages;
+import com.pentila.evalcomp.client.message.MessageSmartViewTab;
+
+import com.pentila.evalcomp.client.services.vaepp.EditorGrid;
+import com.pentila.evalcomp.client.services.widget.EvalSubViewWidget;
+import com.pentila.evalcomp.client.services.widget.ExtRessourcesPanel;
+import com.pentila.evalcomp.client.services.widget.PropertyValuePanel;
+import com.pentila.evalcomp.client.services.widget.TransitionPanel;
+import com.pentila.evalcomp.domain.Ressource;
+
+import com.pentila.evalcomp.domain.definition.Property;
+import com.pentila.evalcomp.domain.instance.ScenarioInstance;
+import com.pentila.evalcomp.domain.service.Service;
+import com.pentila.evalcomp.domain.transit.Activity;
+import com.pentila.evalcomp.domain.transit.Todo;
+import com.smartgwt.client.util.SC;
+
+/**
+ * The Class AssociateService.
+ */
+public class AssociateService extends RessourceServiceAbstract implements
+IServiceProvider, IRessourceService {
+
+
+
+ /** The eval sub view. */
+ private EvalSubViewWidget evalSubView = null;
+
+ /** The msg header. */
+ String msgHeader = Messages
+ .getString("vous_pouvez_glisser_deposer_espace_ressource");
+
+ /**
+ * Instantiates a new associate service.
+ */
+ public AssociateService() {
+ super();
+
+ this.setTitle(Messages
+ .getString("Association_des_ressources_aux_competences"));
+ this.setIconCls("iconAssocier32");
+
+ initializeInterface();
+
+ }
+
+ /**
+ * Configure service.
+ *
+ * @param todo
+ * the todo
+ * @param activity
+ * the activity
+ */
+ public void configureService(final Todo todo, Activity activity) {
+ super.configureService(todo, activity);
+ this.todo = todo;
+ Service serv = activity.getExtActivity().getService();
+ ScenarioInstance si = (ScenarioInstance) todo.getScenarioInstanceAbstract();
+
+ clearZones();
+ content = new Panel();
+ content.setBorder(false);
+ content.setLayout(new RowLayout());
+ content.setAutoScroll(true);
+ center.add(content);
+
+ north.add(new Label(Messages.getString(serv.getDescriptioni18n())));
+
+
+ Boolean allow_argumentation = false;
+
+ Property p = todo.getProcess().getPropertyByName("PROPERTY_allow_argumentation");
+ if (p != null && "PROPERTY_allow_argumentation".equals(p.getName())){
+ if(Boolean.parseBoolean(p.getValue())){
+ EditorGrid editorGrid = new EditorGrid(todo, activity, null, true, true);
+
+ Panel p2 = new Panel();
+ p2.setLayout(new FitLayout());
+ p2.setCollapsible(true);
+ p2.setAutoScroll(true);
+ p2.setTitle(Messages.getString("Argumentation"));
+ p2.add(editorGrid);
+
+ content.add(p2, new RowLayoutData("33%"));
+ allow_argumentation = true;
+ }
+ }
+
+ getARW().enable();
+ getARW().setTitle(Messages.getString("Ressources_associees"));
+ Set<Ressource> ressourceSet = si.getEvaluationSubjectInstance().getRessources();
+ getARW().updateRessources(ressourceSet);
+ getARW().setCollapsible(false);
+
+ if(allow_argumentation){
+ east.add(getARW());
+ }else{
+ content.add(getARW(), new RowLayoutData("50%"));
+ }
+
+ if (!si.getEvaluationSubjectInstance().getMessages().isEmpty()) {
+ final Panel panel = new Panel();
+ panel.setLayout(new FitLayout());
+ panel.setCollapsible(true);
+ panel.setAutoScroll(true);
+ panel.setTitle(Messages.getString("discussion_a_propos"));
+ final MessageSmartViewTab mvt = new MessageSmartViewTab();
+ panel.add(mvt);
+
+
+ panel.addListener(new PanelListenerAdapter(){
+ public void onResize(BoxComponent component, int adjWidth,
+ int adjHeight, int rawWidth, int rawHeight) {
+ int containerW = panel.getInnerWidth()-20;
+ int containerH = panel.getInnerHeight()-10;
+ if (mvt.getWidth() != containerW || mvt.getHeight() != containerH ){
+ if (containerW > 0 && containerH > 0){
+ mvt.resizeTo(containerW, containerH );
+ }
+ }
+ }
+
+ public void onDestroy(Component component) {
+ mvt.destroy();
+ }
+
+ });
+
+ content.add(panel, new RowLayoutData("33%"));
+ mvt.initializeViewMsgInterface(si.getEvaluationSubjectInstance()
+ .getMessages().iterator().next());
+ }
+
+
+
+ tpanel = new TransitionPanel(todo, activity, this, false);
+ south.add(tpanel);
+
+ if (getARW().getRessourcesCount() > 0) {
+ tpanel.showButtons();
+ } else {
+ tpanel.hideButtons();
+ }
+ tpanel.showButtons();
+ if (evalSubView != null) {
+ evalSubView.clear();
+ }
+ evalSubView = new EvalSubViewWidget(si.getEvaluationSubjectInstance()
+ .getEvaluationSubject());
+ west.add(evalSubView, new RowLayoutData("50%"));
+
+ west.add(new ExtRessourcesPanel(todo, activity), new RowLayoutData("50%"));
+ west.add(new PropertyValuePanel(todo, activity), new RowLayoutData("50%"));
+
+ finalizeLayout();
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.pentila.evalcomp.client.services.IServiceProvider#doAfterTransit()
+ */
+ public void doAfterTransit() {
+ getARW().disable();
+
+
+ String value= todo.getProcess().getPropertyByName("VARIABLE_isAutoAffected").getValue();
+ if (value.equals("yes")){
+ String message = "";
+ ScenarioInstance si = (ScenarioInstance) todo.getScenarioInstanceAbstract();
+
+
+
+ String folderName = si.getEvaluationSubjectInstance().getName();
+ String evalName = "";
+
+
+ message = Format.format(Messages.getString("sended_folder"), folderName, evalName);
+
+ SC.say(Messages.getString("Information"), message);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.pentila.evalcomp.client.services.IServiceProvider#doBeforeTransit
+ * (java.lang.String, java.lang.String, java.lang.String, java.lang.String)
+ */
+ public void doBeforeTransit(String login, String processID,
+ String activityID, String transID) {
+ tpanel.performActivity(login, processID, activityID, transID);
+ }
+
+ /**
+ * Initialize interface.
+ */
+ private void initializeInterface() {
+ content = new Panel();
+ content.setBorder(false);
+ content.setPaddings(5);
+
+ content.setAutoScroll(true);
+
+ this.setPaddings(5);
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.pentila.evalcomp.client.services.IServiceProvider#update()
+ */
+ public void update() {
+ // TODO Auto-generated method stub
+
+ }
+
+}