/* * Copyright 2006-2016 The MZmine 3 Development Team * * This file is part of MZmine 3. * * MZmine 3 is free software; you can redistribute it and/or modify it under the terms of the GNU * General Public License as published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * MZmine 3 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License along with MZmine 3; if not, * write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 * USA */ package io.github.mzmine.modules.featuretable; import io.github.msdk.datamodel.featuretables.FeatureTable; import io.github.msdk.datamodel.featuretables.FeatureTableRow; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.control.ContextMenu; import javafx.scene.control.Menu; import javafx.scene.control.MenuItem; import javafx.scene.control.SeparatorMenuItem; import javafx.scene.control.TreeItem; import javafx.scene.control.TreeTableView; public class FeatureTablePopupMenu extends ContextMenu { FeatureTable featureTable; TreeTableView<FeatureTableRow> treeTable; public FeatureTablePopupMenu(FeatureTable featureTable, TreeTableView<FeatureTableRow> treeTable) { this.featureTable = featureTable; this.treeTable = treeTable; /* * Show menu */ Menu showMenu = new Menu("Show"); // XIC MenuItem xicItem = new MenuItem("Extracted Ion Chromatogram (XIC)"); xicItem.setOnAction(handleClick("XIC")); showMenu.getItems().addAll(xicItem); getItems().addAll(showMenu); getItems().addAll(new SeparatorMenuItem()); /* * Other items */ // Expand MenuItem expandItem = new MenuItem("Expand all groups"); expandItem.setOnAction(handleClick("Expand")); getItems().addAll(expandItem); // Collapse MenuItem collapsItem = new MenuItem("Collapse all groups"); collapsItem.setOnAction(handleClick("Collapse")); getItems().addAll(collapsItem); getItems().addAll(new SeparatorMenuItem()); // Delete MenuItem deleteItem = new MenuItem("Delete selected row(s)"); deleteItem.setOnAction(handleClick("Delete")); getItems().addAll(deleteItem); } private EventHandler<ActionEvent> handleClick(String item) { EventHandler<ActionEvent> eventHandler = new EventHandler<ActionEvent>() { public void handle(ActionEvent e) { ObservableList<TreeItem<FeatureTableRow>> rows = null; if (treeTable.getSelectionModel() != null) { rows = treeTable.getSelectionModel().getSelectedItems(); } // Tree items TreeItem<FeatureTableRow> rootItem = treeTable.getRoot(); ObservableList<TreeItem<FeatureTableRow>> treeItems = rootItem.getChildren(); switch (item) { case "XIC": /* * TODO */ System.out.println("Show XIC"); break; case "Expand": for (TreeItem<FeatureTableRow> treeItem : treeItems) { treeItem.setExpanded(true); } break; case "Collapse": for (TreeItem<FeatureTableRow> treeItem : treeItems) { treeItem.setExpanded(false); } break; case "Delete": if (rows != null) { for (int i = rows.size() - 1; i >= 0; i--) { TreeItem<FeatureTableRow> row = rows.get(i); // If row has children then delete those first treeItems = row.getChildren(); for (TreeItem<FeatureTableRow> treeItem : treeItems) { // Remove from featureTable FeatureTableRow featureTableRow = treeItem.getValue(); featureTable.removeRow(featureTableRow); // Remove from tree table view TreeItem<?> parent = treeItem.getParent(); parent.getChildren().remove(row); } // Remove from featureTable FeatureTableRow featureTableRow = row.getValue(); featureTable.removeRow(featureTableRow); // Remove from tree table view TreeItem<?> parent = row.getParent(); parent.getChildren().remove(row); } treeTable.getSelectionModel().clearSelection(); } break; } } }; return eventHandler; } }