org.springframework.ide.eclipse.boot.dash.cloudfoundry.deployment.ManifestDiffDialog.java Source code

Java tutorial

Introduction

Here is the source code for org.springframework.ide.eclipse.boot.dash.cloudfoundry.deployment.ManifestDiffDialog.java

Source

/*******************************************************************************
 * Copyright (c) 2016 Pivotal, Inc.
 * 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:
 *     Pivotal, Inc. - initial API and implementation
 *******************************************************************************/
package org.springframework.ide.eclipse.boot.dash.cloudfoundry.deployment;

import org.eclipse.compare.CompareEditorInput;
import org.eclipse.core.runtime.Assert;
import org.eclipse.jface.dialogs.DialogSettings;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.springframework.ide.eclipse.boot.dash.BootDashActivator;
import org.springframework.ide.eclipse.boot.dash.dialogs.ManifestDiffDialogModel;
import org.springframework.ide.eclipse.boot.dash.dialogs.ManifestDiffDialogModel.Result;

/**
 * Dialog to compare and merge manifest file with deployment properties from CF.
 * Hosts eclipse's compare and merge editor composite.
 *
 * @author Alex Boyko
 *
 */
public class ManifestDiffDialog extends TitleAreaDialog {

    private final CompareEditorInput fCompareEditorInput;

    /**
     * Create a dialog to host the given input.
     * @param shell a shell
     * @param input the dialog input
     */
    public ManifestDiffDialog(Shell shell, ManifestDiffDialogModel model) {
        super(shell);
        CompareEditorInput input = model.getInput();
        setShellStyle(getShellStyle() | SWT.RESIZE | SWT.MAX);
        Assert.isNotNull(input);
        fCompareEditorInput = input;
    }

    protected void createButtonsForButtonBar(Composite parent) {
        createButton(parent, IDialogConstants.YES_ID, "Use Manifest", true);
        createButton(parent, IDialogConstants.CANCEL_ID, fCompareEditorInput.getCancelButtonLabel(), false);
        createButton(parent, IDialogConstants.NO_ID, "Forget Manifest", false);
    }

    protected Control createDialogArea(Composite parent2) {

        Composite parent = (Composite) super.createDialogArea(parent2);

        Control c = fCompareEditorInput.createContents(parent);
        c.setLayoutData(new GridData(GridData.FILL_BOTH));

        Shell shell = c.getShell();
        shell.setText(fCompareEditorInput.getTitle());
        shell.setImage(fCompareEditorInput.getTitleImage());
        applyDialogFont(parent);
        return parent;
    }

    @Override
    public void create() {
        super.create();
        setTitle("Merge Manifest File");
        if (fCompareEditorInput != null && fCompareEditorInput.getMessage() != null) {
            setMessage(fCompareEditorInput.getMessage(), IMessageProvider.WARNING);
        } else {
            setMessage(
                    "Manifest file deployment properties are different from current deployment properties on CF. Please merge changes if applicable.",
                    IMessageProvider.INFORMATION);
        }
    }

    protected void buttonPressed(int buttonId) {
        switch (buttonId) {
        case IDialogConstants.NO_ID:
            fCompareEditorInput.cancelPressed();
            setReturnCode(buttonId);
            close();
            break;
        case IDialogConstants.YES_ID:
            if (fCompareEditorInput.isDirty()) {
                if (!fCompareEditorInput.okPressed())
                    return;
            } else {
                fCompareEditorInput.cancelPressed();
            }
            setReturnCode(buttonId);
            close();
            break;
        case IDialogConstants.CANCEL_ID:
            fCompareEditorInput.cancelPressed();
            super.buttonPressed(buttonId);
            break;
        default:
            super.buttonPressed(buttonId);
        }
    }

    protected IDialogSettings getDialogBoundsSettings() {
        return DialogSettings.getOrCreateSection(BootDashActivator.getDefault().getDialogSettings(),
                "MergeManifestDialog");
    }

    /**
     * Return the compare editor input for this dialog.
     * @return the compare editor input for this dialog
     */
    protected final CompareEditorInput getInput() {
        return fCompareEditorInput;
    }

    @Override
    protected int getDialogBoundsStrategy() {
        return DIALOG_PERSISTSIZE;
    }

    public static Result getResultForCode(int buttonId) {
        switch (buttonId) {
        case IDialogConstants.NO_ID:
            return Result.FORGET_MANIFEST;
        case IDialogConstants.YES_ID:
            return Result.USE_MANIFEST;
        case IDialogConstants.CANCEL_ID:
            return Result.CANCELED;
        default:
            throw new IllegalArgumentException("Unknown button ID");
        }
    }
}