org.activiti.designer.eclipse.navigator.cloudrepo.dialog.SelectFolderForDownloadDialog.java Source code

Java tutorial

Introduction

Here is the source code for org.activiti.designer.eclipse.navigator.cloudrepo.dialog.SelectFolderForDownloadDialog.java

Source

/* Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.activiti.designer.eclipse.navigator.cloudrepo.dialog;

import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TreeSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
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.Shell;
import org.eclipse.ui.model.WorkbenchLabelProvider;

public class SelectFolderForDownloadDialog extends TitleAreaDialog {

    protected IResource currentlySelectedResource;

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

    @Override
    public void create() {
        super.create();
        setTitle("Destination folder for the process(es)");
        setMessage("Select a folder to which the selected process(es) will be downloaded.",
                IMessageProvider.INFORMATION);
    }

    @Override
    protected Control createDialogArea(Composite parent) {
        Composite area = (Composite) super.createDialogArea(parent);
        Composite container = new Composite(area, SWT.NONE);
        container.setLayoutData(new GridData(GridData.FILL_BOTH));

        GridLayout layout = new GridLayout(2, false);
        container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
        container.setLayout(layout);

        // Project tree viewer
        final TreeViewer projectTreeViewer = new TreeViewer(container, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
        projectTreeViewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
        projectTreeViewer.setContentProvider(new FileTreeContentProvider());
        projectTreeViewer.setLabelProvider(WorkbenchLabelProvider.getDecoratingWorkbenchLabelProvider());
        projectTreeViewer.setInput(ResourcesPlugin.getWorkspace());

        // Expand current selection on double click
        projectTreeViewer.addDoubleClickListener(new OpenFolderOnDoubleClickListener());

        // Selection listener for folders
        projectTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() {

            @Override
            public void selectionChanged(SelectionChangedEvent event) {
                TreeSelection selection = (TreeSelection) event.getSelection();
                Object[] selectedElements = selection.toArray();
                if (selectedElements != null && selectedElements.length > 0) {
                    Object selectedElement = selectedElements[0]; // Tree is single selection
                    if (selectedElement instanceof IResource) {
                        currentlySelectedResource = (IResource) selectedElement;
                        Button okButton = getButton(IDialogConstants.OK_ID);
                        if (okButton != null) {
                            okButton.setEnabled(true);
                        }
                    }
                } else {
                    Button okButton = getButton(IDialogConstants.OK_ID);
                    if (okButton != null) {
                        okButton.setEnabled(false);
                    }
                }
            }
        });

        return area;
    }

    @Override
    protected void createButtonsForButtonBar(Composite parent) {
        super.createButtonsForButtonBar(parent);

        // OK button is disabled on creation
        getButton(IDialogConstants.OK_ID).setEnabled(false);

        // Click listener for OK button: download files
        getButton(IDialogConstants.OK_ID).addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (currentlySelectedResource instanceof IContainer) {

                    DownloadCurrentlySelectedFilesJob job = new DownloadCurrentlySelectedFilesJob(getShell(),
                            (IContainer) currentlySelectedResource);
                    job.setUser(true);
                    job.schedule();

                }
            }
        });
    }

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

    @Override
    protected Point getInitialSize() {
        return new Point(600, 500);
    }

}