From: Bruno Sinou Date: Thu, 6 Oct 2011 14:28:43 +0000 (+0000) Subject: Clean JCR Ui Explorer editor X-Git-Tag: argeo-commons-2.1.30~1111 X-Git-Url: https://git.argeo.org/?a=commitdiff_plain;h=43f16492d87ed567a7d332b205129016a3ef1dd7;p=lgpl%2Fargeo-commons.git Clean JCR Ui Explorer editor git-svn-id: https://svn.argeo.org/commons/trunk@4808 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/commands/Refresh.java b/eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/commands/Refresh.java index af3fd53c9..5550b4075 100644 --- a/eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/commands/Refresh.java +++ b/eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/commands/Refresh.java @@ -10,7 +10,13 @@ import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ui.handlers.HandlerUtil; -/** Refresh one of the view */ +/** + * Call the refresh method of the active AbstractJcrBrowser instance. + * + * Warning: this method only refreshes the viewer, if the model is "stale", e.g. + * if some changes in the underlying data have not yet been propagated to the + * model, the view will not display up-to-date information. + */ public class Refresh extends AbstractHandler { public Object execute(ExecutionEvent event) throws ExecutionException { diff --git a/eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/views/AbstractJcrBrowser.java b/eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/views/AbstractJcrBrowser.java index db19ab342..7bbbacdf2 100644 --- a/eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/views/AbstractJcrBrowser.java +++ b/eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/views/AbstractJcrBrowser.java @@ -39,7 +39,9 @@ public abstract class AbstractJcrBrowser extends ViewPart { } public void refresh(Object obj) { + // getNodeViewer().update(obj, null); getNodeViewer().refresh(obj); + // getNodeViewer().expandToLevel(obj, 1); } public void nodeAdded(Node parentNode, Node newNode) { diff --git a/server/plugins/org.argeo.jcr.ui.explorer/META-INF/spring/commands.xml b/server/plugins/org.argeo.jcr.ui.explorer/META-INF/spring/commands.xml index f77487f1d..1e58d33e5 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/META-INF/spring/commands.xml +++ b/server/plugins/org.argeo.jcr.ui.explorer/META-INF/spring/commands.xml @@ -15,11 +15,11 @@ class="org.argeo.jcr.ui.explorer.commands.OpenGenericNodeEditor" scope="prototype"> + - @@ -29,6 +29,8 @@ + diff --git a/server/plugins/org.argeo.jcr.ui.explorer/plugin.xml b/server/plugins/org.argeo.jcr.ui.explorer/plugin.xml index 358d5590d..7d220a04f 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/plugin.xml +++ b/server/plugins/org.argeo.jcr.ui.explorer/plugin.xml @@ -60,12 +60,7 @@ defaultHandler="org.argeo.eclipse.spring.SpringCommandHandler" id="org.argeo.jcr.ui.explorer.getNodeSize" name="Get node size"> - - - - - + *
  • The model objects are recomputed
  • + *
  • the view is refreshed
  • + * + */ +public class Refresh extends AbstractHandler { + + public Object execute(ExecutionEvent event) throws ExecutionException { + ISelection selection = HandlerUtil.getActiveWorkbenchWindow(event) + .getActivePage().getSelection(); + AbstractJcrBrowser view = (AbstractJcrBrowser) HandlerUtil + .getActiveWorkbenchWindow(event).getActivePage() + .findView(HandlerUtil.getActivePartId(event)); + if (selection != null && selection instanceof IStructuredSelection) { + Iterator it = ((IStructuredSelection) selection).iterator(); + while (it.hasNext()) { + Object obj = it.next(); + if (obj instanceof TreeParent) { + TreeParent tp = (TreeParent) obj; + JcrUiUtils.forceRefreshIfNeeded(tp); + view.refresh(obj); + } + } + } + return null; + } +} diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/ChildNodesPage.java b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/ChildNodesPage.java index 6f4a2347e..0a6b561ff 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/ChildNodesPage.java +++ b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/ChildNodesPage.java @@ -40,9 +40,10 @@ public class ChildNodesPage extends FormPage { protected void createFormContent(IManagedForm managedForm) { try { ScrolledForm form = managedForm.getForm(); + form.setText(JcrExplorerPlugin.getMessage("childNodesPageTitle")); Composite body = form.getBody(); GridLayout twt = new GridLayout(1, false); - twt.marginWidth = twt.marginHeight = 0; + twt.marginWidth = twt.marginHeight = 5; body.setLayout(twt); if (!currentNode.hasNodes()) { managedForm.getToolkit().createLabel(body, diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/GenericNodeEditor.java b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/GenericNodeEditor.java index 422c6881e..fe13a8091 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/GenericNodeEditor.java +++ b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/GenericNodeEditor.java @@ -25,7 +25,8 @@ public class GenericNodeEditor extends FormEditor { private Node currentNode; - private GenericNodePage networkDetailsPage; + private GenericNodePage genericNodePage; + private GenericPropertyPage genericPropertyPage; private ChildNodesPage childNodesPage; private NodeRightsManagementPage nodeRightsManagementPage; private NodeVersionHistoryPage nodeVersionHistoryPage; @@ -41,10 +42,15 @@ public class GenericNodeEditor extends FormEditor { @Override protected void addPages() { try { - networkDetailsPage = new GenericNodePage(this, + // genericNodePage = new GenericNodePage(this, + // JcrExplorerPlugin.getMessage("genericNodePageTitle"), + // currentNode); + // addPage(genericNodePage); + + genericPropertyPage = new GenericPropertyPage(this, JcrExplorerPlugin.getMessage("genericNodePageTitle"), currentNode); - addPage(networkDetailsPage); + addPage(genericPropertyPage); childNodesPage = new ChildNodesPage(this, JcrExplorerPlugin.getMessage("childNodesPageTitle"), diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/GenericPropertyPage.java b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/GenericPropertyPage.java new file mode 100644 index 000000000..176d7f659 --- /dev/null +++ b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/GenericPropertyPage.java @@ -0,0 +1,302 @@ +package org.argeo.jcr.ui.explorer.editors; + +import java.util.ArrayList; +import java.util.List; + +import javax.jcr.Node; +import javax.jcr.Property; +import javax.jcr.PropertyIterator; +import javax.jcr.RepositoryException; +import javax.jcr.Value; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.argeo.ArgeoException; +import org.argeo.jcr.ui.explorer.JcrExplorerConstants; +import org.argeo.jcr.ui.explorer.JcrExplorerPlugin; +import org.argeo.jcr.ui.explorer.providers.PropertyLabelProvider; +import org.eclipse.jface.viewers.ITreeContentProvider; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.FillLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeColumn; +import org.eclipse.ui.forms.IManagedForm; +import org.eclipse.ui.forms.editor.FormEditor; +import org.eclipse.ui.forms.editor.FormPage; +import org.eclipse.ui.forms.widgets.FormToolkit; +import org.eclipse.ui.forms.widgets.ScrolledForm; + +/** + * Generic editor property page. Lists all properties of current node as a + * complex tree. TODO: enable editing + */ + +public class GenericPropertyPage extends FormPage implements + JcrExplorerConstants { + private final static Log log = LogFactory.getLog(GenericPropertyPage.class); + + // local constants + private final static String JCR_PROPERTY_NAME = "jcr:name"; + + // Main business Objects + private Node currentNode; + + // This page widgets + private FormToolkit tk; + private TreeViewer complexTree; + + public GenericPropertyPage(FormEditor editor, String title, Node currentNode) { + super(editor, "id", title); + this.currentNode = currentNode; + } + + protected void createFormContent(IManagedForm managedForm) { + tk = managedForm.getToolkit(); + ScrolledForm form = managedForm.getForm(); + form.setText(JcrExplorerPlugin + .getMessage("genericNodePageTitle")); + FillLayout layout = new FillLayout(); + layout.marginHeight = 5; + layout.marginWidth = 5; + form.getBody().setLayout(layout); + + complexTree = createComplexTree(form.getBody()); + + // TODO remove following + // createPropertiesPart(form.getBody()); + } + + private TreeViewer createComplexTree(Composite parent) { + int style = SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION; + Tree tree = new Tree(parent, style); + createColumn(tree, "Property", SWT.LEFT, 200); + createColumn(tree, "Value(s)", SWT.LEFT, 300); + createColumn(tree, "Attributes", SWT.LEFT, 65); + tree.setLinesVisible(true); + tree.setHeaderVisible(true); + + TreeViewer result = new TreeViewer(tree); + result.setContentProvider(new TreeContentProvider()); + result.setLabelProvider(new PropertyLabelProvider()); + result.setInput(currentNode); + result.expandAll(); + return result; + } + + private static TreeColumn createColumn(Tree parent, String name, int style, + int width) { + TreeColumn result = new TreeColumn(parent, style); + result.setText(name); + result.setWidth(width); + result.setMoveable(true); + result.setResizable(true); + return result; + } + + // + // private void createPropertiesPart(Composite parent) { + // try { + // + // PropertyIterator pi = currentNode.getProperties(); + // + // // Initializes form part + // AbstractFormPart part = new AbstractFormPart() { + // public void commit(boolean onSave) { + // try { + // if (onSave) { + // ListIterator it = modifyableProperties + // .listIterator(); + // while (it.hasNext()) { + // // we only support Text controls for the time + // // being + // Text curControl = (Text) it.next(); + // String value = curControl.getText(); + // currentNode.setProperty((String) curControl + // .getData(JCR_PROPERTY_NAME), value); + // } + // + // // We only commit when onSave = true, + // // thus it is still possible to save after a tab + // // change. + // super.commit(onSave); + // } + // } catch (RepositoryException re) { + // throw new ArgeoException( + // "Unexpected error while saving properties", re); + // } + // } + // }; + // + // while (pi.hasNext()) { + // Property prop = pi.nextProperty(); + // addPropertyLine(parent, part, prop); + // } + // + // getManagedForm().addPart(part); + // } catch (RepositoryException re) { + // throw new ArgeoException( + // "Error during creation of network details section", re); + // } + // + // } + // + // private void addPropertyLine(Composite parent, AbstractFormPart part, + // Property prop) { + // try { + // tk.createLabel(parent, prop.getName()); + // tk.createLabel(parent, + // "[" + JcrUtils.getPropertyDefinitionAsString(prop) + "]"); + // + // if (prop.getDefinition().isProtected()) { + // tk.createLabel(parent, formatReadOnlyPropertyValue(prop)); + // } else + // addModifyableValueWidget(parent, part, prop); + // } catch (RepositoryException re) { + // throw new ArgeoException("Cannot get property " + prop, re); + // } + // } + // + // private String formatReadOnlyPropertyValue(Property prop) { + // try { + // String strValue; + // + // if (prop.getType() == PropertyType.BINARY) + // strValue = ""; + // else if (prop.isMultiple()) + // strValue = Arrays.asList(prop.getValues()).toString(); + // else if (prop.getType() == PropertyType.DATE) + // strValue = timeFormatter.format(prop.getValue().getDate() + // .getTime()); + // else + // strValue = prop.getValue().getString(); + // + // return strValue; + // } catch (RepositoryException re) { + // throw new ArgeoException( + // "Unexpected error while formatting read only property value", + // re); + // } + // } + // + // private Control addModifyableValueWidget(Composite parent, + // AbstractFormPart part, Property prop) { + // GridData gd; + // try { + // if (prop.getType() == PropertyType.STRING) { + // Text txt = tk.createText(parent, prop.getString()); + // gd = new GridData(GridData.FILL_HORIZONTAL); + // txt.setLayoutData(gd); + // txt.addModifyListener(new ModifiedFieldListener(part)); + // txt.setData(JCR_PROPERTY_NAME, prop.getName()); + // modifyableProperties.add(txt); + // } else { + // // unsupported property type for editing, we create a read only + // // label. + // return tk + // .createLabel(parent, formatReadOnlyPropertyValue(prop)); + // } + // return null; + // } catch (RepositoryException re) { + // throw new ArgeoException( + // "Unexpected error while formatting read only property value", + // re); + // } + // + // } + + // Multiple Value Model + // protected class MultipleValueItem { + // private int index; + // private Value value; + // + // public MultipleValueItem(int index, Value value) { + // this.index = index; + // this.value = value; + // } + // + // public int getIndex() { + // return index; + // } + // + // public Object getValue() { + // return value; + // } + // } + + private class TreeContentProvider implements ITreeContentProvider { + public Object[] getElements(Object parent) { + Object[] props = null; + try { + + if (parent instanceof Node) { + Node node = (Node) parent; + PropertyIterator pi; + pi = node.getProperties(); + List propList = new ArrayList(); + while (pi.hasNext()) { + propList.add(pi.nextProperty()); + } + props = propList.toArray(); + } + } catch (RepositoryException e) { + throw new ArgeoException( + "Unexpected exception while listing node properties", e); + } + return props; + } + + public Object getParent(Object child) { + return null; + } + + public Object[] getChildren(Object parent) { + Object[] result = null; + if (parent instanceof Property) { + Property prop = (Property) parent; + try { + + if (prop.isMultiple()) { + Value[] values = prop.getValues(); + // List list = new + // ArrayList(); + // for (int i = 0; i < values.length; i++) { + // MultipleValueItem mvi = new MultipleValueItem(i, + // values[i]); + // list.add(mvi); + // } + + return values; + } + } catch (RepositoryException e) { + throw new ArgeoException( + "Unexpected error getting multiple values property.", + e); + } + } + return result; + } + + public boolean hasChildren(Object parent) { + try { + if (parent instanceof Property + && ((Property) parent).isMultiple()) { + return true; + } + } catch (RepositoryException e) { + throw new ArgeoException( + "Unexpected exception while checking if property is multiple", + e); + } + return false; + } + + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { + } + + public void dispose() { + } + } +} diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/NodeRightsManagementPage.java b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/NodeRightsManagementPage.java index d941cff19..6c5bbb159 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/NodeRightsManagementPage.java +++ b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/NodeRightsManagementPage.java @@ -5,6 +5,7 @@ import javax.jcr.security.AccessControlManager; import javax.jcr.security.Privilege; import org.argeo.ArgeoException; +import org.argeo.jcr.ui.explorer.JcrExplorerPlugin; import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.TableViewer; @@ -40,13 +41,16 @@ public class NodeRightsManagementPage extends FormPage { protected void createFormContent(IManagedForm managedForm) { ScrolledForm form = managedForm.getForm(); - form.setText("Rights"); - FillLayout mainLayout = new FillLayout(); - form.getBody().setLayout(mainLayout); + form.setText(JcrExplorerPlugin + .getMessage("nodeRightsManagementPageTitle")); + FillLayout layout = new FillLayout(); + layout.marginHeight = 5; + layout.marginWidth = 5; + form.getBody().setLayout(layout); createRightsPart(form.getBody()); } - /** Creates the rights section */ + /** Creates the rights part */ protected void createRightsPart(Composite parent) { Table table = new Table(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); table.setLinesVisible(true); diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/NodeVersionHistoryPage.java b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/NodeVersionHistoryPage.java index 5b5e6ff1e..dc2c2eaca 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/NodeVersionHistoryPage.java +++ b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/NodeVersionHistoryPage.java @@ -73,6 +73,8 @@ public class NodeVersionHistoryPage extends FormPage implements protected void createFormContent(IManagedForm managedForm) { ScrolledForm form = managedForm.getForm(); + form.setText(JcrExplorerPlugin + .getMessage("nodeVersionHistoryPageTitle")); tk = managedForm.getToolkit(); GridLayout twt = new GridLayout(1, false); twt.marginWidth = twt.marginHeight = 5; diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/model/RepositoriesNode.java b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/model/RepositoriesNode.java index 6634603aa..a645809a1 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/model/RepositoriesNode.java +++ b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/model/RepositoriesNode.java @@ -107,7 +107,7 @@ public class RepositoriesNode extends TreeParent implements ArgeoNames { // super.addChild(new RepositoriesNode(...)); } - /** Returns the {@link RepositoryRegister} wrapped by thgis object. */ + /** Returns the {@link RepositoryRegister} wrapped by this object. */ public RepositoryRegister getRepositoryRegister() { return repositoryRegister; } diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/providers/PropertyLabelProvider.java b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/providers/PropertyLabelProvider.java new file mode 100644 index 000000000..b151a652b --- /dev/null +++ b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/providers/PropertyLabelProvider.java @@ -0,0 +1,101 @@ +package org.argeo.jcr.ui.explorer.providers; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; + +import javax.jcr.Property; +import javax.jcr.PropertyType; +import javax.jcr.RepositoryException; +import javax.jcr.Value; + +import org.argeo.ArgeoException; +import org.argeo.jcr.JcrUtils; +import org.argeo.jcr.ui.explorer.JcrExplorerConstants; +import org.eclipse.jface.viewers.ColumnLabelProvider; +import org.eclipse.jface.viewers.ViewerCell; + +public class PropertyLabelProvider extends ColumnLabelProvider implements + JcrExplorerConstants { + + // To be able to change column order easily + public static final int COLUMN_PROPERTY = 0; + public static final int COLUMN_VALUE = 1; + public static final int COLUMN_ATTRIBUTES = 2; + + // Utils + protected DateFormat timeFormatter = new SimpleDateFormat(DATE_TIME_FORMAT); + + public void update(ViewerCell cell) { + Object element = cell.getElement(); + cell.setText(getColumnText(element, cell.getColumnIndex())); + // Image image = getImage(element); + // cell.setImage(image); + // cell.setBackground(getBackground(element)); + // cell.setForeground(getForeground(element)); + // cell.setFont(getFont(element)); + } + + public String getColumnText(Object element, int columnIndex) { + try { + if (element instanceof Property) { + Property prop = (Property) element; + if (prop.isMultiple()) { + switch (columnIndex) { + case COLUMN_PROPERTY: + return prop.getName(); + case COLUMN_VALUE: + // Corresponding values are listed on children + return ""; + case COLUMN_ATTRIBUTES: + return JcrUtils.getPropertyDefinitionAsString(prop); + } + } else { + switch (columnIndex) { + case COLUMN_PROPERTY: + return prop.getName(); + case COLUMN_VALUE: + return formatValueAsString(prop.getValue()); + case COLUMN_ATTRIBUTES: + return JcrUtils.getPropertyDefinitionAsString(prop); + } + } + } else if (element instanceof Value) { + Value val = (Value) element; + + switch (columnIndex) { + case COLUMN_PROPERTY: + // Nothing to show + return ""; + case COLUMN_VALUE: + return formatValueAsString(val); + case COLUMN_ATTRIBUTES: + // Corresponding attributes are listed on the parent + return ""; + } + } + + } catch (RepositoryException re) { + throw new ArgeoException( + "Unexepected error while getting property values", re); + } + return null; + } + + private String formatValueAsString(Value value) { + // TODO enhance this method + try { + String strValue; + + if (value.getType() == PropertyType.BINARY) + strValue = ""; + else if (value.getType() == PropertyType.DATE) + strValue = timeFormatter.format(value.getDate().getTime()); + else + strValue = value.getString(); + return strValue; + } catch (RepositoryException e) { + throw new ArgeoException("unexpected error while formatting value", + e); + } + } +} diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/utils/JcrUiUtils.java b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/utils/JcrUiUtils.java index c7287cf85..2b76f04b8 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/utils/JcrUiUtils.java +++ b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/utils/JcrUiUtils.java @@ -38,6 +38,14 @@ public class JcrUiUtils { re); } } + + /** + * Insure that a model element is inline with the underlying data by + * cleaning the corresponding subtree and building it again. + */ + public static void forceRebuild(TreeParent element) { + // TODO implement this method if needed. + } /** * Workaround to get the alias of the repository that contains the given * element. As we cannot browse the UI tree upward we recursively browse it diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/views/GenericJcrBrowser.java b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/views/GenericJcrBrowser.java index da015010f..2274644d9 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/views/GenericJcrBrowser.java +++ b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/views/GenericJcrBrowser.java @@ -64,7 +64,6 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { // Manage documents // private JcrFileProvider jcrFileProvider; - // private FileHandler fileHandler; @Override diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/resources/org/argeo/jcr/ui/explorer/messages.properties b/server/plugins/org.argeo.jcr.ui.explorer/src/main/resources/org/argeo/jcr/ui/explorer/messages.properties index 9fd9db10d..3023c523f 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/src/main/resources/org/argeo/jcr/ui/explorer/messages.properties +++ b/server/plugins/org.argeo.jcr.ui.explorer/src/main/resources/org/argeo/jcr/ui/explorer/messages.properties @@ -6,8 +6,8 @@ errorUnvalidNtFolderNodeType= Error: folder can only be created on a Jcr Node warningInvalidNodeToImport=Can only import to a node warningInvalidMultipleSelection=This functionality is implemented only on a single node for the time being. -warningUnversionableNode= Warning: Current node is not versionable. -warningNoChildNode= Warning: current node has no children. +warningUnversionableNode= Current node is not versionable. +warningNoChildNode= Current node has no child. ## Commands getNodeSizeCmdLbl= Get approx. size @@ -17,7 +17,7 @@ addFolderNodeCmdLbl= Add Folder nodeEditorLbl=Generic node editor genericNodePageTitle=Properties childNodesPageTitle=Children -nodeRightsManagementPageTitle=Permissions +nodeRightsManagementPageTitle=Rights nodeVersionHistoryPageTitle=History # History