Search in sources :

Example 1 with SyncDir

use of org.apache.sling.ide.eclipse.ui.nav.model.SyncDir in project sling by apache.

the class JcrContentContentProvider method getPipelinedChildren.

@Override
public void getPipelinedChildren(Object aParent, Set theCurrentChildren) {
    if (aParent instanceof IProject) {
        IProject project = (IProject) aParent;
        if (ProjectHelper.isContentProject(project)) {
            for (Iterator<?> it = theCurrentChildren.iterator(); it.hasNext(); ) {
                Object aChild = (Object) it.next();
                if (aChild instanceof IPackageFragmentRoot) {
                    IPackageFragmentRoot ipfr = (IPackageFragmentRoot) aChild;
                    IResource res = ipfr.getResource();
                    IFolder syncDir = getSyncDir(project);
                    if (res != null && syncDir != null && res.equals(syncDir)) {
                        // then remove this one folder provided via j2ee content provider
                        // reason: we are showing it too via the sling content provider
                        it.remove();
                        // and we can break here since there's only one syncdir currently
                        break;
                    }
                }
            }
        }
        Object[] children = projectGetChildren(project);
        if (children != null && children.length > 0) {
            theCurrentChildren.addAll(Arrays.asList(children));
        }
        return;
    } else if (aParent instanceof SyncDir) {
        theCurrentChildren.clear();
        Object[] children = getChildren(aParent);
        if (children != null) {
            theCurrentChildren.addAll(Arrays.asList(children));
        }
    }
}
Also used : SyncDir(org.apache.sling.ide.eclipse.ui.nav.model.SyncDir) IProject(org.eclipse.core.resources.IProject) IResource(org.eclipse.core.resources.IResource) IPackageFragmentRoot(org.eclipse.jdt.core.IPackageFragmentRoot) IFolder(org.eclipse.core.resources.IFolder)

Example 2 with SyncDir

use of org.apache.sling.ide.eclipse.ui.nav.model.SyncDir in project sling by apache.

the class JcrPropertiesView method refreshContent.

void refreshContent() {
    final Object input = viewer.getInput();
    if (input != null && input instanceof JcrNode) {
        JcrNode jcrnode = (JcrNode) input;
        SyncDir syncDir = jcrnode.getSyncDir();
        JcrNode newnode = syncDir.getNode(jcrnode.getJcrPath());
        if (newnode != null) {
            viewer.setInput(newnode);
            if (lastEditedNewPropertyName != null) {
                for (int i = 0; ; i++) {
                    Object element = viewer.getElementAt(i);
                    if (element == null) {
                        break;
                    }
                    final IPropertyDescriptor pd = (IPropertyDescriptor) element;
                    Map.Entry<String, Object> me = (Entry<String, Object>) pd.getId();
                    String key = me.getKey();
                    if (lastEditedNewPropertyName.equals(key)) {
                        // set the selection to this one
                        final int column;
                        if (lastEditedColumnId == ColumnId.NAME) {
                            column = 0;
                        } else if (lastEditedColumnId == ColumnId.TYPE) {
                            column = 1;
                        } else if (lastEditedColumnId == ColumnId.VALUE) {
                            column = 2;
                        } else if (lastEditedColumnId == ColumnId.MULTIPLE) {
                            column = 5;
                        } else {
                            throw new IllegalStateException("Unknown columnId=" + lastEditedColumnId);
                        }
                        Display.getDefault().asyncExec(new Runnable() {

                            @Override
                            public void run() {
                                try {
                                    // edit
                                    viewer.editElement(pd, column);
                                    // and cancel immediately - to get the selection right
                                    viewer.cancelEditing();
                                } catch (Exception e) {
                                    Activator.getDefault().getPluginLogger().error("Exception occured on edit/cancel: " + e, e);
                                }
                            }
                        });
                        break;
                    }
                }
            }
        }
    }
}
Also used : SyncDir(org.apache.sling.ide.eclipse.ui.nav.model.SyncDir) Point(org.eclipse.swt.graphics.Point) PartInitException(org.eclipse.ui.PartInitException) Entry(java.util.Map.Entry) JcrNode(org.apache.sling.ide.eclipse.ui.nav.model.JcrNode) IPropertyDescriptor(org.eclipse.ui.views.properties.IPropertyDescriptor) Map(java.util.Map)

Example 3 with SyncDir

use of org.apache.sling.ide.eclipse.ui.nav.model.SyncDir in project sling by apache.

the class JcrPropertiesView method createPartControl.

