All Downloads are FREE. Search and download functionalities are using the official Maven repository.

us.ihmc.scs2.sessionVisualizer.jfx.tools.ListViewTools Maven / Gradle / Ivy

package us.ihmc.scs2.sessionVisualizer.jfx.tools;

import javafx.collections.ObservableList;
import javafx.scene.control.ListView;
import javafx.scene.control.MenuItem;
import org.kordamp.ikonli.javafx.FontIcon;

import java.util.function.Function;
import java.util.function.IntFunction;
import java.util.function.Supplier;

public class ListViewTools
{
   public static  Function, MenuItem> removeMenuItemFactory(boolean allowMultipleSelection)
   {
      return listView ->
      {
         FontIcon removeIcon = new FontIcon();
         removeIcon.getStyleClass().add("remove-icon-view");
         MenuItem removeMenuItem = new MenuItem("Remove", removeIcon);

         if (allowMultipleSelection)
         {
            ObservableList selectedItems = listView.getSelectionModel().getSelectedItems();
            if (selectedItems.isEmpty())
               return null;
            removeMenuItem.setOnAction(e2 -> listView.getItems().removeAll(selectedItems));
         }
         else
         {
            T selectedItem = listView.getSelectionModel().getSelectedItem();
            if (selectedItem == null)
               return null;
            removeMenuItem.setOnAction(e2 -> listView.getItems().remove(selectedItem));
         }
         return removeMenuItem;
      };
   }

   public static  Function, MenuItem> removeAllMenuItemFactory()
   {
      return listView ->
      {
         FontIcon removeIcon = new FontIcon();
         removeIcon.getStyleClass().add("remove-icon-view");
         MenuItem removeMenuItem = new MenuItem("Remove all", removeIcon);

         if (listView.getItems().isEmpty())
            return null;
         removeMenuItem.setOnAction(e2 -> listView.getItems().clear());
         return removeMenuItem;
      };
   }

   public static  Function, MenuItem> addBeforeMenuItemFactory(Supplier addAction)
   {
      return addBeforeMenuItemFactory(index -> addAction.get());
   }

   public static  Function, MenuItem> addBeforeMenuItemFactory(IntFunction addAction)
   {
      return listView ->
      {
         ObservableList items = listView.getItems();
         int selectedIndex = listView.getSelectionModel().getSelectedIndex();

         FontIcon addBeforeIcon = new FontIcon();
         addBeforeIcon.getStyleClass().add("add-icon-view");
         MenuItem addBefore = new MenuItem("Add before", addBeforeIcon);

         addBefore.setOnAction(e2 ->
                               {
                                  T newItem = addAction.apply(selectedIndex);
                                  if (newItem != null)
                                     items.add(selectedIndex, newItem);
                               });

         return addBefore;
      };
   }

   public static  Function, MenuItem> addAfterMenuItemFactory(Supplier addAction)
   {
      return addBeforeMenuItemFactory(index -> addAction.get());
   }

   public static  Function, MenuItem> addAfterMenuItemFactory(IntFunction addAction)
   {
      return listView ->
      {
         ObservableList items = listView.getItems();
         int selectedIndex = listView.getSelectionModel().getSelectedIndex();

         FontIcon addAfterIcon = new FontIcon();
         addAfterIcon.getStyleClass().add("add-icon-view");
         MenuItem addAfter = new MenuItem("Add after", addAfterIcon);

         addAfter.setOnAction(e2 ->
                              {
                                 T newItem = addAction.apply(selectedIndex + 1);
                                 if (newItem != null)
                                    items.add(selectedIndex + 1, newItem);
                              });

         return addAfter;
      };
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy