--- /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.HashSet;
+import java.util.Set;
+
+import com.gwtext.client.core.EventObject;
+import com.gwtext.client.core.SortDir;
+import com.gwtext.client.data.Record;
+import com.gwtext.client.data.SimpleStore;
+import com.gwtext.client.data.SortState;
+import com.gwtext.client.data.Store;
+import com.gwtext.client.widgets.Panel;
+import com.gwtext.client.widgets.grid.CellMetadata;
+import com.gwtext.client.widgets.grid.ColumnConfig;
+import com.gwtext.client.widgets.grid.ColumnModel;
+import com.gwtext.client.widgets.grid.GridPanel;
+import com.gwtext.client.widgets.grid.Renderer;
+import com.gwtext.client.widgets.grid.event.GridRowListenerAdapter;
+import com.gwtext.client.widgets.layout.FitLayout;
+import com.pentila.evalcomp.client.i18n.Messages;
+import com.pentila.evalcomp.client.utilities.Tools;
+import com.pentila.evalcomp.domain.IRessourceItem;
+import com.pentila.evalcomp.domain.Ressource;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class ExtRessourcesPanel. a widget that show the ressources of an
+ * evaluation subject inside an activity
+ */
+public class RessourcesPanel extends Panel {
+
+ /** The content. */
+ private GridPanel content;
+
+ /** Instantiates a new ExtRessourcesPanel. */
+
+
+ private Renderer renderFile = new Renderer() {
+ public String render(Object value, CellMetadata cellMetadata,
+ Record record, int rowIndex, int colNum, Store store) {
+
+ cellMetadata.setCssClass( record.getAsString("type"));
+ return " "+record.getAsString("name");
+ }
+ };
+
+ /**
+ * Instantiates a new ressources panel.
+ *
+ * @param set the set
+ */
+ public RessourcesPanel(Set<Ressource> set) {
+ super();
+
+ this.setTitle(Messages.getString("Ressources_associees")); //$NON-NLS-1$
+ this.setCollapsible(false);
+ //this.setAutoHeight(true);
+ this.setLayout(new FitLayout());
+ initializeInterface(set);
+ }
+
+ /**
+ * Initialize interface.
+ *
+ * @param sir
+ * the sir
+ */
+ private void initializeInterface(Set<Ressource> sir) {
+
+ content = new GridPanel();
+
+
+ Set<String[]> so = new HashSet<String[]>();
+
+ for (final IRessourceItem ressource : sir) {
+
+ String name =ressource.getName();
+
+ String path = Tools.encodePath(ressource.getPath());
+
+ String url = Tools.getRessourceAccessURL() + "?pluginKey="
+ + ressource.getPluginKey() + "&ressourceKey="
+ + path + "&mode=" + "";
+
+
+ // on met le style qui va bien en fct du type de la ressource
+ String type = "label-" + ressource.getType();
+ so.add(new String[]{ name, type, url});
+ }
+
+
+ String[][] datas = new String[so.size()][];
+
+ int i = 0;
+ for (String[] a : so){
+ datas[i++] = a;
+ }
+
+ ColumnConfig cc = new ColumnConfig(Messages
+ .getString("Ressources"), "name");
+ cc.setSortable(true);
+ cc.setRenderer(renderFile);
+
+ ColumnConfig[] cca= new ColumnConfig[]{
+ cc
+ };
+ ColumnModel cm = new ColumnModel(cca);
+
+ content.setColumnModel(cm);
+
+
+ Store store = new SimpleStore(new String[]{"name", "type", "url"}, datas);
+
+ store.load();
+ content.setStore(store);
+ content.getView().setAutoFill(true);
+ content.getView().setForceFit(true);
+
+ content.getStore().setSortInfo(new SortState("name", SortDir.ASC));
+
+ content.addGridRowListener(new GridRowListenerAdapter(){
+
+
+
+ public void onRowDblClick(GridPanel grid, int rowIndex,
+ EventObject e) {
+ Record r = grid.getStore().getRecordAt(rowIndex);
+
+ Tools.displayRessourceUrl(r.getAsString("url"), "", r.getAsString("name"), "");
+
+ }
+
+
+
+ });
+
+ this.add(content);
+ }
+
+}