/**
	 * This is a callback that will allow us
	 * to create the viewer and initialize it.
	 */
public void createPartControl(Composite parent) {
    SyncDirManager.registerUpdateListener(new UpdateHandler() {

        @Override
        public void syncDirUpdated(SyncDir syncDir) {
            refreshContent();
        }
    });
    mainControl = new Composite(parent, SWT.NONE);
    final GridLayout gridLayout = new GridLayout(1, true);
    mainControl.setLayout(gridLayout);
    if (getViewSite() != null) {
        titleLabel = new Label(mainControl, SWT.WRAP);
        titleLabel.setText("");
        GridData data = new GridData(GridData.FILL_HORIZONTAL);
        titleLabel.setLayoutData(data);
        Label horizontalLine = new Label(mainControl, SWT.SEPARATOR | SWT.HORIZONTAL);
        data = new GridData(GridData.FILL_HORIZONTAL);
        horizontalLine.setLayoutData(data);
    }
    Font font;
    if (!JFaceResources.getFontRegistry().hasValueFor(TITLE_FONT)) {
        FontData[] fontData = JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT).getFontData();
        /* title font is 2pt larger than that used in the tabs. */
        fontData[0].setHeight(fontData[0].getHeight() + 2);
        JFaceResources.getFontRegistry().put(TITLE_FONT, fontData);
    }
    font = JFaceResources.getFont(TITLE_FONT);
    if (titleLabel != null) {
        titleLabel.setFont(font);
    }
    Composite tableParent = new Composite(mainControl, SWT.NONE);
    //        tableParent.setBackground(new Color(Display.getDefault(), 100,20,180));
    GridData tableLayoutData = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
    // shrink to min - table settings will resize to correct ratios
    tableLayoutData.widthHint = 1;
    tableLayoutData.heightHint = SWT.DEFAULT;
    tableParent.setLayoutData(tableLayoutData);
    TableColumnLayout tableLayout = new TableColumnLayout() {

        @Override
        protected Point computeSize(Composite composite, int wHint, int hHint, boolean flushCache) {
            Point p = super.computeSize(composite, wHint, hHint, flushCache);
            return new Point(p.x, p.y);
        }
    };
    tableParent.setLayout(tableLayout);
    viewer = new TableViewer(tableParent, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.HIDE_SELECTION | SWT.FULL_SELECTION);
    TableViewerFocusCellManager focusCellManager = new TableViewerFocusCellManager(viewer, new FocusCellOwnerDrawHighlighter(viewer), new CellNavigationStrategy());
    ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(viewer) {

        @Override
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            resetLastValueEdited();
            return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED && event.keyCode == SWT.CR) || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };
    int features = ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION | ColumnViewerEditor.KEEP_EDITOR_ON_DOUBLE_CLICK;
    TableViewerEditor.create(viewer, focusCellManager, actSupport, features);
    viewer.getTable().setLinesVisible(true);
    viewer.getTable().setHeaderVisible(true);
    viewer.setContentProvider(new ViewContentProvider());
    viewer.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            final ISelection selection = event.getSelection();
            if (selection instanceof IStructuredSelection) {
                IStructuredSelection iss = (IStructuredSelection) selection;
                if (iss.isEmpty()) {
                    deleteAction.setEnabled(false);
                } else {
                    deleteAction.setEnabled(true);
                }
            } else {
                deleteAction.setEnabled(false);
            }
        }
    });
    CellLabelProvider clp = new JcrCellLabelProvider(viewer);
    TableViewerColumn column0 = new TableViewerColumn(viewer, SWT.NONE);
    column0.getColumn().setText("Name");
    column0.getColumn().setResizable(true);
    column0.getColumn().setWidth(200);
    tableLayout.setColumnData(column0.getColumn(), new ColumnWeightData(30, 140));
    final TableViewerColumn column1 = new TableViewerColumn(viewer, SWT.NONE);
    column1.getColumn().setText("Type");
    column1.getColumn().setResizable(true);
    column1.getColumn().setWidth(300);
    column1.setLabelProvider(clp);
    tableLayout.setColumnData(column1.getColumn(), new ColumnWeightData(10, 80));
    final TableViewerColumn column2 = new TableViewerColumn(viewer, SWT.NONE);
    column2.getColumn().setText("Value");
    column2.getColumn().setResizable(true);
    column2.getColumn().setWidth(300);
    tableLayout.setColumnData(column2.getColumn(), new ColumnWeightData(70, 220));
    final TableViewerColumn column3 = new TableViewerColumn(viewer, SWT.NONE);
    column3.getColumn().setText("Protected");
    column3.getColumn().setResizable(true);
    column3.getColumn().setWidth(300);
    column3.setLabelProvider(clp);
    tableLayout.setColumnData(column3.getColumn(), new ColumnWeightData(5, 57));
    final TableViewerColumn column4 = new TableViewerColumn(viewer, SWT.NONE);
    column4.getColumn().setText("Mandatory");
    column4.getColumn().setResizable(true);
    column4.getColumn().setWidth(300);
    column4.setLabelProvider(clp);
    tableLayout.setColumnData(column4.getColumn(), new ColumnWeightData(5, 62));
    final TableViewerColumn column5 = new TableViewerColumn(viewer, SWT.NONE);
    column5.getColumn().setText("Multiple");
    column5.getColumn().setResizable(true);
    column5.getColumn().setWidth(300);
    column5.setLabelProvider(clp);
    tableLayout.setColumnData(column5.getColumn(), new ColumnWeightData(5, 82));
    final TableViewerColumn column6 = new TableViewerColumn(viewer, SWT.NONE);
    column6.getColumn().setText("Auto Created");
    column6.getColumn().setResizable(true);
    column6.getColumn().setWidth(300);
    column6.setLabelProvider(clp);
    tableLayout.setColumnData(column6.getColumn(), new ColumnWeightData(5, 77));
    column0.setLabelProvider(clp);
    column0.setEditingSupport(new JcrEditingSupport(this, viewer, ColumnId.NAME));
    column1.setLabelProvider(clp);
    column1.setEditingSupport(new JcrEditingSupport(this, viewer, ColumnId.TYPE));
    column2.setLabelProvider(clp);
    column2.setEditingSupport(new JcrEditingSupport(this, viewer, ColumnId.VALUE));
    column5.setEditingSupport(new JcrEditingSupport(this, viewer, ColumnId.MULTIPLE));
    // Create the help context id for the viewer's control
    PlatformUI.getWorkbench().getHelpSystem().setHelp(viewer.getControl(), "org.apache.sling.ide.eclipse-ui.viewer");
    makeActions();
    hookContextMenu();
    hookDoubleClickAction();
    contributeToActionBars();
    listener = new ISelectionListener() {

        @Override
        public void selectionChanged(IWorkbenchPart part, ISelection selection) {
            if (selection instanceof IStructuredSelection) {
                IStructuredSelection iss = (IStructuredSelection) selection;
                Object firstElem = iss.getFirstElement();
                if (firstElem instanceof JcrNode) {
                    JcrNode jcrNode = (JcrNode) firstElem;
                    setInput(jcrNode);
                    return;
                }
            }
        }
    };
    if (getViewSite() != null) {
        getViewSite().getPage().addSelectionListener(listener);
        final ISelection selection = getViewSite().getPage().getSelection();
        Display.getCurrent().asyncExec(new Runnable() {

            @Override
            public void run() {
                listener.selectionChanged(null, selection);
            }
        });
    }
}
Also used : ColumnWeightData(org.eclipse.jface.viewers.ColumnWeightData) Label(org.eclipse.swt.widgets.Label) SyncDir(org.apache.sling.ide.eclipse.ui.nav.model.SyncDir) SelectionChangedEvent(org.eclipse.jface.viewers.SelectionChangedEvent) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) Font(org.eclipse.swt.graphics.Font) ISelectionListener(org.eclipse.ui.ISelectionListener) GridLayout(org.eclipse.swt.layout.GridLayout) FocusCellOwnerDrawHighlighter(org.eclipse.jface.viewers.FocusCellOwnerDrawHighlighter) ColumnViewerEditorActivationStrategy(org.eclipse.jface.viewers.ColumnViewerEditorActivationStrategy) TableColumnLayout(org.eclipse.jface.layout.TableColumnLayout) IWorkbenchPart(org.eclipse.ui.IWorkbenchPart) ISelection(org.eclipse.jface.viewers.ISelection) TableViewerColumn(org.eclipse.jface.viewers.TableViewerColumn) CellLabelProvider(org.eclipse.jface.viewers.CellLabelProvider) UpdateHandler(org.apache.sling.ide.eclipse.ui.nav.model.UpdateHandler) Composite(org.eclipse.swt.widgets.Composite) FontData(org.eclipse.swt.graphics.FontData) ISelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener) Point(org.eclipse.swt.graphics.Point) CellNavigationStrategy(org.eclipse.jface.viewers.CellNavigationStrategy) ColumnViewerEditorActivationEvent(org.eclipse.jface.viewers.ColumnViewerEditorActivationEvent) Point(org.eclipse.swt.graphics.Point) TableViewerFocusCellManager(org.eclipse.jface.viewers.TableViewerFocusCellManager) JcrNode(org.apache.sling.ide.eclipse.ui.nav.model.JcrNode) GridData(org.eclipse.swt.layout.GridData) TableViewer(org.eclipse.jface.viewers.TableViewer)

