Improve files UI
[lgpl/argeo-commons.git] / org.argeo.eclipse.ui / src / org / argeo / eclipse / ui / fs / NioFileLabelProvider.java
index d8cb1d83befd08062fb9964be3c068b9de36ca5d..6b2c06d50ae89b8044889bf0223f54c1d05f2d52 100644 (file)
@@ -3,15 +3,26 @@ package org.argeo.eclipse.ui.fs;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.nio.file.attribute.FileTime;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
 
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.eclipse.jface.viewers.ColumnLabelProvider;
 
 /** Expect a {@link Path} as input element */
 public class NioFileLabelProvider extends ColumnLabelProvider {
+       private final static FileTime EPOCH = FileTime.fromMillis(0);
        private static final long serialVersionUID = 2160026425187796930L;
        private final String propName;
+       private DateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd hh:mm");
 
+       // TODO use new formatting
+       // DateTimeFormatter formatter =
+       // DateTimeFormatter.ofLocalizedDateTime( FormatStyle.SHORT )
+       // .withLocale( Locale.UK )
+       // .withZone( ZoneId.systemDefault() );
        public NioFileLabelProvider(String propName) {
                this.propName = propName;
        }
@@ -19,19 +30,20 @@ public class NioFileLabelProvider extends ColumnLabelProvider {
        @Override
        public String getText(Object element) {
                try {
+                       Path path;
                        if (element instanceof ParentDir) {
-                               switch (propName) {
-                               case FsUiConstants.PROPERTY_SIZE:
-                                       return "-";
-                               case FsUiConstants.PROPERTY_LAST_MODIFIED:
-                                       return "-";
-                               // return Files.getLastModifiedTime(((ParentDir) element).getPath()).toString();
-                               case FsUiConstants.PROPERTY_TYPE:
-                                       return "Folder";
-                               }
-                       }
-
-                       Path path = (Path) element;
+//                             switch (propName) {
+//                             case FsUiConstants.PROPERTY_SIZE:
+//                                     return "-";
+//                             case FsUiConstants.PROPERTY_LAST_MODIFIED:
+//                                     return "-";
+//                             // return Files.getLastModifiedTime(((ParentDir) element).getPath()).toString();
+//                             case FsUiConstants.PROPERTY_TYPE:
+//                                     return "Folder";
+//                             }
+                               path = ((ParentDir) element).getPath();
+                       } else
+                               path = (Path) element;
                        switch (propName) {
                        case FsUiConstants.PROPERTY_SIZE:
                                if (Files.isDirectory(path))
@@ -39,7 +51,13 @@ public class NioFileLabelProvider extends ColumnLabelProvider {
                                else
                                        return FsUiUtils.humanReadableByteCount(Files.size(path), false);
                        case FsUiConstants.PROPERTY_LAST_MODIFIED:
-                               return Files.getLastModifiedTime(path).toString();
+                               if (Files.isDirectory(path))
+                                       return "-";
+                               FileTime time = Files.getLastModifiedTime(path);
+                               if (time.equals(EPOCH))
+                                       return "-";
+                               else
+                                       return dateFormat.format(new Date(time.toMillis()));
                        case FsUiConstants.PROPERTY_TYPE:
                                if (Files.isDirectory(path))
                                        return "Folder";