diff --git a/src/main/java/org/cryptomator/ui/controls/FontAwesome5Icon.java b/src/main/java/org/cryptomator/ui/controls/FontAwesome5Icon.java index b5a736da8..0206a7885 100644 --- a/src/main/java/org/cryptomator/ui/controls/FontAwesome5Icon.java +++ b/src/main/java/org/cryptomator/ui/controls/FontAwesome5Icon.java @@ -20,6 +20,7 @@ public enum FontAwesome5Icon { CROWN("\uF521"), // DONATE("\uF4B9"), // EDIT("\uF044"), // + ELLIPSIS_V("\uF142"), // EXCHANGE_ALT("\uF362"), // EXCLAMATION("\uF12A"), // EXCLAMATION_CIRCLE("\uF06A"), // diff --git a/src/main/java/org/cryptomator/ui/eventview/EventListCellController.java b/src/main/java/org/cryptomator/ui/eventview/EventListCellController.java index 78b454661..dfecd22b6 100644 --- a/src/main/java/org/cryptomator/ui/eventview/EventListCellController.java +++ b/src/main/java/org/cryptomator/ui/eventview/EventListCellController.java @@ -6,32 +6,40 @@ import org.cryptomator.event.UpdateEvent; import org.cryptomator.event.VaultEvent; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.controls.FontAwesome5Icon; -import org.cryptomator.ui.controls.FontAwesome5IconView; import javax.inject.Inject; import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.value.ObservableValue; -import javafx.scene.layout.HBox; +import javafx.collections.ObservableList; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.geometry.Side; +import javafx.scene.control.Button; +import javafx.scene.control.ContextMenu; import java.util.ResourceBundle; public class EventListCellController implements FxController { + private final ObservableList eventList; private final ResourceBundle resourceBundle; private final ObjectProperty event; private final ObservableValue message; private final ObservableValue description; private final ObservableValue icon; - public FontAwesome5IconView eventIcon; - public HBox eventListCell; + @FXML + ContextMenu eventActionsContextMenu; + @FXML + Button eventActionsButton; @Inject - public EventListCellController(ResourceBundle resourceBundle) { + public EventListCellController(ObservableList eventList, ResourceBundle resourceBundle) { + this.eventList = eventList; this.resourceBundle = resourceBundle; this.event = new SimpleObjectProperty<>(null); - this.message = ObservableUtil.mapWithDefault(event, e -> e.getClass().getName(),""); - this.description = ObservableUtil.mapWithDefault(event, this::selectDescription,""); + this.message = ObservableUtil.mapWithDefault(event, e -> e.getClass().getName(), ""); + this.description = ObservableUtil.mapWithDefault(event, this::selectDescription, ""); this.icon = ObservableUtil.mapWithDefault(event, this::selectIcon, FontAwesome5Icon.BELL); } @@ -48,11 +56,24 @@ public class EventListCellController implements FxController { private String selectDescription(Event e) { return switch (e) { - case UpdateEvent(_,String newVersion) -> resourceBundle.getString("preferences.updates.updateAvailable").formatted(newVersion); + case UpdateEvent(_, String newVersion) -> resourceBundle.getString("preferences.updates.updateAvailable").formatted(newVersion); case VaultEvent _ -> "A vault is weird!"; }; } + @FXML + public void toggleEventActionsMenu(ActionEvent actionEvent) { + if (eventActionsContextMenu.isShowing()) { + eventActionsContextMenu.hide(); + } else { + eventActionsContextMenu.show(eventActionsButton, Side.BOTTOM, 0.0, 0.0); + } + } + + @FXML + public void remove() { + eventList.remove(event.getValue()); + } //-- property accessors -- public ObservableValue messageProperty() { @@ -78,5 +99,4 @@ public class EventListCellController implements FxController { public FontAwesome5Icon getIcon() { return icon.getValue(); } - } diff --git a/src/main/resources/fxml/eventview.fxml b/src/main/resources/fxml/eventview.fxml index 619719219..3d4d6aae3 100644 --- a/src/main/resources/fxml/eventview.fxml +++ b/src/main/resources/fxml/eventview.fxml @@ -5,6 +5,7 @@ + - diff --git a/src/main/resources/fxml/eventview_cell.fxml b/src/main/resources/fxml/eventview_cell.fxml index b76ece770..b6bfea5d6 100644 --- a/src/main/resources/fxml/eventview_cell.fxml +++ b/src/main/resources/fxml/eventview_cell.fxml @@ -5,9 +5,11 @@ + + + - + + + + + + + + + +