com.nokia.carbide.remoteconnections.wizard.AbstractImportExportPage.java Source code

Java tutorial

Introduction

Here is the source code for com.nokia.carbide.remoteconnections.wizard.AbstractImportExportPage.java

Source

/*
* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description: 
*
*/

package com.nokia.carbide.remoteconnections.wizard;

import com.nokia.carbide.remoteconnections.RemoteConnectionsActivator;
import com.nokia.carbide.remoteconnections.Messages;
import com.nokia.carbide.remoteconnections.interfaces.IConnection;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.*;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;

import java.util.ArrayList;
import java.util.List;

/**
 * Abstract superclass of import and export page
 */
public abstract class AbstractImportExportPage extends WizardPage {

    protected List<IConnection> connections;
    protected Text pathText;
    protected Button browseButton;
    protected CheckboxTableViewer viewer;
    protected static final ImageDescriptor CONNECTION_IMGDESC = RemoteConnectionsActivator
            .getImageDescriptor("icons/connection.png"); //$NON-NLS-1$
    protected static final Image CONNECTION_IMG = CONNECTION_IMGDESC.createImage();
    private static final String UID = ".uid"; //$NON-NLS-1$

    public AbstractImportExportPage(String pageName) {
        super(pageName);
    }

    public void createControl(Composite parent) {
        initializeDialogUnits(parent);

        Composite composite = new Composite(parent, SWT.NONE);
        composite.setLayout(new GridLayout());
        composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL));
        composite.setSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
        composite.setFont(parent.getFont());
        composite.setData(UID, "ImportExportPage"); //$NON-NLS-1$

        setControl(composite);
    }

    protected void createBrowseGroup(Composite parent, String labelText) {
        Composite composite = new Composite(parent, SWT.NONE);
        GridLayout layout = new GridLayout();
        layout.numColumns = 3;
        composite.setLayout(layout);
        composite.setFont(parent.getFont());
        composite.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL));

        Label label = new Label(composite, SWT.NONE);
        label.setText(labelText);
        label.setFont(parent.getFont());

        pathText = new Text(composite, SWT.BORDER);
        GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL);
        data.widthHint = 250;
        pathText.setLayoutData(data);
        pathText.setFont(parent.getFont());
        pathText.addModifyListener(new ModifyListener() {
            public void modifyText(ModifyEvent e) {
                setPageComplete(validatePage(true));
            }
        });
        pathText.setData(UID, "pathText"); //$NON-NLS-1$
        browseButton = new Button(composite, SWT.PUSH);
        browseButton.setText(Messages.getString("AbstractImportExportPage.BrowseButtonLabel")); //$NON-NLS-1$
        browseButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
        browseButton.setFont(parent.getFont());
        browseButton.setData(UID, "browseButton"); //$NON-NLS-1$
        setButtonLayoutData(browseButton);
    }

    protected void createViewerGroup(Composite parent, String labelText) {
        Label label = new Label(parent, SWT.NONE);
        label.setText(labelText);

        viewer = CheckboxTableViewer.newCheckList(parent, SWT.BORDER);
        TableViewerColumn connectionColumn = new TableViewerColumn(viewer, SWT.CENTER);
        connectionColumn.getColumn().setText(Messages.getString("AbstractImportExportPage.ConnectionColumnLabel")); //$NON-NLS-1$
        connectionColumn.setLabelProvider(new ColumnLabelProvider() {
            @Override
            public Image getImage(Object element) {
                return CONNECTION_IMG;
            }

            @Override
            public String getText(Object element) {
                return ((IConnection) element).getDisplayName();
            }
        });
        TableViewerColumn typeColumn = new TableViewerColumn(viewer, SWT.CENTER);
        typeColumn.getColumn().setText(Messages.getString("AbstractImportExportPage.TypeColumnLabel")); //$NON-NLS-1$
        typeColumn.setLabelProvider(new ColumnLabelProvider() {
            @Override
            public String getText(Object element) {
                return ((IConnection) element).getConnectionType().getDisplayName();
            }
        });

        viewer.getControl().setLayoutData(
                new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL));
        viewer.setContentProvider(new ArrayContentProvider());
        viewer.getTable().setHeaderVisible(true);
        viewer.getControl().setData(UID, "viewer"); //$NON-NLS-1$

        //      Composite buttonComposite = new Composite(parent, SWT.NONE);
        //      buttonComposite.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
        //      buttonComposite.setLayout(new GridLayout());
        //      Button checkAllButton = new Button(buttonComposite, SWT.PUSH);
        //      checkAllButton.setText("Check All");
        //      setButtonLayoutData(checkAllButton);
        //      Button checkNoneButton = new Button(buttonComposite, SWT.PUSH);
        //      checkNoneButton.setText("Uncheck All");
        //      setButtonLayoutData(checkNoneButton);
    }

    protected abstract boolean validatePage(boolean validateFile);

    public List<IConnection> getSelectedConnections() {
        List<IConnection> selectedConnections = new ArrayList<IConnection>();
        for (IConnection connection : connections) {
            if (viewer.getChecked(connection))
                selectedConnections.add(connection);
        }
        return selectedConnections;
    }

}