]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.eclipse.ui/src/org/argeo/eclipse/ui/fs/NioFileLabelProvider.java
Make lightweight dialog more robust
[lgpl/argeo-commons.git] / org.argeo.eclipse.ui / src / org / argeo / eclipse / ui / fs / NioFileLabelProvider.java
1 package org.argeo.eclipse.ui.fs;
2
3 import java.io.IOException;
4 import java.nio.file.Files;
5 import java.nio.file.Path;
6
7 import org.argeo.eclipse.ui.EclipseUiUtils;
8 import org.eclipse.jface.viewers.ColumnLabelProvider;
9
10 /** Expect a {@link Path} as input element */
11 public class NioFileLabelProvider extends ColumnLabelProvider {
12 private static final long serialVersionUID = 2160026425187796930L;
13 private final String propName;
14
15 public NioFileLabelProvider(String propName) {
16 this.propName = propName;
17 }
18
19 @Override
20 public String getText(Object element) {
21 try {
22 if (element instanceof ParentDir) {
23 switch (propName) {
24 case FsUiConstants.PROPERTY_SIZE:
25 return "-";
26 case FsUiConstants.PROPERTY_LAST_MODIFIED:
27 return "-";
28 // return Files.getLastModifiedTime(((ParentDir) element).getPath()).toString();
29 case FsUiConstants.PROPERTY_TYPE:
30 return "Folder";
31 }
32 }
33
34 Path path = (Path) element;
35 switch (propName) {
36 case FsUiConstants.PROPERTY_SIZE:
37 if (Files.isDirectory(path))
38 return "-";
39 else
40 return FsUiUtils.humanReadableByteCount(Files.size(path), false);
41 case FsUiConstants.PROPERTY_LAST_MODIFIED:
42 return Files.getLastModifiedTime(path).toString();
43 case FsUiConstants.PROPERTY_TYPE:
44 if (Files.isDirectory(path))
45 return "Folder";
46 else {
47 String mimeType = Files.probeContentType(path);
48 if (EclipseUiUtils.isEmpty(mimeType))
49 return "Unknown";
50 else
51 return mimeType;
52 }
53 default:
54 throw new IllegalArgumentException("Unsupported property " + propName);
55 }
56 } catch (IOException ioe) {
57 throw new FsUiException("Cannot get property " + propName + " on " + element);
58 }
59 }
60 }