X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.eclipse.ui%2Fsrc%2Forg%2Fargeo%2Feclipse%2Fui%2Ffs%2FFsTableViewer.java;h=3476739bcbd2e24fdc0a95607e23f2fb47418eb6;hb=be23cc6f53178ac5108bc3f6cdca88d237ab1b7e;hp=79de1b3430002c88e20035c6c076f74c91eb44c1;hpb=656e0b0ab96401cd00b2b25829cfa06dc4575b9f;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.eclipse.ui/src/org/argeo/eclipse/ui/fs/FsTableViewer.java b/org.argeo.eclipse.ui/src/org/argeo/eclipse/ui/fs/FsTableViewer.java index 79de1b343..3476739bc 100644 --- a/org.argeo.eclipse.ui/src/org/argeo/eclipse/ui/fs/FsTableViewer.java +++ b/org.argeo.eclipse.ui/src/org/argeo/eclipse/ui/fs/FsTableViewer.java @@ -1,5 +1,6 @@ package org.argeo.eclipse.ui.fs; +import java.nio.file.Files; import java.nio.file.Path; import java.util.List; @@ -71,9 +72,31 @@ public class FsTableViewer extends TableViewer { } public void setInput(Path dir, String filter) { - Object[] rows = FsUiUtils.getChildren(dir, filter, showHiddenItems, folderFirst, orderProperty, reverseOrder); - this.setInput(rows); - int length = rows == null ? 0 : rows.length; + Path[] rows = FsUiUtils.getChildren(dir, filter, showHiddenItems, folderFirst, orderProperty, reverseOrder); + if (rows == null) { + this.setInput(null); + this.setItemCount(0); + return; + } + boolean isRoot; + try { + isRoot = dir.getRoot().equals(dir); + } catch (Exception e) { + // FIXME Workaround for JCR root node access + isRoot = dir.toString().equals("/"); + } + final Object[] res; + if (isRoot) + res = rows; + else { + res = new Object[rows.length + 1]; + res[0] = new ParentDir(dir.getParent()); + for (int i = 1; i < res.length; i++) { + res[i] = rows[i - 1]; + } + } + this.setInput(res); + int length = res.length; this.setItemCount(length); this.refresh(); } @@ -100,7 +123,8 @@ public class FsTableViewer extends TableViewer { } public void updateElement(int index) { - FsTableViewer.this.replace(elements[index], index); + if (index < elements.length) + FsTableViewer.this.replace(elements[index], index); } } }