class NumericItem extends WStandardItem {
private static Logger logger = LoggerFactory.getLogger(NumericItem.class);
WStandardItem clone() {
return new NumericItem();
}
void setData(final Object data, ItemDataRole role) {
if (role.equals(ItemDataRole.Edit)) {
Object dt = new Object();
double d = StringUtils.asNumber(data);
if (d != d) {
dt = data;
} else {
dt = d;
}
super.setData(dt, role);
} else {
super.setData(data, role);
}
}
}
void PieChart() {
WContainerWidget container = new WContainerWidget();
WStandardItemModel model = new WStandardItemModel();
model.setItemPrototype(new NumericItem());
model.insertColumns(model.getColumnCount(), 2);
model.setHeaderData(0, new WString("Item"));
model.setHeaderData(1, new WString("Sales"));
model.insertRows(model.getRowCount(), 6);
int row = 0;
model.setData(row, 0, new WString("Blueberry"));
model.setData(row, 1, new WString("Blueberry"), ItemDataRole.ToolTip);
model.setData(row, 1, 120);
model.setData(++row, 0, new WString("Cherry"));
model.setData(row, 1, 30);
model.setData(++row, 0, new WString("Apple"));
model.setData(row, 1, 260);
model.setData(++row, 0, new WString("Boston Cream"));
model.setData(row, 1, 160);
model.setData(++row, 0, new WString("Other"));
model.setData(row, 1, 40);
model.setData(++row, 0, new WString("Vanilla Cream"));
model.setData(row, 1, 120);
for (row = 0; row < model.getRowCount(); ++row) {
for (int col = 0; col < model.getColumnCount(); ++col) {
model.getItem(row, col).setFlags(EnumSet.of(ItemFlag.Editable));
}
}
WTableView table = new WTableView((WContainerWidget) container);
table.setMargin(new WLength(10), EnumSet.of(Side.Top, Side.Bottom));
table.setMargin(WLength.Auto, EnumSet.of(Side.Left, Side.Right));
table.setSortingEnabled(true);
table.setModel(model);
table.setColumnWidth(1, new WLength(100));
table.setRowHeight(new WLength(28));
table.setHeaderHeight(new WLength(28));
table.setWidth(new WLength(150 + 100 + 14 + 2));
if (WApplication.getInstance().getEnvironment().hasAjax()) {
table.setEditTriggers(EnumSet.of(EditTrigger.SingleClicked));
} else {
table.setEditTriggers(EnumSet.of(EditTrigger.None));
}
WPieChart chart = new WPieChart((WContainerWidget) container);
chart.setModel(model);
chart.setLabelsColumn(0);
chart.setDataColumn(1);
chart.setDisplayLabels(
EnumUtils.or(
EnumSet.of(LabelOption.Outside, LabelOption.TextLabel), LabelOption.TextPercentage));
chart.setPerspectiveEnabled(true, 0.2);
chart.setShadowEnabled(true);
chart.setExplode(0, 0.3);
chart.resize(new WLength(800), new WLength(300));
chart.setMargin(new WLength(10), EnumSet.of(Side.Top, Side.Bottom));
chart.setMargin(WLength.Auto, EnumSet.of(Side.Left, Side.Right));
}