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;
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;
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();
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);
}
}
}
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;
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);
}
}
}
/**
- * 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.
*
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 {
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<Control> it = modifyableProperties
- .listIterator();
+ ListIterator<Control> 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 = "<binary>";
- 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 = "<binary>";
+ 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 {
formPart.markDirty();
}
}
-
}
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);
/**
* 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 {
// Relevant node
column = createTableViewerColumn(viewer, "Relevant node", 300);
column.setLabelProvider(new ColumnLabelProvider() {
- /**
- *
- */
private static final long serialVersionUID = 4245522992038244849L;
public String getText(Object element) {
* 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);
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;
}
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);
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;
}
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);
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<String, PropertyDiff> diffs = lst.get(i).getDiffs();
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();
}
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(": ");
public List<VersionDiff> listHistoryDiff() {
try {
List<VersionDiff> res = new ArrayList<VersionDiff>();
- 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()) {
}
if (predecessor == null) {// original
} else {
- Map<String, PropertyDiff> diffs = JcrUtils.diffProperties(
- predecessor.getFrozenNode(), node);
+ Map<String, PropertyDiff> 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);
}
}