org.eclipse.osee.framework.ui.skynet.artifact.prompt.BooleanHandlePromptChange.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.osee.framework.ui.skynet.artifact.prompt.BooleanHandlePromptChange.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.framework.ui.skynet.artifact.prompt;

import java.util.Collection;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.dialogs.MessageDialogWithToggle;
import org.eclipse.jface.window.Window;
import org.eclipse.osee.framework.core.data.IAttributeType;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
import org.eclipse.osee.framework.logging.OseeLevel;
import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager;
import org.eclipse.osee.framework.ui.skynet.internal.Activator;
import org.eclipse.osee.framework.ui.swt.Displays;

/**
 * @author Jeff C. Phillips
 */
public class BooleanHandlePromptChange implements IHandlePromptChange {
    private final MessageDialogWithToggle dialog;
    private final Collection<? extends Artifact> artifacts;
    private final IAttributeType attributeType;
    private final boolean persist;

    public BooleanHandlePromptChange(Collection<? extends Artifact> artifacts, IAttributeType attributeType,
            String displayName, boolean persist, String toggleMessage) {
        super();
        this.artifacts = artifacts;
        this.attributeType = attributeType;
        this.persist = persist;

        boolean set = false;
        if (artifacts.size() == 1) {
            try {
                set = artifacts.iterator().next().getSoleAttributeValue(attributeType, false);
            } catch (OseeCoreException ex) {
                OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex);
            }
        }

        this.dialog = new MessageDialogWithToggle(Displays.getActiveShell(), displayName, null, displayName,
                MessageDialog.QUESTION, new String[] { "Ok", "Cancel" }, Window.OK,
                toggleMessage != null ? toggleMessage : displayName, set);
    }

    @Override
    public boolean promptOk() {
        int response = dialog.open();
        return response == 256;
    }

    @Override
    public boolean store() throws OseeCoreException {
        if (artifacts.size() > 0) {
            SkynetTransaction transaction = !persist ? null
                    : TransactionManager.createTransaction(artifacts.iterator().next().getBranch(),
                            "Prompt change boolean");
            for (Artifact artifact : artifacts) {
                artifact.setSoleAttributeValue(attributeType, dialog.getToggleState());
                if (persist) {
                    artifact.persist(getClass().getSimpleName());
                }
            }
            if (persist) {
                transaction.execute();
            }
        }
        return true;
    }
}