Я работаю над изучением GWT (всего новичка) и у меня есть вопрос относительно API визуализации, предоставленного Google. Эта страница:
http://code.google.com/p/gwt-google-apis/wiki/VisualizationGettingStarted
Описывает начало работы с круговой диаграммой (это то, что мне нужно). Однако я пытаюсь сделать это в составном пользовательском интерфейсе с использованием UiBinder. С этой целью я не знаю, как правильно обрабатывать обратный вызов, который отображается:
public class SimpleViz implements EntryPoint {
public void onModuleLoad() {
// Create a callback to be called when the visualization API
// has been loaded.
Runnable onLoadCallback = new Runnable() {
public void run() {
Panel panel = RootPanel.get();
// Create a pie chart visualization.
PieChart pie = new PieChart(createTable(), createOptions());
pie.addSelectHandler(createSelectHandler(pie));
panel.add(pie);
}
};
// Load the visualization api, passing the onLoadCallback to be called
// when loading is done.
VisualizationUtils.loadVisualizationApi(onLoadCallback, PieChart.PACKAGE);
}
Мое первое предположение - это будет в конструкторе UiBinder, верно? Тем не менее, это предполагает, что я хочу поместить элемент в RootLayoutPanel, а я нет. Я не вижу элегантного и очевидного способа поместить его в переплет. Я утверждаю, что даже это предположение может быть неверным. Есть идеи от экспертов?
EDIT:
Я должен прояснить мою попытку:
public GraphPanel() {
initWidget(uiBinder.createAndBindUi(this));
Runnable onLoadCallback = new Runnable() {
public void run() {
//LayoutPanel panel = RootPanel.
// Create a pie chart visualization.
PieChart pie = new PieChart(createPieTable(), createPieOptions());
pie.addSelectHandler(createSelectHandler(pie));
mySelf.getElement().appendChild(pie.getElement()); // .add(pie);
}
};
// Load the visualization api, passing the onLoadCallback to be called
// when loading is done.
VisualizationUtils.loadVisualizationApi(onLoadCallback, PieChart.PACKAGE);
}
При запуске я получаю следующее в Composites DIV:
<div class="gwt-viz-container"></div>
Но я не вижу графиков, использующих код с вышеприведенной страницы.
РЕДАКТИРОВАТЬ 2:
Эта ссылка может предоставить дополнительную информацию. Тем не менее, предлагаемое решение не является оптимальным, поскольку приложение должно знать больше о виджете (и если виджет даже там).
http://vaadin.com/forum/-/message_boards/message/97850
РЕДАКТИРОВАТЬ 3:
Это не должно иметь значения, но на всякий случай я использую FF на Linux. Некоторые статьи, которые я прочитал, подразумевают, что это проблема.
РЕДАКТИРОВАТЬ 4:
Добавление:
pie.draw(createPieTable(), createPieOptions());
после того, как дочерний элемент append получает график для отображения. Это подразумевает, что порядок примера неправильный. Если это так, что является оптимальным?