net.sourceforge.eclipseccase.ui.dialogs.SelectViewDialog.java Source code

Java tutorial

Introduction

Here is the source code for net.sourceforge.eclipseccase.ui.dialogs.SelectViewDialog.java

Source

/*******************************************************************************
 * Copyright (c) 2013 eclipse-ccase.sourceforge.net.
 * All rights reserved. This program and the accompanying materials 
 * are made available under the terms of the Common Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/cpl-v10.html
 * 
 * Contributors:
 *     eraonel - inital API and implementation
 *     IBM Corporation - concepts and ideas from Eclipse
 *******************************************************************************/
package net.sourceforge.eclipseccase.ui.dialogs;

import java.lang.reflect.InvocationTargetException;
import net.sourceforge.eclipseccase.ClearCaseProvider;
import net.sourceforge.eclipseccase.ui.provider.ActivityListLabelProvider;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.dialogs.*;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.viewers.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.progress.IProgressService;

public class SelectViewDialog extends Dialog {

    private ComboViewer comboViewer;

    private String[] views = new String[0];

    private String selectedView = null;

    private Text manualViewText = null;

    private String manualView = null;

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

    @Override
    protected Control createDialogArea(Composite parent) {
        getShell().setText("Select View");
        Composite composite = new Composite(parent, SWT.NULL);
        composite.setLayoutData(new GridData(GridData.FILL_BOTH));
        GridLayout layout = new GridLayout();
        layout.numColumns = 1;
        composite.setLayout(layout);
        final ClearCaseProvider provider = new ClearCaseProvider();
        //Show that operation is ongoing...
        IWorkbench wb = PlatformUI.getWorkbench();
        IProgressService ps = wb.getProgressService();
        try {
            ps.busyCursorWhile(new IRunnableWithProgress() {
                public void run(IProgressMonitor pm) {
                    views = provider.getViewNames();
                }
            });
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        if (views.length == 0) {
            System.out.println("Something went wrong during listing views.");
            MessageDialog.openError(getShell(), "Error", "Something went wrong during listing views.");
        }
        Label label = new Label(composite, SWT.NULL);
        label.setLayoutData(new GridData());
        label.setText("User views:");

        comboViewer = createComboViewer(composite, views);
        // sets first element ( view) i array.
        if (views.length > 0) {
            comboViewer.setSelection(new StructuredSelection(views[0]), true);
        }
        comboViewer.addSelectionChangedListener(new ISelectionChangedListener() {

            public void selectionChanged(SelectionChangedEvent event) {
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                selectedView = (String) selection.getFirstElement();
            }
        });
        comboViewer.addDoubleClickListener(new IDoubleClickListener() {
            public void doubleClick(DoubleClickEvent event) {
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                selectedView = (String) selection.getFirstElement();
                manualViewText.setText("");
            }
        });

        label = new Label(composite, SWT.NULL);
        label.setLayoutData(new GridData());
        label.setText("Enter view name manually:");

        manualViewText = new Text(composite, SWT.BORDER);
        GridData data = new GridData();
        data.widthHint = 400;
        manualViewText.addModifyListener(new ModifyListener() {
            public void modifyText(ModifyEvent event) {
                manualView = manualViewText.getText();
            }
        });

        manualViewText.setLayoutData(data);

        return composite;
    }

    protected ComboViewer createComboViewer(Composite composite, String[] activities) {
        ComboViewer comboViewer = new ComboViewer(composite, SWT.DROP_DOWN | SWT.READ_ONLY);
        comboViewer.setLabelProvider(new ActivityListLabelProvider());
        comboViewer.setContentProvider(new ArrayContentProvider());
        comboViewer.setInput(views);

        GridData data = new GridData(GridData.FILL_HORIZONTAL);
        data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
        comboViewer.getCombo().setLayoutData(data);

        return comboViewer;
    }

    public String getSelectedView() {
        return selectedView;
    }

    public void setSelectedView(String selectedView) {
        this.selectedView = selectedView;
    }

    public String getManualView() {
        return manualView;
    }

}