package org.argeo.cms.maintenance;
-import static javax.jcr.Node.JCR_CONTENT;
import static org.eclipse.swt.SWT.RIGHT;
import java.text.DateFormat;
import javax.jcr.Value;
import org.argeo.cms.CmsException;
-import org.argeo.cms.CmsTypes;
-import org.argeo.cms.text.Img;
import org.argeo.cms.ui.CmsUiProvider;
import org.argeo.cms.util.CmsLink;
import org.argeo.cms.util.CmsUtils;
import org.argeo.cms.widgets.EditableImage;
+import org.argeo.cms.widgets.Img;
import org.argeo.jcr.JcrUtils;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.ILazyContentProvider;
private final static String BROWSE_PREFIX = "browse#";
private final static int THUMBNAIL_WIDTH = 400;
private final static int COLUMN_WIDTH = 160;
- private DateFormat timeFormatter = new SimpleDateFormat(
- "dd-MM-yyyy', 'HH:mm");
+ private DateFormat timeFormatter = new SimpleDateFormat("dd-MM-yyyy', 'HH:mm");
// keep a cache of the opened nodes
// Key is the path
private String initialPath;
@Override
- public Control createUi(Composite parent, Node context)
- throws RepositoryException {
+ public Control createUi(Composite parent, Node context) throws RepositoryException {
if (context == null)
// return null;
throw new CmsException("Context cannot be null");
return null;
}
- private void createBrowserPart(Composite parent, Node context)
- throws RepositoryException {
+ private void createBrowserPart(Composite parent, Node context) throws RepositoryException {
GridLayout layout = CmsUtils.noSpaceGridLayout();
parent.setLayout(layout);
Composite filterCmp = new Composite(parent, SWT.NO_FOCUS);
addFilterPanel(filterCmp);
// scrolled composite
- scrolledCmp = new ScrolledComposite(parent, SWT.H_SCROLL | SWT.BORDER
- | SWT.NO_FOCUS);
+ scrolledCmp = new ScrolledComposite(parent, SWT.H_SCROLL | SWT.BORDER | SWT.NO_FOCUS);
scrolledCmp.setLayoutData(CmsUtils.fillAll());
scrolledCmp.setExpandVertical(true);
scrolledCmp.setExpandHorizontal(true);
@Override
public void controlResized(ControlEvent e) {
Rectangle r = scrolledCmp.getClientArea();
- scrolledCmp.setMinSize(colViewer.computeSize(SWT.DEFAULT,
- r.height));
+ scrolledCmp.setMinSize(colViewer.computeSize(SWT.DEFAULT, r.height));
}
});
initExplorer(colViewer, context);
}
- private Control initExplorer(Composite parent, Node context)
- throws RepositoryException {
+ private Control initExplorer(Composite parent, Node context) throws RepositoryException {
parent.setLayout(CmsUtils.noSpaceGridLayout());
createBrowserColumn(parent, context);
return null;
}
- private Control createBrowserColumn(Composite parent, Node context)
- throws RepositoryException {
+ private Control createBrowserColumn(Composite parent, Node context) throws RepositoryException {
// TODO style is not correctly managed.
- FilterEntitiesVirtualTable table = new FilterEntitiesVirtualTable(
- parent, SWT.BORDER | SWT.NO_FOCUS, context);
+ FilterEntitiesVirtualTable table = new FilterEntitiesVirtualTable(parent, SWT.BORDER | SWT.NO_FOCUS, context);
// CmsUtils.style(table, ArgeoOrgStyle.browserColumn.style());
table.filterList("*");
table.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, false, true));
// boolean altPressed = (e.stateMask & SWT.ALT) != 0;
FilterEntitiesVirtualTable currTable = null;
if (currEdited != null) {
- FilterEntitiesVirtualTable table = browserCols
- .get(getPath(currEdited));
+ FilterEntitiesVirtualTable table = browserCols.get(getPath(currEdited));
if (table != null && !table.isDisposed())
currTable = table;
}
currTable.setFocus();
else if (e.keyCode == SWT.BS) {
if (filterTxt.getText().equals("")
- && !(getPath(currEdited).equals("/") || getPath(
- currEdited).equals(initialPath))) {
+ && !(getPath(currEdited).equals("/") || getPath(currEdited).equals(initialPath))) {
setEdited(currEdited.getParent());
e.doit = false;
filterTxt.setFocus();
}
} else if (e.keyCode == SWT.TAB && !shiftPressed) {
- if (currEdited.getNodes(filterTxt.getText() + "*")
- .getSize() == 1) {
- setEdited(currEdited.getNodes(
- filterTxt.getText() + "*").nextNode());
+ if (currEdited.getNodes(filterTxt.getText() + "*").getSize() == 1) {
+ setEdited(currEdited.getNodes(filterTxt.getText() + "*").nextNode());
}
filterTxt.setFocus();
e.doit = false;
}
} catch (RepositoryException e1) {
- throw new CmsException(
- "Unexpected error in key management for "
- + currEdited + "with filter "
- + filterTxt.getText(), e1);
+ throw new CmsException("Unexpected error in key management for " + currEdited + "with filter "
+ + filterTxt.getText(), e1);
}
}
currParPath = JcrUtils.parentPath(currNodePath);
if ("".equals(currParPath))
currParPath = "/";
-
-
-
Object[][] colMatrix = new Object[browserCols.size()][2];
// workaround for same name siblings
// fix me weird side effect when we go left or click on anb
// already selected, unfocused node
- if (leaveOpened
- && (path.lastIndexOf("/") == 0
- && currNodePath.lastIndexOf("/") == 0 || JcrUtils
- .parentPath(path).equals(
- JcrUtils.parentPath(currNodePath))))
- leaveOpened = JcrUtils.lastPathElement(path).equals(
- JcrUtils.lastPathElement(currNodePath));
+ if (leaveOpened && (path.lastIndexOf("/") == 0 && currNodePath.lastIndexOf("/") == 0
+ || JcrUtils.parentPath(path).equals(JcrUtils.parentPath(currNodePath))))
+ leaveOpened = JcrUtils.lastPathElement(path).equals(JcrUtils.lastPathElement(currNodePath));
if (!leaveOpened)
k = i;
if (!browserCols.containsKey(currNodePath))
createBrowserColumn(colViewer, node);
- colViewer.setLayout(CmsUtils.noSpaceGridLayout(new GridLayout(
- browserCols.size(), false)));
+ colViewer.setLayout(CmsUtils.noSpaceGridLayout(new GridLayout(browserCols.size(), false)));
// colViewer.pack();
colViewer.layout();
// also resize the scrolled composite
if (!fromOutside)
if (currEdited != null) {
String filter = filterTxt.getText() + "*";
- FilterEntitiesVirtualTable table = browserCols
- .get(getPath(currEdited));
+ FilterEntitiesVirtualTable table = browserCols.get(getPath(currEdited));
if (table != null && !table.isDisposed())
table.filterList(filter);
}
private Point imageWidth = new Point(250, 0);
/**
- * Recreates the content of the box that displays information about the
- * current selected node.
+ * Recreates the content of the box that displays information about the current
+ * selected node.
*/
- private Control createNodeView(Composite parent, Node context)
- throws RepositoryException {
+ private Control createNodeView(Composite parent, Node context) throws RepositoryException {
parent.setLayout(new GridLayout(2, false));
if (isImg(context)) {
EditableImage image = new Img(parent, RIGHT, context, imageWidth);
- image.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true,
- false, 2, 1));
+ image.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, false, 2, 1));
}
// Name and primary type
Label contextL = new Label(parent, SWT.NONE);
contextL.setData(RWT.MARKUP_ENABLED, true);
contextL.setText("<b>" + context.getName() + "</b>");
- new Label(parent, SWT.NONE).setText(context.getPrimaryNodeType()
- .getName());
+ new Label(parent, SWT.NONE).setText(context.getPrimaryNodeType().getName());
// Children
for (NodeIterator nIt = context.getNodes(); nIt.hasNext();) {
Node child = nIt.nextNode();
- new CmsLink(child.getName(), BROWSE_PREFIX + child.getPath())
- .createUi(parent, context);
- new Label(parent, SWT.NONE).setText(child.getPrimaryNodeType()
- .getName());
+ new CmsLink(child.getName(), BROWSE_PREFIX + child.getPath()).createUi(parent, context);
+ new Label(parent, SWT.NONE).setText(child.getPrimaryNodeType().getName());
}
// Properties
Property property = pIt.nextProperty();
Label label = new Label(parent, SWT.NONE);
label.setText(property.getName());
- label.setToolTipText(JcrUtils
- .getPropertyDefinitionAsString(property));
+ label.setToolTipText(JcrUtils.getPropertyDefinitionAsString(property));
new Label(parent, SWT.NONE).setText(getPropAsString(property));
}
}
private boolean isImg(Node node) throws RepositoryException {
- return node.hasNode(JCR_CONTENT) && node.isNodeType(CmsTypes.CMS_IMAGE);
+ // TODO support images
+ return false;
+// return node.hasNode(JCR_CONTENT) && node.isNodeType(CmsTypes.CMS_IMAGE);
}
- private String getPropAsString(Property property)
- throws RepositoryException {
+ private String getPropAsString(Property property) throws RepositoryException {
String result = "";
if (property.isMultiple()) {
result = getMultiAsString(property, ", ");
return result;
}
- private String getMultiAsString(Property property, String separator)
- throws RepositoryException {
+ private String getMultiAsString(Property property, String separator) throws RepositoryException {
if (separator == null)
separator = "; ";
Value[] values = property.getValues();
if (entityViewer.getSelection().isEmpty()) {
Object first = entityViewer.getElementAt(0);
if (first != null) {
- entityViewer.setSelection(new StructuredSelection(first),
- true);
+ entityViewer.setSelection(new StructuredSelection(first), true);
}
}
return entityViewer.getTable().setFocus();
NodeIterator nit = context.getNodes(filter);
refreshFilteredList(nit);
} catch (RepositoryException e) {
- throw new CmsException("Unable to filter " + getNode()
- + " children with filter " + filter, e);
+ throw new CmsException("Unable to filter " + getNode() + " children with filter " + filter, e);
}
}
- public FilterEntitiesVirtualTable(Composite parent, int style,
- Node context) {
+ public FilterEntitiesVirtualTable(Composite parent, int style, Node context) {
super(parent, SWT.NO_FOCUS);
this.context = context;
populate();
CmsUtils.style(table, MaintenanceStyles.BROWSER_COLUMN);
// first column
- TableViewerColumn column = new TableViewerColumn(entityViewer,
- SWT.NONE);
+ TableViewerColumn column = new TableViewerColumn(entityViewer, SWT.NONE);
TableColumn tcol = column.getColumn();
tcol.setWidth(COLUMN_WIDTH);
tcol.setResizable(true);
column.setLabelProvider(new SimpleNameLP());
entityViewer.setContentProvider(new MyLazyCP(entityViewer));
- entityViewer
- .addSelectionChangedListener(new ISelectionChangedListener() {
-
- @Override
- public void selectionChanged(SelectionChangedEvent event) {
- IStructuredSelection selection = (IStructuredSelection) entityViewer
- .getSelection();
- if (selection.isEmpty())
- return;
- else
- setEdited((Node) selection.getFirstElement());
+ entityViewer.addSelectionChangedListener(new ISelectionChangedListener() {
- }
- });
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ IStructuredSelection selection = (IStructuredSelection) entityViewer.getSelection();
+ if (selection.isEmpty())
+ return;
+ else
+ setEdited((Node) selection.getFirstElement());
+
+ }
+ });
table.addKeyListener(new KeyListener() {
private static final long serialVersionUID = -330694313896036230L;
@Override
public void keyPressed(KeyEvent e) {
- IStructuredSelection selection = (IStructuredSelection) entityViewer
- .getSelection();
+ IStructuredSelection selection = (IStructuredSelection) entityViewer.getSelection();
Node selected = null;
if (!selection.isEmpty())
selected = ((Node) selection.getFirstElement());
}
}
} catch (RepositoryException ie) {
- throw new CmsException("Error while managing arrow "
- + "events in the browser for " + selected, ie);
+ throw new CmsException("Error while managing arrow " + "events in the browser for " + selected,
+ ie);
}
}
});
public void dispose() {
}
- public void inputChanged(Viewer viewer, Object oldInput,
- Object newInput) {
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// IMPORTANT: don't forget this: an exception will be thrown if
// a selected object is not part of the results anymore.
viewer.setSelection(null);
try {
return curr.getName();
} catch (RepositoryException e) {
- throw new CmsException("Unable to get name for"
- + curr);
+ throw new CmsException("Unable to get name for" + curr);
}
}
return super.getText(element);