com.siteview.mde.internal.ui.parts.WizardCheckboxTablePart.java Source code

Java tutorial

Introduction

Here is the source code for com.siteview.mde.internal.ui.parts.WizardCheckboxTablePart.java

Source

/*******************************************************************************
 *  Copyright (c) 2000, 2010 IBM Corporation 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
 * 
 *  Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package com.siteview.mde.internal.ui.parts;

import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.osgi.util.NLS;
import com.siteview.mde.internal.ui.MDEUIMessages;
import com.siteview.mde.internal.ui.util.SWTUtil;
import com.siteview.mde.internal.ui.wizards.ListUtil;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.*;
import org.eclipse.ui.forms.widgets.FormToolkit;

public class WizardCheckboxTablePart extends CheckboxTablePart {
    private int selectAllIndex = -1;
    private int deselectAllIndex = -1;
    private int selectIndex = -1;
    private int deselectIndex = -1;
    private String tableName;
    private int counter;
    private Label counterLabel;

    /**
     * Constructor for WizardCheckboxTablePart.
     * @param buttonLabels
     */
    public WizardCheckboxTablePart(String tableName, String[] buttonLabels) {
        super(buttonLabels);
        this.tableName = tableName;
    }

    public WizardCheckboxTablePart(String mainLabel) {
        this(mainLabel, new String[] { MDEUIMessages.WizardCheckboxTablePart_selectAll,
                MDEUIMessages.WizardCheckboxTablePart_deselectAll, MDEUIMessages.WizardCheckboxTablePart_select,
                MDEUIMessages.WizardCheckboxTablePart_deselect });
        setSelectAllIndex(0);
        setDeselectAllIndex(1);
        setSelectIndex(2);
        setDeselectIndex(3);
    }

    public void setSelectAllIndex(int index) {
        this.selectAllIndex = index;
    }

    public void setDeselectAllIndex(int index) {
        this.deselectAllIndex = index;
    }

    public void setSelectIndex(int index) {
        this.selectIndex = index;
    }

    public void setDeselectIndex(int index) {
        this.deselectIndex = index;
    }

    protected void buttonSelected(Button button, int index) {
        if (index == selectAllIndex) {
            handleSelectAll(true);
        }
        if (index == deselectAllIndex) {
            handleSelectAll(false);
        }
        if (index == selectIndex) {
            handleSelect(true);
        }
        if (index == deselectIndex) {
            handleSelect(false);
        }
    }

    public Object[] getSelection() {
        CheckboxTableViewer viewer = getTableViewer();
        return viewer.getCheckedElements();
    }

    public void setSelection(Object[] selected) {
        CheckboxTableViewer viewer = getTableViewer();
        viewer.setCheckedElements(selected);
        updateCounter(viewer.getCheckedElements().length);
    }

    public void createControl(Composite parent) {
        createControl(parent, 2);
    }

    public void createControl(Composite parent, int span) {
        createControl(parent, SWT.NULL, span, null);
        counterLabel = new Label(parent, SWT.NULL);
        GridData gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING | GridData.HORIZONTAL_ALIGN_FILL);
        gd.horizontalSpan = span;
        counterLabel.setLayoutData(gd);
        updateCounter(0);
    }

    public void createControl(Composite parent, int span, boolean multiselect) {
        if (multiselect) {
            createControl(parent, SWT.MULTI, span, null);
        } else {
            createControl(parent, SWT.NULL, span, null);
        }
        counterLabel = new Label(parent, SWT.NULL);
        GridData gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING | GridData.HORIZONTAL_ALIGN_FILL);
        gd.horizontalSpan = span;
        counterLabel.setLayoutData(gd);
        updateCounter(0);
    }

    protected Button createButton(Composite parent, String label, int index, FormToolkit toolkit) {
        Button button = super.createButton(parent, label, index, toolkit);
        SWTUtil.setButtonDimensionHint(button);
        return button;
    }

    protected StructuredViewer createStructuredViewer(Composite parent, int style, FormToolkit toolkit) {
        StructuredViewer viewer = super.createStructuredViewer(parent, style, toolkit);
        viewer.setComparator(ListUtil.NAME_COMPARATOR);
        return viewer;
    }

    protected void createMainLabel(Composite parent, int span, FormToolkit toolkit) {
        if (tableName == null)
            return;
        Label label = new Label(parent, SWT.NULL);
        label.setText(tableName);
        GridData gd = new GridData();
        gd.horizontalSpan = span;
        label.setLayoutData(gd);
    }

    protected void updateCounter(int amount) {
        counter = amount;
        updateCounterLabel();
    }

    public void updateCount(int amount) {
        updateCounter(amount);
    }

    protected void updateCounterLabel() {
        String number = "" + getSelectionCount(); //$NON-NLS-1$
        String totalNumber = "" + getTotalCount(); //$NON-NLS-1$
        String message = NLS.bind(MDEUIMessages.WizardCheckboxTablePart_counter,
                (new String[] { number, totalNumber }));
        counterLabel.setText(message);
    }

    public int getSelectionCount() {
        return counter;
    }

    public void selectAll(boolean select) {
        handleSelectAll(select);
    }

    private int getTotalCount() {
        CheckboxTableViewer viewer = getTableViewer();
        return viewer.getTable().getItemCount();
    }

    protected void handleSelectAll(boolean select) {
        CheckboxTableViewer viewer = getTableViewer();
        viewer.setAllChecked(select);
        int selected;
        if (!select) {
            selected = 0;
        } else {
            selected = getTotalCount();
        }
        updateCounter(selected);
    }

    protected void handleSelect(boolean select) {
        CheckboxTableViewer viewer = getTableViewer();
        if (viewer.getTable().getSelection().length > 0) {
            TableItem[] selected = viewer.getTable().getSelection();
            for (int i = 0; i < selected.length; i++) {
                TableItem item = selected[i];
                item.setChecked(select);
            }
            updateCounter(viewer.getCheckedElements().length);
        }
    }

    protected void elementChecked(Object element, boolean checked) {
        int count = getSelectionCount();
        updateCounter(checked ? count + 1 : count - 1);
    }

    public Label getCounterLabel() {
        return counterLabel;
    }
}