001package conexp.fx.gui.dataset;
002
003/*
004 * #%L
005 * Concept Explorer FX
006 * %%
007 * Copyright (C) 2010 - 2023 Francesco Kriegel
008 * %%
009 * This program is free software: you can redistribute it and/or modify
010 * it under the terms of the GNU General Public License as
011 * published by the Free Software Foundation, either version 3 of the
012 * License, or (at your option) any later version.
013 * 
014 * This program is distributed in the hope that it will be useful,
015 * but WITHOUT ANY WARRANTY; without even the implied warranty of
016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
017 * GNU General Public License for more details.
018 * 
019 * You should have received a copy of the GNU General Public
020 * License along with this program.  If not, see
021 * <http://www.gnu.org/licenses/gpl-3.0.html>.
022 * #L%
023 */
024
025import javafx.geometry.Insets;
026import javafx.scene.control.Control;
027import javafx.scene.control.Hyperlink;
028import javafx.scene.control.TreeItem;
029
030public class DatasetAction {
031
032  private final String                id;
033  private final Runnable              action;
034  private final DatasetActionTreeItem treeItem;
035
036  public DatasetAction(final String id, final Runnable action) {
037    super();
038    this.id = id;
039    this.action = action;
040    this.treeItem = new DatasetActionTreeItem();
041  }
042
043  public String getId() {
044    return id;
045  }
046
047  public void run() {
048    action.run();
049  }
050
051  public DatasetActionTreeItem getTreeItem() {
052    return treeItem;
053  }
054
055  public final class DatasetActionTreeItem extends TreeItem<Control> {
056
057    public DatasetActionTreeItem() {
058      super();
059      final Hyperlink hyperlink = new Hyperlink(id);
060      hyperlink.setPadding(new Insets(0));
061      hyperlink.setOnAction(e -> run());
062      setValue(hyperlink);
063    }
064
065    public final DatasetAction getDatasetAction() {
066      return DatasetAction.this;
067    }
068  }
069
070}