Package bndtools.editor.exports

Source Code of bndtools.editor.exports.ExportPackagesDetailsPage

package bndtools.editor.exports;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.forms.widgets.FormToolkit;

import aQute.bnd.build.model.clauses.ExportedPackage;
import bndtools.editor.pkgpatterns.PkgPatternsDetailsPage;
import bndtools.editor.pkgpatterns.PkgPatternsListPart;
import bndtools.utils.ModificationLock;

public class ExportPackagesDetailsPage extends PkgPatternsDetailsPage<ExportedPackage> {

    private final ModificationLock modifyLock = new ModificationLock();
    private Button btnProvide;

    public ExportPackagesDetailsPage() {
        super("Export Package Details");
    }

    @Override
    public void createContents(Composite parent) {
        super.createContents(parent);

        Composite mainComposite = getMainComposite();

        FormToolkit toolkit = getManagedForm().getToolkit();
        toolkit.createLabel(mainComposite, ""); // Spacer

        btnProvide = toolkit.createButton(mainComposite, "Provide", SWT.CHECK);
        btnProvide.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (!modifyLock.isUnderModification()) {
                    boolean provide = btnProvide.getSelection();
                    for (ExportedPackage export : selectedClauses) {
                        export.setProvided(provide);
                    }
                    PkgPatternsListPart<ExportedPackage> listPart = getListPart();
                    if (listPart != null) {
                        listPart.updateLabels(selectedClauses);
                        listPart.validate();
                    }
                    markDirty();
                }
            }
        });
    }

    @Override
    public void refresh() {
        super.refresh();
        modifyLock.modifyOperation(new Runnable() {
            public void run() {
                if (selectedClauses.isEmpty())
                    updateButton(false, false, false);
                else if (selectedClauses.size() == 1)
                    updateButton(true, false, selectedClauses.get(0).isProvided());
                else {
                    boolean differs = false;
                    boolean first = selectedClauses.get(0).isProvided();
                    for (ExportedPackage export : selectedClauses) {
                        differs = (first != export.isProvided());
                        if (differs)
                            break;
                    }
                    if (differs)
                        updateButton(true, true, false);
                    else
                        updateButton(true, false, first);
                }
            }
        });
    }

    private void updateButton(boolean enabled, boolean grayed, boolean value) {
        btnProvide.setEnabled(enabled);
        btnProvide.setGrayed(grayed);
        if (enabled && !grayed)
            btnProvide.setSelection(value);
    }
}
TOP

Related Classes of bndtools.editor.exports.ExportPackagesDetailsPage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.