Skip to content

Commit 69f996a

Browse files
committed
added proper layout handling. Size will be dynamically calculated from containers
1 parent 349f623 commit 69f996a

File tree

1 file changed

+64
-11
lines changed

1 file changed

+64
-11
lines changed

src/at/gmi/nordborglab/widgets/gwasgeneviewer/client/GWASGeneViewer.java

Lines changed: 64 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
import com.google.gwt.core.client.JsArray;
2424
import com.google.gwt.core.client.JsArrayInteger;
2525
import com.google.gwt.core.client.JsArrayMixed;
26+
import com.google.gwt.core.client.Scheduler;
27+
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
28+
import com.google.gwt.dom.client.Style.Unit;
2629
import com.google.gwt.uibinder.client.UiBinder;
2730
import com.google.gwt.user.client.ui.Composite;
2831
import com.google.gwt.user.client.ui.HTMLPanel;
@@ -45,6 +48,14 @@ interface ScatterGenomeChartUiBinder extends UiBinder<Widget, GWASGeneViewer> {
4548
@UiField Label chromosome_label;
4649
@UiField GeneViewer geneViewer;
4750

51+
private final ScheduledCommand layoutCmd = new ScheduledCommand() {
52+
public void execute() {
53+
layoutScheduled = false;
54+
forceLayout();
55+
}
56+
};
57+
private boolean layoutScheduled = false;
58+
4859
//Scatterchart settings
4960
private static int DYGRAPHOFFSET = 31;
5061
protected double max_value;
@@ -69,8 +80,8 @@ interface ScatterGenomeChartUiBinder extends UiBinder<Widget, GWASGeneViewer> {
6980

7081
//General settings
7182
protected String chromosome;
72-
protected int width = 1000;
73-
protected int geneViewerHeight = 300;
83+
protected int width = 0;
84+
protected int geneViewerHeight = 326;
7485
protected DataSource datasource = null;
7586
protected int viewStart = 0;
7687
protected int viewEnd = 0;
@@ -84,10 +95,25 @@ public GWASGeneViewer() {
8495
initGenomeView();
8596
}
8697

87-
public GWASGeneViewer(String chromosome,String color,String gene_marker_color,int width,DataSource datasource) {
98+
@Override
99+
public void setWidth(String width) {
100+
scatterChart.setWidth(width);
101+
}
102+
103+
@Override
104+
public void setHeight(String height) {
105+
scatterChart.setHeight(height);
106+
}
107+
108+
@Override
109+
public void setSize(String width,String height ) {
110+
scatterChart.setSize(width, height);
111+
}
112+
113+
public GWASGeneViewer(String chromosome,String color,String gene_marker_color,DataSource datasource) {
88114
this.chromosome = chromosome;
89115
this.color = color;
90-
this.width=width;
116+
//this.width=width;
91117
this.datasource = datasource;
92118
this.gene_marker_color = gene_marker_color;
93119
initWidget(uiBinder.createAndBindUi(this));
@@ -113,8 +139,12 @@ private void initGenomeView()
113139
{
114140
try
115141
{
142+
scatterChart.setSize("100%", scatterChartHeight+"px");
143+
geneViewer.setWidthOffset(DYGRAPHOFFSET);
116144
geneViewer.setViewRegion(viewStart, viewEnd);
117-
geneViewer.setSize(width - DYGRAPHOFFSET, geneViewerHeight);
145+
geneViewer.setWidth("100%");
146+
geneViewer.setHeight(geneViewerHeight+"px");
147+
//geneViewer.setSize(width - DYGRAPHOFFSET, geneViewerHeight);
118148
geneViewer.load(new Runnable() {
119149
@Override
120150
public void run() {
@@ -163,7 +193,7 @@ public void draw(DataTable dataTable,double max_value, int start,int end,double
163193
geneViewer.setViewRegion(start,end);
164194
geneViewer.setChromosome(chromosome);
165195
geneViewer.setDataSource(datasource);
166-
geneViewer.setSize(width - DYGRAPHOFFSET, geneViewerHeight);
196+
//geneViewer.setSize(width - DYGRAPHOFFSET, geneViewerHeight);
167197
this.drawScatterChart();
168198
if (minZoomLevelForGenomeView >= (viewEnd- viewStart)) {
169199
toggleGenomeViewVisible(true);
@@ -293,11 +323,10 @@ protected Options setOptions(Dygraphs.Options options){
293323
options.setDrawPoints(true);
294324
options.setPointSize(pointSize);
295325
options.setIncludeZero(true);
296-
options.setWidth(width);
297-
options.setHeight(scatterChartHeight);
298-
options.setAxisLabelFontSize(12);
326+
//options.setWidth(width);
327+
//options.setHeight(scatterChartHeight);
328+
options.setAxisLabelFontSize(11);
299329
options.setValueRange(0,(int)maxValue + 2);
300-
options.setxAxisLabelWidth(100);
301330
options.setyAxisLabelWidth(20);
302331
options.setColors(new String[] {color});
303332
options.setMinimumDistanceForHighlight(10);
@@ -309,9 +338,11 @@ protected Options setOptions(Dygraphs.Options options){
309338

310339
public void toggleGenomeViewVisible(boolean visible) {
311340
//geneViewerContainer.setVisible(visible);
341+
if (geneViewer.isVisible() == visible)
342+
return;
312343
geneViewer.setVisible(visible);
313344
if (visible) {
314-
geneViewer.setSize(width - DYGRAPHOFFSET, geneViewerHeight);
345+
//geneViewer.setSize(width - DYGRAPHOFFSET, geneViewerHeight);
315346
geneViewer.onResize();
316347
}
317348
}
@@ -414,7 +445,29 @@ public Selection getTopSNP() {
414445

415446
@Override
416447
public void onResize() {
448+
scheduledLayout();
449+
}
450+
451+
@Override
452+
public void onAttach() {
453+
super.onAttach();
454+
scheduledLayout();
455+
}
456+
457+
458+
public void forceLayout() {
459+
if (!isAttached())
460+
return;
461+
int width = getParent().getParent().getElement().getClientWidth();
462+
getElement().getStyle().setWidth(width, Unit.PX);
417463
geneViewer.onResize();
418464
scatterChart.onResize();
419465
}
466+
467+
private void scheduledLayout() {
468+
if (isAttached() && !layoutScheduled) {
469+
layoutScheduled = true;
470+
Scheduler.get().scheduleDeferred(layoutCmd);
471+
}
472+
}
420473
}

0 commit comments

Comments
 (0)