X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ui.workbench%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2Fworkbench%2Finternal%2Fjcr%2Fcommands%2FRemovePrivileges.java;fp=org.argeo.cms.ui.workbench%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2Fworkbench%2Finternal%2Fjcr%2Fcommands%2FRemovePrivileges.java;h=0000000000000000000000000000000000000000;hb=0f2684acd8274f302020a5d2628c4e5d3cc84500;hp=cd2618d5f176bb4c60e76f0ae0a398a60cb030ef;hpb=5b444174cd13680f99944026877f6cac2e1faba1;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/commands/RemovePrivileges.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/commands/RemovePrivileges.java deleted file mode 100644 index cd2618d5f..000000000 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/commands/RemovePrivileges.java +++ /dev/null @@ -1,206 +0,0 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.argeo.cms.ui.workbench.internal.jcr.commands; - -import java.security.Principal; - -import javax.jcr.Node; -import javax.jcr.RepositoryException; -import javax.jcr.Session; -import javax.jcr.security.AccessControlEntry; -import javax.jcr.security.AccessControlList; -import javax.jcr.security.AccessControlManager; -import javax.jcr.security.Privilege; - -import org.argeo.cms.ui.jcr.JcrImages; -import org.argeo.cms.ui.jcr.model.SingleJcrNodeElem; -import org.argeo.cms.ui.jcr.model.WorkspaceElem; -import org.argeo.cms.ui.workbench.WorkbenchUiPlugin; -import org.argeo.eclipse.ui.EclipseUiException; -import org.argeo.eclipse.ui.EclipseUiUtils; -import org.argeo.eclipse.ui.TreeParent; -import org.argeo.eclipse.ui.dialogs.ErrorFeedback; -import org.argeo.jcr.JcrUtils; -import org.eclipse.core.commands.AbstractHandler; -import org.eclipse.core.commands.ExecutionEvent; -import org.eclipse.core.commands.ExecutionException; -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.dialogs.IMessageProvider; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.dialogs.TitleAreaDialog; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.handlers.HandlerUtil; - -/** Open a dialog to remove privileges from the selected node */ -public class RemovePrivileges extends AbstractHandler { - public final static String ID = WorkbenchUiPlugin.PLUGIN_ID - + ".removePrivileges"; - - public Object execute(ExecutionEvent event) throws ExecutionException { - - ISelection selection = HandlerUtil.getActiveWorkbenchWindow(event) - .getActivePage().getSelection(); - if (selection != null && !selection.isEmpty() - && selection instanceof IStructuredSelection) { - Object obj = ((IStructuredSelection) selection).getFirstElement(); - TreeParent uiNode = null; - Node jcrNode = null; - - if (obj instanceof SingleJcrNodeElem) { - uiNode = (TreeParent) obj; - jcrNode = ((SingleJcrNodeElem) uiNode).getNode(); - } else if (obj instanceof WorkspaceElem) { - uiNode = (TreeParent) obj; - jcrNode = ((WorkspaceElem) uiNode).getRootNode(); - } else - return null; - - try { - String targetPath = jcrNode.getPath(); - Dialog dialog = new RemovePrivDialog( - HandlerUtil.getActiveShell(event), - jcrNode.getSession(), targetPath); - dialog.open(); - return null; - } catch (RepositoryException re) { - throw new EclipseUiException("Unable to retrieve " - + "path or JCR session to add privilege on " + jcrNode, - re); - } - } else { - ErrorFeedback.show("Cannot add privileges"); - } - return null; - } - - private class RemovePrivDialog extends TitleAreaDialog { - private static final long serialVersionUID = 280139710002698692L; - - private Composite body; - - private final String path; - private final Session session; - - public RemovePrivDialog(Shell parentShell, Session session, String path) { - super(parentShell); - this.session = session; - this.path = path; - } - - @Override - protected void configureShell(Shell newShell) { - super.configureShell(newShell); - newShell.setText("Remove privileges"); - } - - protected Control createDialogArea(Composite parent) { - Composite dialogarea = (Composite) super.createDialogArea(parent); - dialogarea.setLayoutData(new GridData(SWT.CENTER, SWT.TOP, true, - true)); - body = new Composite(dialogarea, SWT.NONE); - body.setLayoutData(EclipseUiUtils.fillAll()); - refreshContent(); - parent.pack(); - return body; - } - - private void refreshContent() { - EclipseUiUtils.clear(body); - try { - AccessControlManager acm = session.getAccessControlManager(); - AccessControlList acl = JcrUtils - .getAccessControlList(acm, path); - if (acl == null || acl.getAccessControlEntries().length <= 0) - setMessage("No privilege are defined on this node", - IMessageProvider.INFORMATION); - else { - body.setLayout(new GridLayout(3, false)); - for (AccessControlEntry ace : acl.getAccessControlEntries()) { - addOnePrivRow(body, ace); - } - setMessage("Remove some of the defined privileges", - IMessageProvider.INFORMATION); - } - } catch (RepositoryException e) { - throw new EclipseUiException("Unable to list privileges on " - + path, e); - } - body.layout(true, true); - } - - private void addOnePrivRow(Composite parent, AccessControlEntry ace) { - Principal currentPrincipal = ace.getPrincipal(); - final String currPrincipalName = currentPrincipal.getName(); - new Label(parent, SWT.WRAP).setText(currPrincipalName); - new Label(parent, SWT.WRAP).setText(privAsString(ace - .getPrivileges())); - final Button rmBtn = new Button(parent, SWT.FLAT); - rmBtn.setImage(JcrImages.REMOVE); - - rmBtn.addSelectionListener(new SelectionAdapter() { - private static final long serialVersionUID = 7566938841363890730L; - - @Override - public void widgetSelected(SelectionEvent e) { - - if (MessageDialog.openConfirm(rmBtn.getShell(), - "Confirm deletion", - "Are you sure you want to remove this privilege?")) { - try { - session.save(); - JcrUtils.clearAccessControList(session, path, - currPrincipalName); - session.save(); - refreshContent(); - } catch (RepositoryException re) { - throw new EclipseUiException("Unable to " - + "remove privilege for " - + currPrincipalName + " on " + path, re); - } - } - - super.widgetSelected(e); - } - }); - - } - - private String privAsString(Privilege[] currentPrivileges) { - - StringBuilder builder = new StringBuilder(); - builder.append("[ "); - for (Privilege priv : currentPrivileges) { - builder.append(priv.getName()).append(", "); - } - if (builder.length() > 3) - return builder.substring(0, builder.length() - 2) + " ]"; - else - return "[]"; - - } - } -}