public MemoryStatisticsTable()

in application/org.openjdk.jmc.joverflow.ui/src/main/java/org/openjdk/jmc/joverflow/ui/viewers/MemoryStatisticsTable.java [59:144]


	public MemoryStatisticsTable(final Runnable updateCallback) {

		setRowFactory(new Callback<TableView<T>, TableRow<T>>() {

			@Override
			public TableRow<T> call(TableView<T> param) {
				final TableRow<T> row = new TableRow<T>() {

					@Override
					protected void updateItem(T item, boolean empty) {
						super.updateItem(item, empty);
						// FIXME: Change this when javafx RT-32518 is implemented
						getStyleClass().remove(HIGHLIGHT);
						if (item == selectedItem) {
							getStyleClass().add(HIGHLIGHT);
						}
					};
				};
				row.setOnMousePressed(new EventHandler<MouseEvent>() {

					@Override
					public void handle(MouseEvent me) {
						if (getItems().size() > row.getIndex()) {
							switch (me.getButton()) {
							case PRIMARY:
							case SECONDARY:
								selectedItem = getItems().get(row.getIndex());
								updateCallback.run();
								break;
							case NONE:
							case MIDDLE:
							}
						}
						me.consume();
					}
				});
				return row;
			}
		});

		TableColumn<T, String> name = new TableColumn<T, String>("Object Selection");
		name.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<T, String>, ObservableValue<String>>() {

			@Override
			public ObservableValue<String> call(CellDataFeatures<T, String> param) {
				return new SimpleObjectProperty<String>(param.getValue().getName());
			}
		});
		name.setPrefWidth(230);

		final TableColumn<T, Number> memory = new TableColumn<T, Number>("Memory KB");
		memory.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<T, Number>, ObservableValue<Number>>() {

			@Override
			public ObservableValue<Number> call(CellDataFeatures<T, Number> param) {
				return param.getValue().memoryProperty();
			}
		});
		memory.setCellFactory(CellFactories.<T, Number> getMemoryCellFactory());
		memory.setPrefWidth(100);
		memory.setSortType(SortType.DESCENDING);

		final TableColumn<T, Number> ovhd = new TableColumn<T, Number>("Overhead KB");
		ovhd.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<T, Number>, ObservableValue<Number>>() {

			@Override
			public ObservableValue<Number> call(CellDataFeatures<T, Number> param) {
				return param.getValue().ovhdProperty();
			}
		});
		ovhd.setCellFactory(CellFactories.<T, Number> getOvhdCellFactory());
		ovhd.setPrefWidth(100);

		final TableColumn<T, Number> size = new TableColumn<T, Number>("Objects");
		size.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<T, Number>, ObservableValue<Number>>() {

			@Override
			public ObservableValue<Number> call(CellDataFeatures<T, Number> param) {
				return param.getValue().sizeProperty();
			}
		});
		size.setCellFactory(CellFactories.<T, Number> getSizeCellFactory());
		size.setPrefWidth(75);
		getSortOrder().add(memory);
		getColumns().setAll(name, memory, ovhd, size);
	}