no.javatime.inplace.ui.dialogs.DependencyDialog.java Source code

Java tutorial

Introduction

Here is the source code for no.javatime.inplace.ui.dialogs.DependencyDialog.java

Source

/*******************************************************************************
 * Copyright (c) 2011, 2012 JavaTime project and others
 * 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:
 *    JavaTime project, Eirik Gronsund - initial implementation
 *******************************************************************************/
package no.javatime.inplace.ui.dialogs;

import no.javatime.inplace.ui.Activator;
import no.javatime.util.messages.Category;
import no.javatime.util.messages.UserMessage;

import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
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.Group;
import org.eclipse.swt.widgets.Shell;

/**
 * Non-modal dialog for setting dependency rules on bundles to activate, deactivate,
 * start and stop.
 */
public class DependencyDialog extends TitleAreaDialog {

    static int DEFAULT_ID = 101;
    static String DEAFAULT_LABEL = "Default";
    Image captionDialogImage = null;
    private Composite container;
    // Groups and buttons
    Group grpActivate = null;
    Button btnActivateProvidingBundles = null;
    Button btnActivateRequiringBundles = null;
    Button btnActivatePartialGraph = null;
    Group grpDeactivate = null;
    Button btnDeactivateRequiringBundles = null;
    Button btnDeactivateProvidingBundles = null;
    Button btnDeactivatePartialGraph = null;
    Group grpStart = null;
    Button btnStartSingleBundles = null;
    Button btnStartRequiringBundles = null;
    Button btnStartProvidingBundles = null;
    Button btnStartRequiringProvidingBundles = null;
    Button btnStartPartialGraph = null;
    Group grpStop = null;
    Button btnStopSingleBundles = null;
    Button btnStopRequiringBundles = null;
    Button btnStopProvidingBundles = null;
    Button btnStopProvidingRequiringBundles = null;
    Button btnStopPartialGraph = null;
    // Initial states
    // Activate
    private Boolean partialOnActivate = false;
    private Boolean requiringOnActivate = false;
    // Deactivate
    private Boolean partialOnDeactivate = false;
    private Boolean providingOnDeactivate = true;
    // Start
    private Boolean partialOnStart = false;
    private Boolean requiringOnStart = false;
    private Boolean providingOnStart = true;
    // Stop
    private Boolean partialOnStop = false;
    private Boolean requiringOnStop = false;
    private Boolean providingOnStop = true;
    private UserMessage msg = UserMessage.getInstance();
    // Textual name of operation
    final String activateOp = msg.formatString("dep_operation_activate");
    final String deactivateOp = msg.formatString("dep_operation_deactivate");
    final String startOp = msg.formatString("dep_operation_start");
    final String stopOp = msg.formatString("dep_operation_stop");
    // Size of radio groups
    private int grpHeightHint = 40;
    private int grWidthHint = 550;

    /**
     * Create the dialog.
     * @param parentShell the workspace shell
     */
    public DependencyDialog(Shell parentShell) {
        super(parentShell);
        setHelpAvailable(false);
        setShellStyle(SWT.DIALOG_TRIM | SWT.RESIZE);
        setBlockOnOpen(false);
        setInitialDependencies();
    }

    @Override
    public boolean close() {
        if (null != captionDialogImage) {
            captionDialogImage.dispose();
        }
        return super.close();
    }

    /**
     * Create the dialog with radio groups for activate, deactivate, start and stop.
     * @param parent the dialog
     */
    @Override
    protected Control createDialogArea(Composite parent) {
        captionDialogImage = Activator.getImageDescriptor("icons/dependencies.gif").createImage();
        parent.getShell().setImage(captionDialogImage);
        parent.getShell().setText(msg.formatString("dep_dialog_caption_text"));
        setMessage(msg.formatString("dep_main_message"));
        setTitle(msg.formatString("dep_title_message"));
        container = (Composite) super.createDialogArea(parent);
        container.setLayout(new GridLayout(1, false));
        // Activate, deactivate, start and stop groups      
        activate();
        deactivate();
        start();
        stop();
        return container;
    }

