org.eclipse.osee.ats.actions.PrivilegedEditAction.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.osee.ats.actions.PrivilegedEditAction.java

Source

/*******************************************************************************
 * Copyright (c) 2004, 2007 Boeing.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     Boeing - initial API and implementation
 *******************************************************************************/

package org.eclipse.osee.ats.actions;

import java.util.Set;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.osee.ats.AtsImage;
import org.eclipse.osee.ats.api.user.IAtsUser;
import org.eclipse.osee.ats.core.client.util.AtsUtilClient;
import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact;
import org.eclipse.osee.ats.editor.SMAEditor;
import org.eclipse.osee.ats.internal.AtsClientService;
import org.eclipse.osee.ats.util.PrivilegedUserManager;
import org.eclipse.osee.ats.util.ReadOnlyHyperlinkListener;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
import org.eclipse.osee.framework.ui.swt.Displays;
import org.eclipse.osee.framework.ui.swt.ImageManager;

/**
 * @author Donald G. Dunne
 */
public class PrivilegedEditAction extends AbstractAtsAction {

    private final AbstractWorkflowArtifact sma;
    private final SMAEditor editor;

    public PrivilegedEditAction(AbstractWorkflowArtifact sma, SMAEditor editor) {
        super();
        this.sma = sma;
        this.editor = editor;
        setText("Privileged Edit");
        setToolTipText(getText());
    }

    @Override
    public void runWithException() throws OseeCoreException {
        if (sma.isReadOnly()) {
            new ReadOnlyHyperlinkListener(sma).linkActivated(null);
        }
        if (editor.isPrivilegedEditModeEnabled()) {
            if (MessageDialog.openQuestion(Displays.getActiveShell(), "Diable Privileged Edit",
                    "Privileged Edit Mode Enabled.\n\nDisable?\n\nNote: (changes will be saved)")) {
                editor.setPrivilegedEditMode(false);
            }
        } else {
            Set<IAtsUser> users = PrivilegedUserManager.getPrivilegedUsers(sma);
            if (AtsUtilClient.isAtsAdmin()) {
                users.add(AtsClientService.get().getUserService().getCurrentUser());
            }
            StringBuffer stringBuffer = new StringBuffer();
            for (IAtsUser user : users) {
                stringBuffer.append(user.getName());
                stringBuffer.append("\n");
            }
            String buttons[];
            boolean iAmPrivileged = users.contains(AtsClientService.get().getUserService().getCurrentUser());
            if (iAmPrivileged) {
                buttons = new String[] { "Override and Edit", "Cancel" };
            } else {
                buttons = new String[] { "Cancel" };
            }
            MessageDialog dialog = new MessageDialog(Displays.getActiveShell(), "Privileged Edit", null,
                    "The following users have the ability to edit this " + sma.getArtifactTypeName()
                            + " in case of emergency.\n\n" + stringBuffer.toString(),
                    MessageDialog.QUESTION, buttons, 0);
            int result = dialog.open();
            if (iAmPrivileged && result == 0) {
                editor.setPrivilegedEditMode(true);
            }
        }
    }

    @Override
    public ImageDescriptor getImageDescriptor() {
        return ImageManager.getImageDescriptor(AtsImage.PRIVILEGED_EDIT);
    }
}