org.eclipse.cdt.arduino.ui.internal.downloads.SelectLibrariesDialog.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.cdt.arduino.ui.internal.downloads.SelectLibrariesDialog.java

Source

/*******************************************************************************
 * Copyright (c) 2016 QNX Software Systems 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
 *******************************************************************************/
package org.eclipse.cdt.arduino.ui.internal.downloads;

import java.util.Collection;

import org.eclipse.cdt.arduino.core.internal.board.ArduinoLibrary;
import org.eclipse.cdt.arduino.ui.internal.FormTextHoverManager;
import org.eclipse.cdt.arduino.ui.internal.LibraryTree;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;

public class SelectLibrariesDialog extends Dialog {

    private Collection<ArduinoLibrary> libraries;
    private Collection<ArduinoLibrary> checkedLibraries;
    private LibraryTree libraryTree;

    public SelectLibrariesDialog(Shell parentShell) {
        super(parentShell);
    }

    @Override
    protected boolean isResizable() {
        return true;
    }

    @Override
    protected Point getInitialSize() {
        Point size = super.getInitialSize();
        if (size.x < 600 || size.y < 400) {
            return new Point(600, 400);
        } else {
            return size;
        }
    }

    public void setLibraries(Collection<ArduinoLibrary> libraries) {
        this.libraries = libraries;
    }

    public Collection<ArduinoLibrary> getChecked() {
        return checkedLibraries;
    }

    @Override
    protected Control createDialogArea(Composite parent) {
        Composite comp = new Composite(parent, SWT.NONE);
        comp.setLayoutData(new GridData(GridData.FILL_BOTH));
        comp.setLayout(new GridLayout());

        libraryTree = new LibraryTree(comp);
        libraryTree.setLayoutData(new GridData(GridData.FILL_BOTH));
        libraryTree.setIncludePlatforms(false);
        libraryTree.getViewer().setInput(libraries);

        FormTextHoverManager hoverManager = new FormTextHoverManager() {
            @Override
            protected void computeInformation() {
                TreeViewer viewer = libraryTree.getViewer();
                Tree tree = viewer.getTree();
                TreeItem item = tree.getItem(getHoverEventLocation());
                if (item != null) {
                    Object data = item.getData();
                    if (data instanceof ArduinoLibrary) {
                        ArduinoLibrary library = (ArduinoLibrary) data;
                        setInformation(library.toFormText(), item.getBounds());
                    }
                } else {
                    setInformation(null, null);
                }
            }
        };
        hoverManager.install(libraryTree.getViewer().getTree());

        applyDialogFont(comp);
        return comp;
    }

    @Override
    protected void okPressed() {
        checkedLibraries = libraryTree.getChecked();
        super.okPressed();
    }

}