Example 4 with SyncDir

use of org.apache.sling.ide.eclipse.ui.nav.model.SyncDir in project sling by apache.

the class JcrContentContentProviderTest method listChildrenInNestedStructure.

@Test
public void listChildrenInNestedStructure() throws Exception {
    // create .content.xml structure
    InputStream contentXml = getClass().getResourceAsStream("content-nested-structure.xml");
    project.createOrUpdateFile(Path.fromPortableString("jcr_root/content/test-root/en.xml"), contentXml);
    // directly create the root node
    SyncDir syncDirNode = new SyncDir((IFolder) contentProject.findMember("jcr_root"));
    // assertions
    assertIsNavigableAndHasNoChildren(syncDirNode, "/content/test-root/en/message");
    assertIsNavigableAndHasNoChildren(syncDirNode, "/content/test-root/en/error");
    assertIsNavigableAndHasNoChildren(syncDirNode, "/content/test-root/en/warning");
}
Also used : ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) SyncDir(org.apache.sling.ide.eclipse.ui.nav.model.SyncDir) Test(org.junit.Test)

Example 5 with SyncDir

use of org.apache.sling.ide.eclipse.ui.nav.model.SyncDir in project sling by apache.

the class JcrNodeCreationTest method prepareProjectAndContent.

@Before
public void prepareProjectAndContent() throws Exception {
    wstServer.waitForServerToStart();
    // create faceted project
    IProject contentProject = projectRule.getProject();
    ProjectAdapter project = new ProjectAdapter(contentProject);
    project.addNatures("org.eclipse.wst.common.project.facet.core.nature");
    // install content facet
    project.installFacet("sling.content", "1.0");
    ServerAdapter server = new ServerAdapter(wstServer.getServer());
    server.installModule(contentProject);
    // create .content.xml structure
    InputStream contentXml = getClass().getResourceAsStream("content-nested-structure.xml");
    project.createOrUpdateFile(Path.fromPortableString("jcr_root/content/test-root/en.xml"), contentXml);
    // directly create the root node
    syncDirNode = new SyncDir((IFolder) contentProject.findMember("jcr_root"));
}
Also used : ServerAdapter(org.apache.sling.ide.test.impl.helpers.ServerAdapter) InputStream(java.io.InputStream) ProjectAdapter(org.apache.sling.ide.test.impl.helpers.ProjectAdapter) SyncDir(org.apache.sling.ide.eclipse.ui.nav.model.SyncDir) IProject(org.eclipse.core.resources.IProject) IFolder(org.eclipse.core.resources.IFolder) Before(org.junit.Before)

