Bonjour à tous,

Depuis hier, j'essaie de remplacer le dragIndicator par défaut et, bien, je n'y arrive pas.
Les implémentations données dans la doc jBoss, sur livedemo.exadel ou ailleurs (mais rarissime) ne se ressemblent jamais, du coup je suis un peu paumé.

Pour donner le contexte, j'ai récupéré une page dont les données sont présentées en tableau, chaque rang ayant une priorité et jusqu'ici pour trier ces rangs on passait par des fonctions javascript. J'ai simplifié la chose via le support du drag & drop de RichFaces (on est en 3.3.3) et ça marche bien.
Par contre je trouve le dragIndicator par défaut pas assez visible (pointillé noir qui devient vert quand on peut dropper, le vert se voie peu).

J'essaie donc de redéfinir le style via le code ci-dessous :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
           
<ui:define name="body">     
        <style>
            .default{
                font-size:11px;
                cursor:pointer;
                width:100px;
                border:4px solid gray;
                padding:2px
            }
            .rf-ind-drag.accept{
                border:4px solid green
            }
            .rf-ind-drag.reject{
                border:4px solid red;
            }
        </style>
<rich:dragIndicator id="myIndicator" acceptClass="accept" rejectClass="reject" draggingClass="default">
    <f:facet name="single">ceciestuntest</f:facet>
</rich:dragIndicator>

<rich:dataTable id="table" var="element" value="#{list}" rendered="#{not empty list}" rowKeyVar="row" >            
    <c:forEach items="#{bean.items}" var="item">
        <rich:column>
            <rich:dropSupport acceptedTypes="int" dropListener="#{bean.processDrop}" reRender="table" dropValue="#{row}" />
            <rich:dragSupport dragIndicator="myIndicator" dragType="int" dragValue="#{row}">
                 <rich:dndParam name="test"><h:graphicImage value="/img/test.png" /></rich:dndParam>
            </rich:dragSupport>
            <f:facet name="header" align="center"><h:outputText  value="#{item}" /></f:facet>
            <h:outputText value="#{bean.getColumnValue(element,item)}"/>
        </rich:column>        
    </c:forEach>
</rich:dataTable>         
</ui:define>
Dans le code source de la page générée, je retrouve un div correspondant au dragIndicator :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<div class="drgind_fly drgind_default drag_indicator " id="tableForm:myIndicator" style="display: none; " xmlns:rich="http://richfaces.ajax4jsf.org/rich">
	<script type="text/javascript">
		var elt = $("tableForm:myIndicator");
		elt.markers = {};
		elt.indicatorTemplates = {};
		elt.markers['accept'] = "\x3Cimg alt=\"\" border=\"0\" width=\"16\" height=\"16\" src=\"/uiSti/a4j/g/3_3_3.Finalorg/richfaces/renderkit/html/images/accept.gif\" /\x3E";
		elt.markers['default'] = "\x3Cimg alt=\"\" border=\"0\" width=\"16\" height=\"16\" src=\"/uiSti/a4j/g/3_3_3.Finalorg/richfaces/renderkit/html/images/default.gif\" /\x3E";
		elt.markers['reject'] = "\x3Cimg alt=\"\" border=\"0\" width=\"16\" height=\"16\" src=\"/uiSti/a4j/g/3_3_3.Finalorg/richfaces/renderkit/html/images/reject.gif\" /\x3E";
		elt.indicatorTemplates['single'] = [new T('ceciestuntest')];
		elt.indicatorTemplates['multi'] =  DefaultDragIndicatorView;
		createDragIndicator(elt, 'accept', 'reject');
	</script>
</div>
Et au niveau de mes cellules de tableau, j'ai les scripts de drag&drop qui référencent bien ce dragIndicator :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
<td class="rich-table-cell " id="tableForm:table:0:j_id128">
	<script id="tableForm:table:0:j_id129">
		new DnD.SimpleDropZone('tableForm:table:0:j_id128',{'acceptedTypes':['int'] ,'dndParams':'{}'} ).drop = function(event,drag){var options = {'similarityGroupingId':'tableForm:table:0:j_id129','parameters':{'tableForm:table:0:j_id129':'tableForm:table:0:j_id129'} } ;options.parameters['dropTargetId'] = 'tableForm:table:0:j_id129';Object.extend(options.parameters, drag.getParameters());var dzOptions = this.getDropzoneOptions(); if (dzOptions.ondrop) { if (!dzOptions.ondrop.call(this, event)) return; };A4J.AJAX.Submit('tableForm',event,options);};
	</script>
	<script id="tableForm:table:0:j_id130">
		new DnD.SimpleDraggable('tableForm:table:0:j_id128',{'dragIndicator':'tableForm:myIndicator','dragType':'int','parameters':{'dragSourceId':'tableForm:table:0:j_id130','tableForm:table:0:j_id130':'tableForm:table:0:j_id130'} ,'dndParams':'{\"test\":\"\x3Cimg src=\\\"/uiSti/img/delete.png\\\" /\x3E\"}'} )
	</script>
</td>
Et pourtant, je continue à afficher le style par défaut.

Mes questions sont assez simples :
- Qu'est ce que je rate ?
- Quelle est la syntaxe correcte pour faire marcher le f:facet du dragIndicator avec le rich:dndParam ajouté au rich:dragSupport ?

Merci par avance,

Hugo