    /**
     * Initialize and manage the activate radio group
     */
    private void activate() {
        grpActivate = new Group(container, SWT.SHADOW_ETCHED_OUT);
        grpActivate.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseDoubleClick(MouseEvent e) {
                setMessage(msg.formatString("dep_operation_group_activation", activateOp),
                        IMessageProvider.INFORMATION);
            }

            @Override
            public void mouseDown(MouseEvent e) {
                setMessage(msg.formatString("dep_operation_group_activation", activateOp),
                        IMessageProvider.INFORMATION);
            }
        });
        grpActivate.setToolTipText(msg.formatString("dep_operation_group_activation", activateOp));
        GridData gd_grpActivate = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
        gd_grpActivate.heightHint = grpHeightHint;
        gd_grpActivate.widthHint = grWidthHint;
        grpActivate.setLayoutData(gd_grpActivate);
        grpActivate.setText(msg.formatString("dep_bundles_name", msg.formatString("dep_operation_activate")));
        // Providing
        btnActivateProvidingBundles = new Button(grpActivate, SWT.RADIO);
        btnActivateProvidingBundles.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (btnActivateProvidingBundles.getSelection()) {
                    setMessage(msg.formatString("dep_operation_providing", activateOp),
                            IMessageProvider.INFORMATION);
                }
            }
        });
        btnActivateProvidingBundles.setToolTipText(msg.formatString("dep_operation_providing", activateOp));
        btnActivateProvidingBundles.setBounds(101, 20, 72, 16);
        btnActivateProvidingBundles.setText("Providing");

        if (!requiringOnActivate && !partialOnActivate) {
            btnActivateProvidingBundles.setSelection(true);
        }
        btnActivateRequiringBundles = new Button(grpActivate, SWT.RADIO);
        btnActivateRequiringBundles
                .setToolTipText(msg.formatString("dep_operation_requiring_providing", activateOp));
        btnActivateRequiringBundles.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                Category.setState(Category.requiringOnActivate, btnActivateRequiringBundles.getSelection());
                if (btnActivateRequiringBundles.getSelection()) {
                    setMessage(msg.formatString("dep_operation_requiring_providing", activateOp),
                            IMessageProvider.INFORMATION);
                }
            }

            @Override
            public void widgetDefaultSelected(SelectionEvent e) {
                btnActivateRequiringBundles
                        .setSelection(Category.getInstance().resetState(Category.requiringOnActivate));
            }
        });
        btnActivateRequiringBundles.setBounds(290, 20, 149, 16);
        btnActivateRequiringBundles.setText("Requiring and Providing");
        btnActivateRequiringBundles.setSelection(Category.getState(Category.requiringOnActivate));

        btnActivatePartialGraph = new Button(grpActivate, SWT.RADIO);
        btnActivatePartialGraph.setToolTipText(msg.formatString("dep_operation_partial", activateOp));
        btnActivatePartialGraph.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                Category.setState(Category.partialGraphOnActivate, btnActivatePartialGraph.getSelection());
                if (btnActivatePartialGraph.getSelection()) {
                    setMessage(msg.formatString("dep_operation_partial", activateOp), IMessageProvider.INFORMATION);
                }
            }
        });
        btnActivatePartialGraph.setBounds(463, 20, 89, 16);
        btnActivatePartialGraph.setText("Partial Graph");
        btnActivatePartialGraph.setSelection(Category.getState(Category.partialGraphOnActivate));
    }

    /**
     * Initialize and manage the deactivate radio group
     */
    private void deactivate() {
        grpDeactivate = new Group(container, SWT.SHADOW_ETCHED_IN);
        grpDeactivate.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseDown(MouseEvent e) {
                setMessage(msg.formatString("dep_operation_group_activation", deactivateOp),
                        IMessageProvider.INFORMATION);
            }

            @Override
            public void mouseDoubleClick(MouseEvent e) {
                setMessage(msg.formatString("dep_operation_group_activation", deactivateOp),
                        IMessageProvider.INFORMATION);
            }
        });
        grpDeactivate.setToolTipText(msg.formatString("dep_operation_group_activation", deactivateOp));
        GridData gd_grpDeactivate = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
        gd_grpDeactivate.widthHint = grWidthHint;
        gd_grpDeactivate.heightHint = grpHeightHint;
        grpDeactivate.setLayoutData(gd_grpDeactivate);
        grpDeactivate.setText(msg.formatString("dep_bundles_name", msg.formatString("dep_operation_deactivate")));

        btnDeactivateRequiringBundles = new Button(grpDeactivate, SWT.RADIO);
        btnDeactivateRequiringBundles.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (btnDeactivateRequiringBundles.getSelection()) {
                    setMessage(msg.formatString("dep_operation_requiring", deactivateOp),
                            IMessageProvider.INFORMATION);
                }
            }
        });
        btnDeactivateRequiringBundles.setToolTipText(msg.formatString("dep_operation_requiring", deactivateOp));
        btnDeactivateRequiringBundles.setBounds(194, 20, 72, 16);
        btnDeactivateRequiringBundles.setText("Requiring");
        if (!providingOnDeactivate && !partialOnDeactivate) {
            btnDeactivateRequiringBundles.setSelection(true);
        }

        btnDeactivateProvidingBundles = new Button(grpDeactivate, SWT.RADIO);
        btnDeactivateProvidingBundles.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                Category.setState(Category.providingOnDeactivate, btnDeactivateProvidingBundles.getSelection());
                if (btnDeactivateProvidingBundles.getSelection()) {
                    setMessage(msg.formatString("dep_operation_providing_requiring", deactivateOp),
                            IMessageProvider.INFORMATION);
                }
            }
        });
        btnDeactivateProvidingBundles
                .setToolTipText(msg.formatString("dep_operation_providing_requiring", deactivateOp));
        btnDeactivateProvidingBundles.setText("Providing and Requiring");
        btnDeactivateProvidingBundles.setBounds(290, 20, 149, 16);
        btnDeactivateProvidingBundles.setSelection(Category.getState(Category.providingOnDeactivate));

        btnDeactivatePartialGraph = new Button(grpDeactivate, SWT.RADIO);
        btnDeactivatePartialGraph.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                Category.setState(Category.partialGraphOnDeactivate, btnDeactivatePartialGraph.getSelection());
                if (btnDeactivatePartialGraph.getSelection()) {
                    setMessage(msg.formatString("dep_operation_partial", deactivateOp),
                            IMessageProvider.INFORMATION);
                }
            }
        });
        btnDeactivatePartialGraph.setToolTipText(msg.formatString("dep_operation_partial", deactivateOp));
        btnDeactivatePartialGraph.setText("Partial Graph");
        btnDeactivatePartialGraph.setBounds(463, 20, 89, 16);
        btnDeactivatePartialGraph.setSelection(Category.getState(Category.partialGraphOnDeactivate));
    }

    /**
     * Initialize and manage the start radio group
     */
    private void start() {
        grpStart = new Group(container, SWT.NONE);
        grpStart.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseDoubleClick(MouseEvent e) {
                setMessage(msg.formatString("dep_operation_group_startstop", startOp),
                        IMessageProvider.INFORMATION);
            }

            @Override
            public void mouseDown(MouseEvent e) {
                setMessage(msg.formatString("dep_operation_group_startstop", startOp),
                        IMessageProvider.INFORMATION);
            }
        });
        grpStart.setToolTipText(msg.formatString("dep_operation_group_startstop", startOp));
        GridData gd_grpStart = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
        gd_grpStart.heightHint = grpHeightHint;
        gd_grpStart.widthHint = grWidthHint;
        grpStart.setLayoutData(gd_grpStart);
        grpStart.setText(msg.formatString("dep_bundles_name", msg.formatString("dep_operation_start")));

        btnStartSingleBundles = new Button(grpStart, SWT.RADIO);
        btnStartSingleBundles.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (btnStartSingleBundles.getSelection()) {
                    setMessage(msg.formatString("dep_operation_single", startOp), IMessageProvider.INFORMATION);
                }
                if (!btnStartSingleBundles.getSelection()) {
                    setMessage("Excluding providing bundles on start may result in stale references",
                            IMessageProvider.WARNING);
                }
            }
        });
        btnStartSingleBundles.setToolTipText(msg.formatString("dep_operation_single", startOp));
        btnStartSingleBundles.setBounds(30, 20, 53, 16);
        btnStartSingleBundles.setText("Single");
        if (!requiringOnStart && !providingOnStart && !partialOnStart) {
            btnStartSingleBundles.setSelection(true);
        }
        btnStartRequiringBundles = new Button(grpStart, SWT.RADIO);
        btnStartRequiringBundles.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (!btnStartRequiringProvidingBundles.getSelection()) {
                    Category.setState(Category.requiringOnStart, btnStartRequiringBundles.getSelection());
                }
                if (btnStartRequiringBundles.getSelection()) {
                    setMessage(msg.formatString("dep_operation_requiring", startOp), IMessageProvider.INFORMATION);
                }
            }
        });
        btnStartRequiringBundles.setToolTipText(msg.formatString("dep_operation_requiring", startOp));
        btnStartRequiringBundles.setBounds(194, 20, 72, 16);
        btnStartRequiringBundles.setText("Requiring");
        if (!providingOnStart) {
            btnStartRequiringBundles.setSelection(Category.getState(Category.requiringOnStart));
        } else {
            btnStartRequiringBundles.setSelection(false);
        }
        btnStartProvidingBundles = new Button(grpStart, SWT.RADIO);
        btnStartProvidingBundles.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (!btnStartRequiringProvidingBundles.getSelection()) {
                    Category.setState(Category.providingOnStart, btnStartProvidingBundles.getSelection());
                }
                if (btnStartProvidingBundles.getSelection()) {
                    setMessage(msg.formatString("dep_operation_providing", startOp), IMessageProvider.INFORMATION);
                }
            }
        });
        btnStartProvidingBundles.setToolTipText(msg.formatString("dep_operation_providing", startOp));
        btnStartProvidingBundles.setBounds(101, 20, 72, 16);
        btnStartProvidingBundles.setText("Providing");
        if (!requiringOnStart) {
            btnStartProvidingBundles.setSelection(Category.getState(Category.providingOnStart));
        } else {
            btnStartProvidingBundles.setSelection(false);
        }
        btnStartRequiringProvidingBundles = new Button(grpStart, SWT.RADIO);
        btnStartRequiringProvidingBundles.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                Category.setState(Category.requiringOnStart, btnStartRequiringProvidingBundles.getSelection());
                Category.setState(Category.providingOnStart, btnStartRequiringProvidingBundles.getSelection());
                if (btnStartRequiringProvidingBundles.getSelection()) {
                    setMessage(msg.formatString("dep_operation_requiring_providing", startOp),
                            IMessageProvider.INFORMATION);
                }
            }
        });
        btnStartRequiringProvidingBundles
                .setToolTipText(msg.formatString("dep_operation_requiring_providing", startOp));
        btnStartRequiringProvidingBundles.setBounds(290, 20, 144, 16);
        btnStartRequiringProvidingBundles.setText("Requiring and Providing");
        if (Category.getState(Category.requiringOnStart) && Category.getState(Category.providingOnStart)) {
            btnStartRequiringProvidingBundles.setSelection(true);
        }
        btnStartPartialGraph = new Button(grpStart, SWT.RADIO);
        btnStartPartialGraph.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                Category.setState(Category.partialGraphOnStart, btnStartPartialGraph.getSelection());
                if (btnStartPartialGraph.getSelection()) {
                    setMessage(msg.formatString("dep_operation_partial", startOp), IMessageProvider.INFORMATION);
                }
            }
        });
        btnStartPartialGraph.setToolTipText(msg.formatString("dep_operation_partial", startOp));
        btnStartPartialGraph.setBounds(463, 20, 89, 16);
        btnStartPartialGraph.setText("Partial Graph");
        btnStartPartialGraph.setSelection(Category.getState(Category.partialGraphOnStart));
    }

    /**
     * Initialize and manage the stop radio group
     */
    private void stop() {
        grpStop = new Group(container, SWT.NONE);
        grpStop.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseDoubleClick(MouseEvent e) {
                setMessage(msg.formatString("dep_operation_group_startstop", stopOp), IMessageProvider.INFORMATION);
            }

            @Override
            public void mouseDown(MouseEvent e) {
                setMessage(msg.formatString("dep_operation_group_startstop", stopOp), IMessageProvider.INFORMATION);
            }
        });
        grpStop.setToolTipText(msg.formatString("dep_operation_group_startstop", stopOp));
        GridData gd_grpStop = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
        gd_grpStop.heightHint = grpHeightHint;
        gd_grpStop.widthHint = grWidthHint;
        grpStop.setLayoutData(gd_grpStop);
        grpStop.setText(msg.formatString("dep_bundles_name", msg.formatString("dep_operation_stop")));

        btnStopSingleBundles = new Button(grpStop, SWT.RADIO);
        btnStopSingleBundles.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (btnStopSingleBundles.getSelection()) {
                    setMessage(msg.formatString("dep_operation_single", stopOp), IMessageProvider.INFORMATION);
                }
            }
        });
        btnStopSingleBundles.setToolTipText(msg.formatString("dep_operation_single", stopOp));
        btnStopSingleBundles.setBounds(30, 20, 53, 16);
        btnStopSingleBundles.setText("Single");
        if (!requiringOnStop && !providingOnStop && !partialOnStop) {
            btnStopSingleBundles.setSelection(true);
        }

        btnStopRequiringBundles = new Button(grpStop, SWT.RADIO);
        btnStopRequiringBundles.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (!btnStopProvidingRequiringBundles.getSelection()) {
                    Category.setState(Category.requiringOnStop, btnStopRequiringBundles.getSelection());
                }
                if (btnStopRequiringBundles.getSelection()) {
                    setMessage(msg.formatString("dep_operation_requiring", stopOp), IMessageProvider.INFORMATION);
                }
            }
        });
        btnStopRequiringBundles.setToolTipText(msg.formatString("dep_operation_requiring", stopOp));
        btnStopRequiringBundles.setText("Requiring");
        btnStopRequiringBundles.setBounds(194, 20, 72, 16);
        if (!providingOnStop) {
            btnStopRequiringBundles.setSelection(Category.getState(Category.requiringOnStop));
        } else {
            btnStopRequiringBundles.setSelection(false);
        }

        btnStopProvidingBundles = new Button(grpStop, SWT.RADIO);
        btnStopProvidingBundles.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (!btnStopProvidingRequiringBundles.getSelection()) {
                    Category.setState(Category.providingOnStop, btnStopProvidingBundles.getSelection());
                }
                if (btnStopProvidingBundles.getSelection()) {
                    setMessage(msg.formatString("dep_operation_providing", stopOp), IMessageProvider.INFORMATION);
                }
            }
        });
        btnStopProvidingBundles.setToolTipText(msg.formatString("dep_operation_providing", stopOp));
        btnStopProvidingBundles.setText("Providing");
        btnStopProvidingBundles.setBounds(101, 20, 72, 16);
        if (!requiringOnStop) {
            btnStopProvidingBundles.setSelection(Category.getState(Category.providingOnStop));
        } else {
            btnStopProvidingBundles.setSelection(false);
        }
        btnStopProvidingRequiringBundles = new Button(grpStop, SWT.RADIO);
        btnStopProvidingRequiringBundles.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                Category.setState(Category.requiringOnStop, btnStopProvidingRequiringBundles.getSelection());
                Category.setState(Category.providingOnStop, btnStopProvidingRequiringBundles.getSelection());
                if (btnStopProvidingRequiringBundles.getSelection()) {
                    setMessage(msg.formatString("dep_operation_providing_requiring", stopOp),
                            IMessageProvider.INFORMATION);
                }
            }
        });
        btnStopProvidingRequiringBundles
                .setToolTipText(msg.formatString("dep_operation_providing_requiring", stopOp));
        btnStopProvidingRequiringBundles.setBounds(290, 20, 149, 16);
        btnStopProvidingRequiringBundles.setText("Providing and Requiring");
        if (Category.getState(Category.requiringOnStop) && Category.getState(Category.providingOnStop)) {
            btnStopProvidingRequiringBundles.setSelection(true);
        }
        btnStopPartialGraph = new Button(grpStop, SWT.RADIO);
        btnStopPartialGraph.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                Category.setState(Category.partialGraphOnStop, btnStopPartialGraph.getSelection());
                if (btnStopPartialGraph.getSelection()) {
                    setMessage(msg.formatString("dep_operation_partial", stopOp), IMessageProvider.INFORMATION);
                }
            }
        });
        btnStopPartialGraph.setToolTipText(msg.formatString("dep_operation_partial", stopOp));
        btnStopPartialGraph.setText("Partial Graph");
        btnStopPartialGraph.setBounds(463, 20, 89, 16);
        btnStopPartialGraph.setSelection(Category.getState(Category.partialGraphOnStop));
    }

    /**
     * Create a default, cancel and ok button in the button bar.
     * @param parent the title area dialog
     */
    @Override
    protected void createButtonsForButtonBar(Composite parent) {

        Button btnDefault = createButton(parent, DEFAULT_ID, DEAFAULT_LABEL, false);
        btnDefault.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                defaultDependencies();
            }
        });
        createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
        Button btnCancel = createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
        btnCancel.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                cancel();
            }
        });
    }

    /**
     * Return the initial size of the dialog.
     */
    @Override
    protected Point getInitialSize() {
        return new Point(609, 441);
    }

    /**
     * Assign existing dependency settings 
     */
    private void setInitialDependencies() {
        // Activate
        this.partialOnActivate = Category.getState(Category.partialGraphOnActivate);
        this.requiringOnActivate = Category.getState(Category.requiringOnActivate);
        // Start
        this.partialOnStart = Category.getState(Category.partialGraphOnStart);
        this.requiringOnStart = Category.getState(Category.requiringOnStart);
        this.providingOnStart = Category.getState(Category.providingOnStart);
        // Deactivate
        this.partialOnDeactivate = Category.getState(Category.partialGraphOnDeactivate);
        this.providingOnDeactivate = Category.getState(Category.providingOnDeactivate);
        // Stop      
        this.partialOnStop = Category.getState(Category.partialGraphOnStop);
        this.requiringOnStop = Category.getState(Category.requiringOnStop);
        this.providingOnStop = Category.getState(Category.providingOnStop);
    }

    /**
     * Assign dependency setting from before the dependency dialog was created
     */
    private void cancel() {
        // Activate
        Category.setState(Category.partialGraphOnActivate, this.partialOnActivate);
        Category.setState(Category.requiringOnActivate, this.requiringOnActivate);
        // Start
        Category.setState(Category.partialGraphOnStart, this.partialOnStart);
        Category.setState(Category.requiringOnStart, this.requiringOnStart);
        Category.setState(Category.providingOnStart, this.providingOnStart);
        // Deactivate
        Category.setState(Category.partialGraphOnDeactivate, this.partialOnDeactivate);
        Category.setState(Category.providingOnDeactivate, this.providingOnDeactivate);
        // Stop
        Category.setState(Category.partialGraphOnStop, this.partialOnStop);
        Category.setState(Category.requiringOnStop, this.requiringOnStop);
        Category.setState(Category.providingOnStop, this.providingOnStop);
    }

    /**
     * Assign default dependency settings 
     */
    private void defaultDependencies() {
        // Activate
        Boolean requiringOnActiavate = Category.getInstance().resetState(Category.requiringOnActivate);
        Boolean partialOnActiavte = Category.getInstance().resetState(Category.partialGraphOnActivate);
        if (!requiringOnActiavate && !partialOnActiavte) {
            btnActivateProvidingBundles.setSelection(true);
        } else {
            btnActivateProvidingBundles.setSelection(false);
        }
        btnActivateRequiringBundles.setSelection(requiringOnActiavate);
        btnActivatePartialGraph.setSelection(partialOnActiavte);
        // Deactivate
        Boolean providingOnDeactivate = Category.getInstance().resetState(Category.providingOnDeactivate);
        Boolean partialOnDectiavate = Category.getInstance().resetState(Category.partialGraphOnDeactivate);
        if (!providingOnDeactivate && !partialOnDectiavate) {
            btnDeactivateRequiringBundles.setSelection(true);
        } else {
            btnDeactivateRequiringBundles.setSelection(false);
        }
        btnDeactivateProvidingBundles.setSelection(providingOnDeactivate);
        btnDeactivatePartialGraph.setSelection(partialOnDectiavate);
        // Start
        Boolean requiringOnStart = Category.getInstance().resetState(Category.requiringOnStart);
        Boolean providingOnStart = Category.getInstance().resetState(Category.providingOnStart);
        Boolean partialOnStart = Category.getInstance().resetState(Category.partialGraphOnStart);
        if (!partialOnStart && !requiringOnStart && !providingOnStart) {
            btnStartSingleBundles.setSelection(true);
        } else {
            btnStartSingleBundles.setSelection(false);
            if (requiringOnStart && providingOnStart) {
                btnStartRequiringProvidingBundles.setSelection(true);
            } else {
                btnStartRequiringProvidingBundles.setSelection(false);
                btnStartRequiringBundles.setSelection(requiringOnStart);
                btnStartProvidingBundles.setSelection(providingOnStart);
                btnStartPartialGraph.setSelection(partialOnStart);
            }
        }
        // Stop      
        Boolean requiringOnStop = Category.getInstance().resetState(Category.requiringOnStop);
        Boolean providingOnStop = Category.getInstance().resetState(Category.providingOnStop);
        Boolean partialOnStop = Category.getInstance().resetState(Category.partialGraphOnStop);
        ;
        if (!partialOnStop && !requiringOnStop && !providingOnStop) {
            btnStopSingleBundles.setSelection(true);
        } else {
            btnStopSingleBundles.setSelection(false);
            if (requiringOnStop && providingOnStop) {
                btnStopProvidingRequiringBundles.setSelection(true);
            } else {
                btnStopProvidingRequiringBundles.setSelection(false);
                btnStopRequiringBundles.setSelection(requiringOnStop);
                btnStopProvidingBundles.setSelection(providingOnStop);
                btnStopPartialGraph.setSelection(partialOnStop);
            }
        }
    }
}