181 yValueColumn.setMinWidth(50);
182
183 TreeTableColumn<XYChartItem<X, Y>, Object> extraValueColumn = new TreeTableColumn<>("Extra Value");
184 extraValueColumn.setCellValueFactory((CellDataFeatures<XYChartItem<X, Y>, Object> p) -> {
185 if (p.getValue() != null) {
186 return p.getValue().getValue().extraValueProperty();
187 } else {
188 return null;
189 }
190 });
191 extraValueColumn.setMinWidth(100);
192 extraValueColumn.setSortable(false);
193
194 getColumns().setAll(nameColumn, xValueColumn, yValueColumn, extraValueColumn);
195
196 setOnContextMenuRequested((ContextMenuEvent t) -> {
197 Node node = t.getPickResult().getIntersectedNode();
198 while (node != null && !(node instanceof TreeTableRow) && !(node instanceof TreeTableCell)) {
199 node = node.getParent();
200 }
201 if (node instanceof TreeTableCell) {
202 TreeTableCell tc = (TreeTableCell) node;
203 if (tc.getItem() == null) {
204 getSelectionModel().clearSelection();
205 } else {
206 getSelectionModel().select(tc.getIndex());
207 }
208 } else if (node instanceof TreeTableRow) {
209 TreeTableRow tr = (TreeTableRow) node;
210 if (tr.getItem() == null) {
211 getSelectionModel().clearSelection();
212 } else {
213 getSelectionModel().select(tr.getIndex());
214 }
215 }
216 });
217
218 MenuItem insertDataItemMenuItem = new MenuItem("Insert data item");
219 insertDataItemMenuItem.setDisable(!isEditable());
220 insertDataItemMenuItem.setOnAction((ActionEvent t) -> {
221 TreeItem<XYChartItem<X, Y>> selectedItem = getSelectionModel().getSelectedItem();
222 if (selectedItem == null || selectedItem.getParent() == null) {
223 return;
224 }
225 Object value = selectedItem.getValue().getValue();
226 Object parentValue = selectedItem.getParent().getValue().getValue();
227 if (value instanceof Series) {
228 Series series = (Series) value;
229 insertItem(series.getData());
230 } else if (parentValue instanceof Series) {
231 Series series = (Series) parentValue;
232 insertItem(series.getData().indexOf(value), series.getData());
233 }
234 });
235
236 MenuItem insertSeriesMenuitem = new MenuItem("Insert Series");
237 insertSeriesMenuitem.setDisable(!isEditable());
238 insertSeriesMenuitem.setOnAction((ActionEvent t) -> {
239 TreeItem<XYChartItem<X, Y>> selectedItem = getSelectionModel().getSelectedItem();
240 if (selectedItem == null) {
241 return;
242 }
243 Object value = selectedItem.getValue().getValue();
244 if (value instanceof ObservableList) {
245 ObservableList parentList = (ObservableList) value;
246 insertSeries(parentList.size(), parentList);
247 } else {
248 Object parentValue = selectedItem.getParent().getValue().getValue();
249 if (parentValue instanceof ObservableList) {
250 ObservableList parentList = (ObservableList) parentValue;
251
252 insertSeries(parentList.indexOf(value), parentList);
253 }
254 }
255 });
256
257 MenuItem deleteItemMenuItem = new MenuItem("Delete item");
258 deleteItemMenuItem.setDisable(!isEditable());
259 deleteItemMenuItem.setOnAction((ActionEvent t) -> {
260 TreeItem<XYChartItem<X, Y>> selectedItem = getSelectionModel().getSelectedItem();
261 if (selectedItem == null) {
262 return;
263 }
|
181 yValueColumn.setMinWidth(50);
182
183 TreeTableColumn<XYChartItem<X, Y>, Object> extraValueColumn = new TreeTableColumn<>("Extra Value");
184 extraValueColumn.setCellValueFactory((CellDataFeatures<XYChartItem<X, Y>, Object> p) -> {
185 if (p.getValue() != null) {
186 return p.getValue().getValue().extraValueProperty();
187 } else {
188 return null;
189 }
190 });
191 extraValueColumn.setMinWidth(100);
192 extraValueColumn.setSortable(false);
193
194 getColumns().setAll(nameColumn, xValueColumn, yValueColumn, extraValueColumn);
195
196 setOnContextMenuRequested((ContextMenuEvent t) -> {
197 Node node = t.getPickResult().getIntersectedNode();
198 while (node != null && !(node instanceof TreeTableRow) && !(node instanceof TreeTableCell)) {
199 node = node.getParent();
200 }
201 if (node == null) {
202 getSelectionModel().clearSelection();
203 } else if (node instanceof TreeTableCell) {
204 TreeTableCell tc = (TreeTableCell) node;
205 if (tc.getItem() == null) {
206 getSelectionModel().clearSelection();
207 } else {
208 getSelectionModel().select(tc.getIndex());
209 }
210 } else if (node instanceof TreeTableRow) {
211 TreeTableRow tr = (TreeTableRow) node;
212 if (tr.getItem() == null) {
213 getSelectionModel().clearSelection();
214 } else {
215 getSelectionModel().select(tr.getIndex());
216 }
217 }
218 });
219
220 MenuItem insertDataItemMenuItem = new MenuItem("Insert data item");
221 insertDataItemMenuItem.setDisable(!isEditable());
222 insertDataItemMenuItem.setOnAction((ActionEvent t) -> {
223 TreeItem<XYChartItem<X, Y>> selectedItem = getSelectionModel().getSelectedItem();
224 if (selectedItem == null || selectedItem.getParent() == null) {
225 return;
226 }
227 Object value = selectedItem.getValue().getValue();
228 Object parentValue = selectedItem.getParent().getValue().getValue();
229 if (value instanceof Series) {
230 Series series = (Series) value;
231 insertItem(series.getData());
232 } else if (parentValue instanceof Series) {
233 Series series = (Series) parentValue;
234 insertItem(series.getData().indexOf(value), series.getData());
235 }
236 });
237
238 MenuItem insertSeriesMenuitem = new MenuItem("Insert Series");
239 insertSeriesMenuitem.setDisable(!isEditable());
240 insertSeriesMenuitem.setOnAction((ActionEvent t) -> {
241 TreeItem<XYChartItem<X, Y>> selectedItem = getSelectionModel().getSelectedItem();
242 Object value = selectedItem == null ? chart.getData()
243 : selectedItem.getValue().getValue();
244 if (value instanceof ObservableList) {
245 ObservableList parentList = (ObservableList) value;
246 insertSeries(parentList.size(), parentList);
247 } else {
248 Object parentValue = selectedItem.getParent().getValue().getValue();
249 if (parentValue instanceof ObservableList) {
250 ObservableList parentList = (ObservableList) parentValue;
251
252 insertSeries(parentList.indexOf(value), parentList);
253 }
254 }
255 });
256
257 MenuItem deleteItemMenuItem = new MenuItem("Delete item");
258 deleteItemMenuItem.setDisable(!isEditable());
259 deleteItemMenuItem.setOnAction((ActionEvent t) -> {
260 TreeItem<XYChartItem<X, Y>> selectedItem = getSelectionModel().getSelectedItem();
261 if (selectedItem == null) {
262 return;
263 }
|