From 0562a909f9438aa3425c6eb7a039b62047c05024 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Thu, 12 Mar 2015 19:26:20 +0100 Subject: [PATCH] fixes #46 --- .../ui/controllers/MainController.java | 2 +- .../ui/controls/DirectoryListCell.java | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/main/ui/src/main/java/org/cryptomator/ui/controllers/MainController.java b/main/ui/src/main/java/org/cryptomator/ui/controllers/MainController.java index dde6eea39..0cf8e40b9 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/controllers/MainController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/controllers/MainController.java @@ -197,7 +197,7 @@ public class MainController implements Initializable, InitializationListener, Un private ListCell createDirecoryListCell(ListView param) { final DirectoryListCell cell = new DirectoryListCell(); - cell.setContextMenu(vaultListCellContextMenu); + cell.setVaultContextMenu(vaultListCellContextMenu); return cell; } diff --git a/main/ui/src/main/java/org/cryptomator/ui/controls/DirectoryListCell.java b/main/ui/src/main/java/org/cryptomator/ui/controls/DirectoryListCell.java index 6b1426958..37e8d3af1 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/controls/DirectoryListCell.java +++ b/main/ui/src/main/java/org/cryptomator/ui/controls/DirectoryListCell.java @@ -3,6 +3,7 @@ package org.cryptomator.ui.controls; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.scene.control.ContentDisplay; +import javafx.scene.control.ContextMenu; import javafx.scene.control.Tooltip; import javafx.scene.paint.Color; import javafx.scene.paint.Paint; @@ -21,6 +22,7 @@ public class DirectoryListCell extends DraggableListCell implements Chang private static final Color GREEN_STROKE = Color.rgb(48, 183, 64); private final Circle statusIndicator = new Circle(4.5); + private ContextMenu vaultContextMenu; public DirectoryListCell() { setGraphic(statusIndicator); @@ -38,6 +40,7 @@ public class DirectoryListCell extends DraggableListCell implements Chang if (item == null) { setText(null); setTooltip(null); + setContextMenu(null); statusIndicator.setVisible(false); } else { setText(item.getName()); @@ -45,12 +48,14 @@ public class DirectoryListCell extends DraggableListCell implements Chang statusIndicator.setVisible(true); item.unlockedProperty().addListener(this); updateStatusIndicator(); + updateContextMenu(); } } @Override public void changed(ObservableValue observable, Boolean oldValue, Boolean newValue) { updateStatusIndicator(); + updateContextMenu(); } private void updateStatusIndicator() { @@ -60,4 +65,16 @@ public class DirectoryListCell extends DraggableListCell implements Chang statusIndicator.setStroke(strokeColor); } + private void updateContextMenu() { + if (getItem().isUnlocked()) { + this.setContextMenu(null); + } else { + this.setContextMenu(vaultContextMenu); + } + } + + public void setVaultContextMenu(ContextMenu contextMenu) { + this.vaultContextMenu = contextMenu; + } + }