From: bsinou Date: Fri, 20 Jan 2017 19:20:55 +0000 (+0100) Subject: Fix glitches X-Git-Tag: argeo-commons-2.1.56~2 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=2ba26b1bbb2b69f393217f3ee5a28c3216d184c7;p=lgpl%2Fargeo-commons.git Fix glitches --- diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/ChildNodesPage.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/ChildNodesPage.java index 1464f5735..742a90a15 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/ChildNodesPage.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/ChildNodesPage.java @@ -18,8 +18,8 @@ package org.argeo.cms.ui.workbench.internal.jcr.parts; import javax.jcr.Node; import org.argeo.cms.ui.workbench.WorkbenchUiPlugin; -import org.argeo.cms.ui.workbench.internal.jcr.NodeLabelProvider; import org.argeo.cms.ui.workbench.internal.jcr.JcrTreeContentProvider; +import org.argeo.cms.ui.workbench.internal.jcr.NodeLabelProvider; import org.argeo.cms.ui.workbench.jcr.DefaultNodeEditor; import org.argeo.eclipse.ui.EclipseUiException; import org.argeo.eclipse.ui.EclipseUiUtils; @@ -38,17 +38,12 @@ import org.eclipse.ui.forms.editor.FormEditor; import org.eclipse.ui.forms.editor.FormPage; import org.eclipse.ui.forms.widgets.ScrolledForm; -/** - * List all childs of the current node and brings some browsing capabilities - * accross the repository - */ +/** List all children of the current node */ public class ChildNodesPage extends FormPage { // private final static Log log = LogFactory.getLog(ChildNodesPage.class); - // business objects private Node currentNode; - // this page UI components private JcrTreeContentProvider nodeContentProvider; private TreeViewer nodesViewer; @@ -61,26 +56,24 @@ public class ChildNodesPage extends FormPage { try { ScrolledForm form = managedForm.getForm(); form.setText(WorkbenchUiPlugin.getMessage("childNodesPageTitle")); - Composite body = form.getBody(); + Composite innerBox = form.getBody(); + // Composite innerBox = new Composite(body, SWT.NO_FOCUS); GridLayout twt = new GridLayout(1, false); twt.marginWidth = twt.marginHeight = 5; - body.setLayout(twt); + innerBox.setLayout(twt); if (!currentNode.hasNodes()) { - managedForm.getToolkit().createLabel(body, - WorkbenchUiPlugin.getMessage("warningNoChildNode")); + managedForm.getToolkit().createLabel(innerBox, WorkbenchUiPlugin.getMessage("warningNoChildNode")); } else { nodeContentProvider = new JcrTreeContentProvider(); - nodesViewer = createNodeViewer(body, nodeContentProvider); + nodesViewer = createNodeViewer(innerBox, nodeContentProvider); nodesViewer.setInput(currentNode); } } catch (Exception e) { - throw new EclipseUiException( - "Unexpected error while creating child node page", e); + throw new EclipseUiException("Cannot create children page for " + currentNode, e); } } - protected TreeViewer createNodeViewer(Composite parent, - final ITreeContentProvider nodeContentProvider) { + protected TreeViewer createNodeViewer(Composite parent, final ITreeContentProvider nodeContentProvider) { final TreeViewer tmpNodeViewer = new TreeViewer(parent, SWT.BORDER); Tree tree = tmpNodeViewer.getTree(); @@ -97,20 +90,15 @@ public class ChildNodesPage extends FormPage { public void doubleClick(DoubleClickEvent event) { if (event.getSelection() == null || event.getSelection().isEmpty()) return; - Object obj = ((IStructuredSelection) event.getSelection()) - .getFirstElement(); + Object obj = ((IStructuredSelection) event.getSelection()).getFirstElement(); if (obj instanceof Node) { Node node = (Node) obj; try { - GenericNodeEditorInput gnei = new GenericNodeEditorInput( - node); - WorkbenchUiPlugin.getDefault().getWorkbench() - .getActiveWorkbenchWindow().getActivePage() + GenericNodeEditorInput gnei = new GenericNodeEditorInput(node); + WorkbenchUiPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage() .openEditor(gnei, DefaultNodeEditor.ID); } catch (PartInitException pie) { - throw new EclipseUiException( - "Unexepected exception while opening node editor", - pie); + throw new EclipseUiException("Cannot open editor for " + node, pie); } } } diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/GenericNodeEditorInput.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/GenericNodeEditorInput.java index bfb207155..43866945c 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/GenericNodeEditorInput.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/GenericNodeEditorInput.java @@ -28,8 +28,7 @@ public class GenericNodeEditorInput implements IEditorInput { private final Node currentNode; // Caches key properties at creation time to avoid Exception at recovering - // time - // when the session has been closed + // time when the session has been closed private String path; private String uid; private String name; @@ -41,7 +40,7 @@ public class GenericNodeEditorInput implements IEditorInput { uid = currentNode.getIdentifier(); path = currentNode.getPath(); } catch (RepositoryException re) { - throw new EclipseUiException("unexpected error while getting node key values at creation time", re); + throw new EclipseUiException("Cannot cache the key properties for " + currentNode, re); } } @@ -83,7 +82,7 @@ public class GenericNodeEditorInput implements IEditorInput { } /** - * equals method based on UID that is unique within a workspace and path of + * Equals method based on UID that is unique within a workspace and path of * the node, thus 2 shared node that have same UID as defined in the spec * but 2 different paths will open two distinct editors. * diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/GenericNodePage.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/GenericNodePage.java index ea1a64402..f4993ac1e 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/GenericNodePage.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/GenericNodePage.java @@ -47,8 +47,9 @@ import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.ScrolledForm; /** - * Main node editor page. Lists all properties of the current node and enable - * access and editing for some of them. + * Work-In-Progress Node editor page: provides edition feature on String + * properties for power users. TODO implement manual modification of all + * property types. */ public class GenericNodePage extends FormPage implements WorkbenchConstants { @@ -75,124 +76,94 @@ public class GenericNodePage extends FormPage implements WorkbenchConstants { protected void createFormContent(IManagedForm managedForm) { tk = managedForm.getToolkit(); ScrolledForm form = managedForm.getForm(); + Composite innerBox = form.getBody(); + // Composite innerBox = new Composite(form.getBody(), SWT.NO_FOCUS); GridLayout twt = new GridLayout(3, false); - twt.marginWidth = twt.marginHeight = 5; - - form.getBody().setLayout(twt); - createPropertiesPart(form.getBody()); + innerBox.setLayout(twt); + createPropertiesPart(innerBox); } 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(); + ListIterator it = modifyableProperties.listIterator(); while (it.hasNext()) { - // we only support Text controls for the time - // being + // we only support Text controls Text curControl = (Text) it.next(); String value = curControl.getText(); - currentNode.setProperty((String) curControl - .getData(JCR_PROPERTY_NAME), value); + 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); if (currentNode.getSession().hasPendingChanges()) currentNode.getSession().save(); + super.commit(onSave); } } catch (RepositoryException re) { - throw new EclipseUiException( - "Unexpected error while saving properties", re); + throw new EclipseUiException("Cannot save properties on " + currentNode, re); } } }; + PropertyIterator pi = currentNode.getProperties(); while (pi.hasNext()) { Property prop = pi.nextProperty(); addPropertyLine(parent, part, prop); } - getManagedForm().addPart(part); } catch (RepositoryException re) { - throw new EclipseUiException( - "Error during creation of network details section", re); + throw new EclipseUiException("Cannot display properties for " + currentNode, re); } - } - private void addPropertyLine(Composite parent, AbstractFormPart part, - Property prop) { + private void addPropertyLine(Composite parent, AbstractFormPart part, Property prop) { try { tk.createLabel(parent, prop.getName()); - tk.createLabel(parent, - "[" + JcrUtils.getPropertyDefinitionAsString(prop) + "]"); + 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 EclipseUiException("Cannot get property " + prop, re); + throw new EclipseUiException("Cannot display 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 EclipseUiException( - "Unexpected error while formatting read only property value", - re); - } + private String formatReadOnlyPropertyValue(Property prop) throws RepositoryException { + 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; } - private Control addModifyableValueWidget(Composite parent, - AbstractFormPart part, Property prop) { + private Control addModifyableValueWidget(Composite parent, AbstractFormPart part, Property prop) + throws RepositoryException { GridData gd; - try { - if (prop.getType() == PropertyType.STRING && !prop.isMultiple()) { - Text txt = tk.createText(parent, prop.getString(), SWT.WRAP - | SWT.MULTI); - 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 EclipseUiException( - "Unexpected error while formatting read only property value", - re); + if (prop.getType() == PropertyType.STRING && !prop.isMultiple()) { + Text txt = tk.createText(parent, prop.getString(), SWT.WRAP | SWT.MULTI); + 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; } private class ModifiedFieldListener implements ModifyListener { @@ -207,5 +178,4 @@ public class GenericNodePage extends FormPage implements WorkbenchConstants { formPart.markDirty(); } } - } diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/GenericPropertyPage.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/GenericPropertyPage.java index a38e30cd1..83f9c595a 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/GenericPropertyPage.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/GenericPropertyPage.java @@ -61,13 +61,13 @@ public class GenericPropertyPage extends FormPage implements WorkbenchConstants protected void createFormContent(IManagedForm managedForm) { ScrolledForm form = managedForm.getForm(); form.setText(WorkbenchUiPlugin.getMessage("genericNodePageTitle")); - - Composite body = form.getBody(); + Composite innerBox = form.getBody(); + //Composite innerBox = new Composite(body, SWT.NO_FOCUS); FillLayout layout = new FillLayout(); layout.marginHeight = 5; layout.marginWidth = 5; - body.setLayout(layout); - createComplexTree(body); + innerBox.setLayout(layout); + createComplexTree(innerBox); // TODO TreeColumnLayout triggers a scroll issue with the form: // The inside body is always to big and a scroll bar is shown // Composite tableCmp = new Composite(body, SWT.NO_FOCUS); diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/NodePrivilegesPage.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/NodePrivilegesPage.java index f71c41c3b..5aee1f351 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/NodePrivilegesPage.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/NodePrivilegesPage.java @@ -43,7 +43,7 @@ import org.eclipse.ui.forms.widgets.ScrolledForm; /** * Display and edit a given node privilege. For the time being it is completely - * JackRabbit specific (and hardcoded for this) and will display an empty page + * JackRabbit specific (and hard coded for this) and will display an empty page * if using any other implementation */ public class NodePrivilegesPage extends FormPage { @@ -133,9 +133,6 @@ public class NodePrivilegesPage extends FormPage { // Relevant node column = createTableViewerColumn(viewer, "Relevant node", 300); column.setLabelProvider(new ColumnLabelProvider() { - /** - * - */ private static final long serialVersionUID = 4245522992038244849L; public String getText(Object element) { diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/NodeVersionHistoryPage.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/NodeVersionHistoryPage.java index 15cef3ef3..d291d16e7 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/NodeVersionHistoryPage.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/parts/NodeVersionHistoryPage.java @@ -63,9 +63,8 @@ import org.eclipse.ui.forms.widgets.TableWrapLayout; * Offers two main sections : one to display a text area with a summary of all * variations between a version and its predecessor and one tree view that * enable browsing - * */ -public class NodeVersionHistoryPage extends FormPage implements - WorkbenchConstants { + */ +public class NodeVersionHistoryPage extends FormPage implements WorkbenchConstants { // private final static Log log = LogFactory // .getLog(NodeVersionHistoryPage.class); @@ -80,8 +79,7 @@ public class NodeVersionHistoryPage extends FormPage implements private TreeViewer nodesViewer; private FormToolkit tk; - public NodeVersionHistoryPage(FormEditor editor, String title, - Node currentNode) { + public NodeVersionHistoryPage(FormEditor editor, String title, Node currentNode) { super(editor, "NodeVersionHistoryPage", title); this.currentNode = currentNode; } @@ -90,17 +88,17 @@ public class NodeVersionHistoryPage extends FormPage implements ScrolledForm form = managedForm.getForm(); form.setText(WorkbenchUiPlugin.getMessage("nodeVersionHistoryPageTitle")); tk = managedForm.getToolkit(); - Composite body = form.getBody(); + Composite innerBox = form.getBody(); + // Composite innerBox = new Composite(body, SWT.NO_FOCUS); GridLayout twt = new GridLayout(1, false); twt.marginWidth = twt.marginHeight = 5; - body.setLayout(twt); + innerBox.setLayout(twt); try { if (!currentNode.isNodeType(NodeType.MIX_VERSIONABLE)) { - tk.createLabel(body, - WorkbenchUiPlugin.getMessage("warningUnversionableNode")); + tk.createLabel(innerBox, WorkbenchUiPlugin.getMessage("warningUnversionableNode")); } else { - createHistorySection(body); - createTreeSection(body); + createHistorySection(innerBox); + createTreeSection(innerBox); } } catch (RepositoryException e) { throw new EclipseUiException("Unable to check if node is versionable", e); @@ -123,19 +121,15 @@ public class NodeVersionHistoryPage extends FormPage implements nodesViewer.setInput(currentNode); } - protected TreeViewer createNodeViewer(Composite parent, - final ITreeContentProvider nodeContentProvider) { + protected TreeViewer createNodeViewer(Composite parent, final ITreeContentProvider nodeContentProvider) { final TreeViewer tmpNodeViewer = new TreeViewer(parent, SWT.MULTI); - tmpNodeViewer.getTree().setLayoutData( - new GridData(SWT.FILL, SWT.FILL, true, true)); + tmpNodeViewer.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); tmpNodeViewer.setContentProvider(nodeContentProvider); tmpNodeViewer.setLabelProvider(new VersionLabelProvider()); - tmpNodeViewer - .addDoubleClickListener(new JcrDClickListener( - tmpNodeViewer)); + tmpNodeViewer.addDoubleClickListener(new JcrDClickListener(tmpNodeViewer)); return tmpNodeViewer; } @@ -148,11 +142,10 @@ public class NodeVersionHistoryPage extends FormPage implements section.setLayout(twt); // Set title of the section - section.setText(WorkbenchUiPlugin - .getMessage("versionHistorySectionTitle")); + section.setText(WorkbenchUiPlugin.getMessage("versionHistorySectionTitle")); - final Text styledText = tk.createText(section, "", SWT.FULL_SELECTION - | SWT.BORDER | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL); + final Text styledText = tk.createText(section, "", + SWT.FULL_SELECTION | SWT.BORDER | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL); section.setClient(styledText); styledText.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.FILL_GRAB)); refreshHistory(styledText); @@ -185,14 +178,11 @@ public class NodeVersionHistoryPage extends FormPage implements if (lst.get(i).getUserId() != null) main.append("UserId : " + lst.get(i).getUserId()); - if (lst.get(i).getUserId() != null - && lst.get(i).getUpdateTime() != null) + if (lst.get(i).getUserId() != null && lst.get(i).getUpdateTime() != null) main.append(", "); if (lst.get(i).getUpdateTime() != null) - main.append("Date : " - + timeFormatter.format(lst.get(i).getUpdateTime() - .getTime()) + ")\n"); + main.append("Date : " + timeFormatter.format(lst.get(i).getUpdateTime().getTime()) + ")\n"); StringBuffer buf = new StringBuffer(""); Map diffs = lst.get(i).getDiffs(); @@ -206,15 +196,13 @@ public class NodeVersionHistoryPage extends FormPage implements if (refValue != null) { if (refValue.getType() == PropertyType.DATE) { - refValueStr = timeFormatter.format(refValue - .getDate().getTime()); + refValueStr = timeFormatter.format(refValue.getDate().getTime()); } else refValueStr = refValue.getString(); } if (newValue != null) { if (newValue.getType() == PropertyType.DATE) { - newValueStr = timeFormatter.format(newValue - .getDate().getTime()); + newValueStr = timeFormatter.format(newValue.getDate().getTime()); } else newValueStr = newValue.getString(); } @@ -225,8 +213,7 @@ public class NodeVersionHistoryPage extends FormPage implements buf.append(" > "); buf.append(newValueStr); buf.append("\n"); - } else if (pd.getType() == PropertyDiff.ADDED - && !"".equals(newValueStr)) { + } else if (pd.getType() == PropertyDiff.ADDED && !"".equals(newValueStr)) { // we don't list property that have been added with an // empty string as value buf.append(prop).append(": "); @@ -252,10 +239,8 @@ public class NodeVersionHistoryPage extends FormPage implements public List listHistoryDiff() { try { List res = new ArrayList(); - VersionManager versionManager = currentNode.getSession() - .getWorkspace().getVersionManager(); - VersionHistory versionHistory = versionManager - .getVersionHistory(currentNode.getPath()); + VersionManager versionManager = currentNode.getSession().getWorkspace().getVersionManager(); + VersionHistory versionHistory = versionManager.getVersionHistory(currentNode.getPath()); VersionIterator vit = versionHistory.getAllLinearVersions(); while (vit.hasNext()) { @@ -270,28 +255,21 @@ public class NodeVersionHistoryPage extends FormPage implements } if (predecessor == null) {// original } else { - Map diffs = JcrUtils.diffProperties( - predecessor.getFrozenNode(), node); + Map diffs = JcrUtils.diffProperties(predecessor.getFrozenNode(), node); if (!diffs.isEmpty()) { String lastUserName = null; Calendar lastUpdate = null; try { - if (currentNode - .isNodeType(NodeType.MIX_LAST_MODIFIED)) { - lastUserName = node.getProperty( - Property.JCR_LAST_MODIFIED_BY) - .getString(); - lastUpdate = node.getProperty( - Property.JCR_LAST_MODIFIED).getDate(); + if (currentNode.isNodeType(NodeType.MIX_LAST_MODIFIED)) { + lastUserName = node.getProperty(Property.JCR_LAST_MODIFIED_BY).getString(); + lastUpdate = node.getProperty(Property.JCR_LAST_MODIFIED).getDate(); } else - lastUpdate = version.getProperty( - Property.JCR_CREATED).getDate(); + lastUpdate = version.getProperty(Property.JCR_CREATED).getDate(); } catch (Exception e) { // Silent that info is optional } - VersionDiff vd = new VersionDiff(lastUserName, - lastUpdate, diffs); + VersionDiff vd = new VersionDiff(lastUserName, lastUpdate, diffs); res.add(vd); } }