This commit is contained in:
Sebastian Stenzel
2016-02-29 22:28:04 +01:00
parent 9abc0aab83
commit ca929241f2
5 changed files with 69 additions and 13 deletions

View File

@@ -8,18 +8,23 @@
*******************************************************************************/
package org.cryptomator.ui.controls;
import org.cryptomator.ui.model.Vault;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Pos;
import javafx.scene.control.ContentDisplay;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.Label;
import javafx.scene.control.OverrunStyle;
import javafx.scene.control.Tooltip;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.paint.Paint;
import javafx.scene.shape.Circle;
import org.cryptomator.ui.model.Vault;
public class DirectoryListCell extends DraggableListCell<Vault> implements ChangeListener<Boolean> {
public class DirectoryListCell extends DraggableListCell<Vault>implements ChangeListener<Boolean> {
// fill: #FD4943, stroke: #E1443F
private static final Color RED_FILL = Color.rgb(253, 73, 67);
@@ -30,12 +35,25 @@ public class DirectoryListCell extends DraggableListCell<Vault> implements Chang
private static final Color GREEN_STROKE = Color.rgb(48, 183, 64);
private final Circle statusIndicator = new Circle(4.5);
private final Label nameText = new Label();
private final Label pathText = new Label();
private final VBox vbox = new VBox(4.0, nameText, pathText);
private final HBox hbox = new HBox(6.0, statusIndicator, vbox);
private ContextMenu vaultContextMenu;
public DirectoryListCell() {
setGraphic(statusIndicator);
setGraphicTextGap(12.0);
setContentDisplay(ContentDisplay.LEFT);
hbox.setAlignment(Pos.CENTER_LEFT);
hbox.setPrefWidth(1);
vbox.setFillWidth(true);
nameText.textFillProperty().bind(this.textFillProperty());
nameText.fontProperty().bind(this.fontProperty());
pathText.setTextOverrun(OverrunStyle.ELLIPSIS);
pathText.getStyleClass().add("detail-label");
setGraphic(hbox);
setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
}
@Override
@@ -46,12 +64,14 @@ public class DirectoryListCell extends DraggableListCell<Vault> implements Chang
}
super.updateItem(item, empty);
if (item == null) {
setText(null);
nameText.setText(null);
pathText.setText(null);
setTooltip(null);
setContextMenu(null);
statusIndicator.setVisible(false);
} else {
setText(item.getName());
nameText.setText(item.getName());
pathText.setText(item.getDisplayablePath());
setTooltip(new Tooltip(item.getPath().toString()));
statusIndicator.setVisible(true);
item.unlockedProperty().addListener(this);

View File

@@ -13,6 +13,7 @@ import java.io.Serializable;
import java.io.UncheckedIOException;
import java.nio.file.FileAlreadyExistsException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.Normalizer;
import java.text.Normalizer.Form;
import java.util.HashSet;
@@ -23,6 +24,7 @@ import java.util.concurrent.atomic.AtomicReference;
import org.apache.commons.lang3.CharUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.SystemUtils;
import org.cryptomator.common.LazyInitializer;
import org.cryptomator.common.Optionals;
import org.cryptomator.crypto.engine.InvalidPassphraseException;
@@ -185,6 +187,17 @@ public class Vault implements Serializable, CryptoFileSystemDelegate {
return path;
}
public String getDisplayablePath() {
Path homeDir = Paths.get(SystemUtils.USER_HOME);
if (path.startsWith(homeDir)) {
Path relativePath = homeDir.relativize(path);
String homePrefix = SystemUtils.IS_OS_WINDOWS ? "~\\" : "~/";
return homePrefix + relativePath.toString();
} else {
return path.toString();
}
}
/**
* @return Directory name without preceeding path components and file extension
*/

View File

@@ -14,6 +14,7 @@
-fx-font-size: 12px;
COLOR_TEXT: #444;
COLOR_TEXT_LIGHT: #888;
COLOR_TEXT_DISABLED: #BBB;
COLOR_HYPERLINK: #0069D9;
COLOR_BORDER: #D3D3D3;
@@ -120,7 +121,7 @@
}
.list-cell {
-fx-padding: 0.8em 0.5em 0.8em 0.5em;
-fx-padding: 0.5em;
-fx-text-fill: COLOR_TEXT;
}
@@ -128,6 +129,11 @@
-fx-background-color: COLOR_VGRAD_DARK;
}
.list-cell .detail-label {
-fx-text-fill: COLOR_TEXT_LIGHT;
-fx-font-size: 0.8em;
}
/*******************************************************************************
* *
* ScrollBar *

View File

@@ -14,6 +14,7 @@
-fx-font-size: 13px;
COLOR_TEXT: #000;
COLOR_TEXT_LIGHT: #888;
COLOR_TEXT_DISABLED: #B5B5B5;
COLOR_HYPERLINK: #0069D9;
COLOR_BORDER: #C8C8C8;
@@ -151,7 +152,7 @@
}
.list-cell {
-fx-background-color: #FFF;
-fx-padding: 0.8em 0.5em 0.8em 0.5em;
-fx-padding: 6px;
-fx-text-fill: COLOR_TEXT;
-fx-opacity: 1;
}
@@ -170,6 +171,17 @@
-fx-text-fill: #FFF;
}
.list-cell .detail-label {
-fx-text-fill: COLOR_TEXT_LIGHT;
-fx-font-size: 0.8em;
}
.list-view:focused > .virtual-flow > .clipped-container > .sheet > .list-cell:focused .detail-label,
.list-view > .virtual-flow > .clipped-container > .sheet > .list-cell:filled:selected .detail-label,
.list-view > .virtual-flow > .clipped-container > .sheet > .list-cell:filled:selected:hover .detail-label{
-fx-text-fill: #FFF;
}
/*******************************************************************************
* *
* ScrollBar *
@@ -302,9 +314,9 @@
******************************************************************************/
.tooltip {
-fx-background-color: COLOR_BORDER;
-fx-background-color: COLOR_BORDER, COLOR_BACKGROUND;
-fx-padding: 0.2em 0.4em 0.2em 0.4em;
-fx-effect: dropshadow(three-pass-box, rgba(0,0,0,0.8), 2, 0, 0, 0);
-fx-effect: dropshadow(three-pass-box, rgba(0,0,0,0.5), 2, 0, 0, 0);
-fx-font-size: 0.8em;
}

View File

@@ -138,7 +138,7 @@
}
.list-cell {
-fx-background-color: #FFF;
-fx-padding: 0.8em 0.5em 0.8em 0.5em;
-fx-padding: 0.6em;
-fx-text-fill: COLOR_TEXT;
-fx-opacity: 1;
}
@@ -154,6 +154,11 @@
-fx-background-color: #F7F7F7;
}
.list-cell .detail-label {
-fx-text-fill: COLOR_TEXT_DISABLED;
-fx-font-size: 0.8em;
}
/*******************************************************************************
* *
* ScrollBar *