Skip to content

Commit 3ed1864

Browse files
committed
Some small bugfixes
1 parent 1f95adb commit 3ed1864

File tree

4 files changed

+99
-86
lines changed

4 files changed

+99
-86
lines changed

geneviewer-sample/src/main/java/sample/client/SampleEntryPoint.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ public interface DataBundle extends ClientBundle {
7070
RadioButton genesWithFeaturesRd = new RadioButton("type","Genes with features");
7171
int[] geneRegion = new int[]{9778876,10633663};
7272
int[] geneWithFeaturesRegion = new int[]{10355429,10432933};
73+
boolean isFeatures = false;
7374

7475
@Override
7576
public void onModuleLoad() {
@@ -130,11 +131,11 @@ public void onValueChange(ValueChangeEvent<Boolean> event) {
130131
panel.setWidgetTopHeight(geneviewer,250, Style.Unit.PX,200, Style.Unit.PX);
131132
panel.setWidgetTopBottom(eventsPanel, 450, Style.Unit.PX, 0, Style.Unit.PX);
132133
RootLayoutPanel.get().add(panel);
134+
sinkEvents();
133135
try {
134136
geneviewer.load(new Runnable() {
135137
@Override
136138
public void run() {
137-
sinkEvents();
138139
changeType(false);
139140
}
140141
});
@@ -174,6 +175,8 @@ public void onMoveMove(MouseMoveEvent event) {
174175
@Override
175176
public void onFetchGenes(FetchGeneEvent event) {
176177
logEvent("FetchGeneEvent called: start: " + event.getStart() + ", end:" + event.getEnd());
178+
JsArrayMixed data = getData(isFeatures);
179+
geneviewer.setGeneData(data);
177180
}
178181
});
179182

@@ -191,7 +194,7 @@ private String getMessageFromGene(Gene gene) {
191194
}
192195

193196
private void changeType(boolean isFeatures)
194-
{
197+
{ this.isFeatures = isFeatures;
195198
JsArrayMixed data = getData(isFeatures);
196199
int[] region = isFeatures ? geneWithFeaturesRegion : geneRegion;
197200
zoomLabel.setHTML("<b>"+region[0] + "</b> - <b>" + region[1]+"</b>");

geneviewer/src/main/java/com/github/timeu/gwtlibs/geneviewer/client/GeneViewer.java

+56-66
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ public void load(final Runnable onLoad) throws ResourceException {
102102
public void run() {
103103
if (!processing.isLoaded())
104104
return;
105+
sinkEvents();
105106
processing.getInstance().api_setSize(width, height);
106107
processing.getInstance().api_setViewRegion(viewStart, viewEnd);
107108
processing.getInstance().api_setChromosome(chromosome);
@@ -178,67 +179,56 @@ public boolean shouldDrawFeatures() {
178179
return !(maximumZoom != -1 && maximumZoom <= currentZoom);
179180
}
180181

181-
protected final void sinkEvents(Event.Type<?> type,EventHandler handler) {
182-
String callback = "";
183-
EventCallback eventCallback = null;
184-
if (type == MouseMoveEvent.getType()) {
185-
eventCallback = new EventCallback<GeneViewerMouseMoveData>() {
186-
@Override
187-
public void onCall(GeneViewerMouseMoveData data) {
188-
fireEvent(new MouseMoveEvent(data));
189-
}
190-
};
191-
callback = "mouseMoveEvent";
192-
}
193-
else if (type == ZoomResizeEvent.getType()) {
194-
eventCallback = new EventCallback<Region>() {
195-
@Override
196-
public void onCall(Region data) {
197-
fireEvent(new ZoomResizeEvent(data.start,data.end));
198-
}
199-
};
200-
callback = "zoomResizeEvent";
201-
}
202-
else if (type == FetchGeneEvent.getType()) {
203-
eventCallback = new EventCallback<Region>() {
204-
@Override
205-
public void onCall(Region data) {
206-
fireEvent(new FetchGeneEvent(data.start,data.end));
207-
}
208-
};
209-
callback = "fetchGeneEvent";
210-
}
211-
else if (type == HighlightGeneEvent.getType()) {
212-
eventCallback = new EventCallback<GeneHighlightData>() {
213-
@Override
214-
public void onCall(GeneHighlightData data) {
215-
fireEvent(new HighlightGeneEvent(data.gene,data.x,data.y));
216-
showGeneInfoPopup(data);
217-
}
218-
};
219-
callback = "highlightGeneEvent";
220-
}
221-
else if (type == UnhighlightGeneEvent.getType()) {
222-
eventCallback = new EventCallback<Void>() {
223-
@Override
224-
public void onCall(Void data) {
225-
fireEvent(new UnhighlightGeneEvent());
226-
if (showGeneInfoPopup) {
227-
geneInfoPopup.hide();
228-
}
229-
}
230-
};
231-
callback = "unhighlightGeneEvent";
232-
}
233-
else if (type == ClickGeneEvent.getType()) {
234-
eventCallback = new EventCallback<Gene>() {
235-
@Override
236-
public void onCall(Gene data) {
237-
fireEvent(new ClickGeneEvent(data));
182+
private final void sinkEvents() {
183+
sinkEvent(new EventCallback<GeneViewerMouseMoveData>() {
184+
@Override
185+
public void onCall(GeneViewerMouseMoveData data) {
186+
fireEvent(new MouseMoveEvent(data));
187+
}
188+
},"mouseMoveEvent");
189+
190+
191+
sinkEvent(new EventCallback<Region>() {
192+
@Override
193+
public void onCall(Region data) {
194+
fireEvent(new ZoomResizeEvent(data.start,data.end));
195+
}
196+
},"zoomResizeEvent");
197+
198+
sinkEvent(new EventCallback<Region>() {
199+
@Override
200+
public void onCall(Region data) {
201+
fireEvent(new FetchGeneEvent(data.start,data.end));
202+
}
203+
},"fetchGeneEvent");
204+
205+
sinkEvent(new EventCallback<GeneHighlightData>() {
206+
@Override
207+
public void onCall(GeneHighlightData data) {
208+
fireEvent(new HighlightGeneEvent(data.gene,data.x,data.y));
209+
showGeneInfoPopup(data);
210+
}
211+
},"highlightGeneEvent");
212+
213+
sinkEvent(new EventCallback<Void>() {
214+
@Override
215+
public void onCall(Void data) {
216+
fireEvent(new UnhighlightGeneEvent());
217+
if (showGeneInfoPopup) {
218+
geneInfoPopup.hide();
238219
}
239-
};
240-
callback = "clickGeneEvent";
241-
}
220+
}
221+
},"unhighlightGeneEvent");
222+
223+
sinkEvent(new EventCallback<Gene>() {
224+
@Override
225+
public void onCall(Gene data) {
226+
fireEvent(new ClickGeneEvent(data));
227+
}
228+
},"clickGeneEvent");
229+
}
230+
231+
private final void sinkEvent(EventCallback eventCallback,String callback) {
242232
processing.getInstance().api_addEventHandler(callback, eventCallback);
243233
}
244234

@@ -260,43 +250,37 @@ private void showGeneInfoPopup(GeneHighlightData data) {
260250

261251
@Override
262252
public HandlerRegistration addMouseMoveHandler(MouseMoveEvent.Handler handler) {
263-
sinkEvents(MouseMoveEvent.getType(), handler);
264253
return addHandler(handler,MouseMoveEvent.getType());
265254

266255
}
267256

268257
@Override
269258
public HandlerRegistration addZoomResizeHandler(ZoomResizeEvent.Handler handler) {
270-
sinkEvents(ZoomResizeEvent.getType(), handler);
271259
return addHandler(handler,ZoomResizeEvent.getType());
272260
}
273261

274262
@Override
275263
public HandlerRegistration addFetchGeneHandler(FetchGeneEvent.Handler handler) {
276-
sinkEvents(FetchGeneEvent.getType(), handler);
277264
return addHandler(handler,FetchGeneEvent.getType());
278265
}
279266

280267

281268
@Override
282269
public HandlerRegistration addUnhighlightGeneHandlers(
283270
UnhighlightGeneEvent.Handler handler) {
284-
sinkEvents(UnhighlightGeneEvent.getType(), handler);
285271
return addHandler(handler, UnhighlightGeneEvent.getType());
286272
}
287273

288274

289275

290276
@Override
291277
public HandlerRegistration addClickGeneHandler(ClickGeneEvent.Handler handler) {
292-
sinkEvents(ClickGeneEvent.getType(), handler);
293278
return addHandler(handler, ClickGeneEvent.getType());
294279
}
295280

296281
@Override
297282
public HandlerRegistration addHighlightGeneHandler(
298283
HighlightGeneEvent.Handler handler) {
299-
sinkEvents(HighlightGeneEvent.getType(), handler);
300284
return addHandler(handler, HighlightGeneEvent.getType());
301285
}
302286

@@ -315,6 +299,12 @@ public void onAttach() {
315299
onResize();
316300
}
317301

302+
@Override
303+
protected void onDetach() {
304+
geneInfoPopup.hide();
305+
super.onDetach();
306+
}
307+
318308
public void forceLayout() {
319309
if (!isAttached() || !isVisible())
320310
return;

geneviewer/src/main/resources/com/github/timeu/gwtlibs/geneviewer/client/resources/GeneViewer.pde

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ void draw()
2121
{
2222
background(255)
2323
background(0,0,0,0);
24-
browser.render();
24+
browser.render();
2525
}
2626

2727

geneviewer/src/test/java/com/github/timeu/gwtlibs/geneviewer/client/GeneViewerTest.java

+37-17
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import org.mockito.ArgumentCaptor;
2323
import org.mockito.Matchers;
2424
import org.mockito.Mock;
25+
import org.mockito.invocation.InvocationOnMock;
26+
import org.mockito.stubbing.Answer;
2527

2628
import static org.junit.Assert.assertArrayEquals;
2729
import static org.junit.Assert.assertEquals;
@@ -63,23 +65,7 @@ public void setUp() {
6365
geneViewer = new GeneViewer(processing,scheduler);
6466
}
6567

66-
@Test
67-
public void testLoadAndCallOnLoad() throws ResourceException {
68-
Runnable onLoad = mock(Runnable.class);
69-
doAnswer(invocationOnMock -> {
70-
onLoad.run();
71-
return null;
72-
}).when(processing).load(Matchers.<ExternalTextResource>anyObject(), any(Runnable.class));
73-
geneViewer.load(onLoad);
74-
verify(onLoad).run();
75-
}
7668

77-
@Test
78-
public void testSetData() throws ResourceException {
79-
JsArrayMixed data = getFakeData();
80-
geneViewer.setGeneData(data);
81-
verify(instance).api_setGeneData(data);
82-
}
8369

8470

8571
@Test
@@ -112,6 +98,30 @@ public void testForceLayout() {
11298
verify(instance).api_setSize(1000, 500);
11399
}
114100

101+
102+
@Test
103+
public void testLoadAndCallOnLoad() throws ResourceException {
104+
final Runnable onLoad = mock(Runnable.class);
105+
doAnswer(new Answer() {
106+
@Override
107+
public Object answer(InvocationOnMock invocation) throws Throwable {
108+
onLoad.run();
109+
return null;
110+
}
111+
}).when(processing).load(Matchers.<ExternalTextResource>anyObject(), any(Runnable.class));
112+
geneViewer.load(onLoad);
113+
verify(onLoad).run();
114+
// onLoad inside of GeneViewer is not called
115+
//verifyEventsSinked();
116+
}
117+
118+
@Test
119+
public void testSetData() throws ResourceException {
120+
JsArrayMixed data = getFakeData();
121+
geneViewer.setGeneData(data);
122+
verify(instance).api_setGeneData(data);
123+
}
124+
115125
@Test
116126
public void testSetViewRegion() {
117127
geneViewer.setViewRegion(400, 1700);
@@ -215,10 +225,20 @@ public void testAddClickGeneEventHandler() {
215225

216226

217227
private void verifyEventHandler(String handler,HandlerRegistration registration) {
218-
verify(instance).api_addEventHandler(eq(handler), any());
219228
assertNotNull(registration);
220229
}
221230

231+
private void verifyEventsSinked() {
232+
String[] handlers = new String[]{"mouseMoveEvent","zoomResizeEvent","fetchGeneEvent","highlightGeneEvent","unhighlightGeneEvent","clickGeneEvent"};
233+
for (String handler:handlers) {
234+
verifyEventSinked(handler);
235+
}
236+
}
237+
238+
private void verifyEventSinked(String handler) {
239+
verify(instance).api_addEventHandler(eq(handler), any());
240+
}
241+
222242
private JsArrayMixed getFakeData() {
223243
JsArrayMixed data = mock(JsArrayMixed.class);
224244
return data;

0 commit comments

Comments
 (0)