Aggregations

SyncDir (org.apache.sling.ide.eclipse.ui.nav.model.SyncDir)10 Test (org.junit.Test)5 JcrNode (org.apache.sling.ide.eclipse.ui.nav.model.JcrNode)4 ByteArrayInputStream (java.io.ByteArrayInputStream)3 InputStream (java.io.InputStream)2 JcrContentContentProvider (org.apache.sling.ide.eclipse.ui.nav.JcrContentContentProvider)2 IFolder (org.eclipse.core.resources.IFolder)2 IProject (org.eclipse.core.resources.IProject)2 Point (org.eclipse.swt.graphics.Point)2 Map (java.util.Map)1 Entry (java.util.Map.Entry)1 UpdateHandler (org.apache.sling.ide.eclipse.ui.nav.model.UpdateHandler)1 ProjectAdapter (org.apache.sling.ide.test.impl.helpers.ProjectAdapter)1 ServerAdapter (org.apache.sling.ide.test.impl.helpers.ServerAdapter)1 IResource (org.eclipse.core.resources.IResource)1 IPath (org.eclipse.core.runtime.IPath)1 IPackageFragmentRoot (org.eclipse.jdt.core.IPackageFragmentRoot)1 TableColumnLayout (org.eclipse.jface.layout.TableColumnLayout)1 CellLabelProvider (org.eclipse.jface.viewers.CellLabelProvider)1 CellNavigationStrategy (org.eclipse.jface.viewers.CellNavigationStrategy)1