package org.sonar.plugins.profiler.viewer.client;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.VerticalPanel;
import org.sonar.gwt.ui.Loading;
import org.sonar.wsclient.gwt.AbstractCallback;
import org.sonar.wsclient.gwt.Sonar;
import org.sonar.wsclient.services.Measure;
import org.sonar.wsclient.services.Resource;
import org.sonar.wsclient.services.ResourceQuery;
/**
* @author Evgeny Mandrikov
*/
public class ProfilerPanel extends Composite {
private final Panel panel;
private Loading loading;
public ProfilerPanel(Resource resource, String metric) {
panel = new VerticalPanel();
loading = new Loading();
panel.add(loading);
initWidget(panel);
loadData(resource, metric);
}
private void loadData(Resource resource, String metric) {
ResourceQuery query = ResourceQuery.createForResource(resource, metric);
Sonar.getInstance().find(query, new ProfilerMeasureHandler(metric));
}
private class ProfilerMeasureHandler extends AbstractCallback<Resource> {
private String metric;
public ProfilerMeasureHandler(String metric) {
this.metric = metric;
}
@Override
protected void doOnResponse(Resource resource) {
loading.removeFromParent();
if (resource != null) {
Measure measure = resource.getMeasure(metric);
process(measure.getData());
}
}
private void process(String profilerData) {
HTML html = new HTML();
html.setHTML(profilerData);
panel.add(html);
}
}
}