gov.redhawk.frontend.ui.wizard.AllocateMultipleRxDigitizerWizardPage.java Source code

Java tutorial

Introduction

Here is the source code for gov.redhawk.frontend.ui.wizard.AllocateMultipleRxDigitizerWizardPage.java

Source

/** 
 * This file is protected by Copyright. 
 * Please refer to the COPYRIGHT file distributed with this source distribution.
 * 
 * This file is part of REDHAWK IDE.
 * 
 * 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 gov.redhawk.frontend.ui.wizard;

import gov.redhawk.frontend.TunerContainer;
import gov.redhawk.frontend.TunerStatus;

import java.util.Collections;

import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.viewers.CheckStateChangedEvent;
import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.viewers.ICheckStateListener;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;

public class AllocateMultipleRxDigitizerWizardPage extends WizardPage {

    private String[] tableCloumns = new String[] { "Tuner Instance", "RF Flow ID", "Center Frequency",
            "Bandwidth" };
    private TunerStatus[] tuners;

    protected AllocateMultipleRxDigitizerWizardPage(TunerContainer container) {
        super("Allocate Multiple RX Digitizer Tuners");
        this.tuners = container.getTunerStatus().toArray(new TunerStatus[0]);
    }

    protected AllocateMultipleRxDigitizerWizardPage(TunerStatus[] tuners) {
        super("Allocate Multiple RX Digitizer Tuners");
        this.tuners = tuners;
    }

    @Override
    public void createControl(Composite parent) {
        Composite comp = new Composite(parent, SWT.NONE);
        createGroupControls(comp);
        setControl(comp);

        setTitle("Tuner Selection");
        setDescription("Select the Tuners you would like to allocate. Click \"Next\" to specify"
                + " the allocation parameters for each selected Tuner.");

    }

    private void createGroupControls(Composite parent) {
        GridLayoutFactory.fillDefaults().applyTo(parent);
        Table table = new Table(parent, SWT.CHECK | SWT.MULTI);
        addColumns(table);
        table.setHeaderVisible(true);
        CheckboxTableViewer viewer = new CheckboxTableViewer(table);
        GridDataFactory.fillDefaults().grab(true, true).applyTo(viewer.getControl());
        viewer.setContentProvider(new IStructuredContentProvider() {

            @Override
            public void dispose() {
                // TODO Auto-generated method stub

            }

            @Override
            public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
                // TODO Auto-generated method stub

            }

            @Override
            public Object[] getElements(Object inputElement) {
                if (inputElement instanceof TunerStatus[]) {
                    return (TunerStatus[]) inputElement;
                }
                return Collections.emptyList().toArray(new Object[0]);
            }

        });
        viewer.setLabelProvider(new ITableLabelProvider() {

            @Override
            public void addListener(ILabelProviderListener listener) {
                // TODO Auto-generated method stub

            }

            @Override
            public void dispose() {
                // TODO Auto-generated method stub

            }

            @Override
            public boolean isLabelProperty(Object element, String property) {
                // TODO Auto-generated method stub
                return false;
            }

            @Override
            public void removeListener(ILabelProviderListener listener) {
                // TODO Auto-generated method stub

            }

            @Override
            public Image getColumnImage(Object element, int columnIndex) {
                // TODO Auto-generated method stub
                return null;
            }

            @Override
            public String getColumnText(Object element, int columnIndex) {
                String retVal = "";
                switch (columnIndex) {
                case 0:
                    retVal = ((TunerStatus) element).getTunerID();
                    break;
                case 1:
                    retVal = ((TunerStatus) element).getRfFlowID();
                    if (retVal == null || "".equals(retVal)) {
                        retVal = "[None]";
                    }
                    break;
                case 2:
                    retVal = String.valueOf(((TunerStatus) element).getCenterFrequency());
                    break;
                case 3:
                    retVal = String.valueOf(((TunerStatus) element).getBandwidth());
                    break;
                default:
                }
                return retVal;
            }

        });
        viewer.addCheckStateListener(new ICheckStateListener() {

            @Override
            public void checkStateChanged(CheckStateChangedEvent event) {
                if (event.getChecked()) {
                    ((TunerAllocationDetailWizard) getWizard()).addTuner((TunerStatus) event.getElement());
                } else {
                    ((TunerAllocationDetailWizard) getWizard()).removeTuner((TunerStatus) event.getElement());
                }
                setPageComplete(validate());
            }

        });
        viewer.setInput(tuners);
        setPageComplete(validate());
    }

    private void addColumns(Table table) {
        for (String name : tableCloumns) {
            TableColumn col = new TableColumn(table, SWT.NONE);
            col.setText(name);
            col.setWidth(200);
        }
    }

    @Override
    public boolean canFlipToNextPage() {
        return ((TunerAllocationDetailWizard) getWizard()).getSelectedTunerCount() > 0;
    }

    @Override
    public IWizardPage getPreviousPage() {
        return null;
    }

    private boolean validate() {
        boolean valid = true;
        String msg = null;
        if (((TunerAllocationDetailWizard) getWizard()).getSelectedTunerCount() <= 0) {
            valid = false;
            msg = "Please select a Tuner to allocate";
        }
        setErrorMessage(msg);
        return valid;
    }

}