X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.eclipse.ui%2Fsrc%2Forg%2Fargeo%2Feclipse%2Fui%2Ffs%2FNioFileLabelProvider.java;h=6b2c06d50ae89b8044889bf0223f54c1d05f2d52;hb=b01dfb98caa1b8b8ab8da15226bc023714b6048f;hp=68fc70b77dae92714aedbd87ef0c14ff51991b55;hpb=5f483b2ddb6cb736bae99da3b7563c99246b273d;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.eclipse.ui/src/org/argeo/eclipse/ui/fs/NioFileLabelProvider.java b/org.argeo.eclipse.ui/src/org/argeo/eclipse/ui/fs/NioFileLabelProvider.java index 68fc70b77..6b2c06d50 100644 --- a/org.argeo.eclipse.ui/src/org/argeo/eclipse/ui/fs/NioFileLabelProvider.java +++ b/org.argeo.eclipse.ui/src/org/argeo/eclipse/ui/fs/NioFileLabelProvider.java @@ -3,23 +3,47 @@ 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; } @Override public String getText(Object element) { - Path path = (Path) 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 = ((ParentDir) element).getPath(); + } else + path = (Path) element; switch (propName) { case FsUiConstants.PROPERTY_SIZE: if (Files.isDirectory(path)) @@ -27,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"; @@ -42,7 +72,7 @@ public class NioFileLabelProvider extends ColumnLabelProvider { throw new IllegalArgumentException("Unsupported property " + propName); } } catch (IOException ioe) { - throw new FsUiException("Cannot get property " + propName + " on " + path.toString()); + throw new FsUiException("Cannot get property " + propName + " on " + element); } } }