1
1
package at .gmi .nordborglab .widgets .gwasgeneviewer .client ;
2
2
3
3
import java .util .ArrayList ;
4
+ import java .util .HashMap ;
4
5
import java .util .List ;
6
+ import java .util .Map ;
5
7
6
8
import org .danvk .dygraphs .client .DygraphOptions ;
7
9
import org .danvk .dygraphs .client .Dygraphs ;
29
31
import com .google .gwt .core .client .JsArrayMixed ;
30
32
import com .google .gwt .core .client .Scheduler ;
31
33
import com .google .gwt .core .client .Scheduler .ScheduledCommand ;
34
+ import com .google .gwt .dom .client .DivElement ;
35
+ import com .google .gwt .dom .client .Document ;
32
36
import com .google .gwt .dom .client .Style .Unit ;
33
37
import com .google .gwt .uibinder .client .UiBinder ;
38
+ import com .google .gwt .user .client .DOM ;
34
39
import com .google .gwt .user .client .Window ;
35
40
import com .google .gwt .user .client .ui .Composite ;
36
41
import com .google .gwt .user .client .ui .HTMLPanel ;
@@ -91,7 +96,7 @@ public void execute() {
91
96
protected DataSource datasource = null ;
92
97
protected int viewStart = 0 ;
93
98
protected int viewEnd = 0 ;
94
- protected ArrayList <Gene > displayGenes = new ArrayList <Gene >();
99
+ protected HashMap <Gene , DivElement > displayGenes = new HashMap <Gene , DivElement >();
95
100
96
101
97
102
@@ -133,12 +138,21 @@ public String getChromosome() {
133
138
134
139
public void addDisplayGene (Gene gene )
135
140
{
136
- if (gene .getChromosome ().equals (this .chromosome ))
137
- displayGenes .add (gene );
141
+ if (gene .getChromosome ().equals (this .chromosome )) {
142
+ if (!displayGenes .containsKey (gene )) {
143
+ DivElement elem = DOM .createDiv ().cast ();
144
+ elem .setInnerHTML (gene .getName ());
145
+ elem .setId (gene .getName ()+"_label" );
146
+ displayGenes .put (gene ,elem );
147
+ }
148
+ }
138
149
}
139
150
140
151
public void clearDisplayGenes ()
141
152
{
153
+ for (DivElement elem : displayGenes .values ()) {
154
+ scatterChart .getElement ().removeChild (elem );
155
+ }
142
156
displayGenes .clear ();
143
157
}
144
158
@@ -266,7 +280,9 @@ public void onUnderlay(UnderlayEvent event) {
266
280
267
281
Canvas ctx = event .canvas ;
268
282
DygraphsJS dygraphjs = event .dygraph ;
269
- for (Gene gene :displayGenes ) {
283
+ for (Map .Entry <Gene , DivElement > entry : displayGenes .entrySet ()) {
284
+ Gene gene = entry .getKey ();
285
+ DivElement geneLabel = entry .getValue ();
270
286
if (gene .getChromosome ().equals (chromosome ) && (gene .getStart () >= viewStart || gene .getEnd () <= viewEnd ))
271
287
{
272
288
double left = dygraphjs .toDomXCoord (gene .getStart ());
@@ -282,6 +298,14 @@ public void onUnderlay(UnderlayEvent event) {
282
298
ctx .setStrokeStyle ("#000000" );
283
299
ctx .fillRect (left , event .area .getY (), length , event .area .getH ());
284
300
ctx .restore ();
301
+ String color =gene_marker_color ;
302
+ double x = Math .round (left )+3 ;
303
+ if (x +60 > scatterChart .getOffsetWidth ())
304
+ x = x - 60 ;
305
+ int y = scatterChart .getAbsoluteTop () - scatterChart .getOffsetHeight () + 8 ;
306
+ geneLabel .setAttribute ("style" , "position: absolute; font-size: 11px; z-index: 10; color: " +color +"; line-height: normal; overflow-x: hidden; overflow-y: hidden; top: " +y +"px; left: " +x +"px; text-align: right;" );
307
+ if (DOM .getElementById (geneLabel .getId ()) == null )
308
+ scatterChart .getElement ().appendChild (geneLabel );
285
309
}
286
310
}
287
311
0 commit comments