com.clustercontrol.monitor.run.composite.TableItemListComposite.java Source code

Java tutorial

Introduction

Here is the source code for com.clustercontrol.monitor.run.composite.TableItemListComposite.java

Source

/*
    
 Copyright (C) 2014 NTT DATA Corporation
    
 This program is free software; you can redistribute it and/or
 Modify it under the terms of the GNU General Public License
 as published by the Free Software Foundation, version 2.
    
 This program is distributed in the hope that it will be
 useful, but WITHOUT ANY WARRANTY; without even the implied
 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 PURPOSE.  See the GNU General Public License for more details.
    
 */

package com.clustercontrol.monitor.run.composite;

import java.util.List;

import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.ui.PlatformUI;

import com.clustercontrol.dialog.CommonDialog;
import com.clustercontrol.monitor.run.viewer.TableItemTableViewer;
import com.clustercontrol.util.WidgetTestUtil;

/**
 * ??<BR>
 *
 * @version 5.0.0
 * @since 5.0.0
 */
public class TableItemListComposite<T> extends Composite {

    /**  */
    protected TableItemTableViewer m_tableViewer = null;

    /**  */
    protected ITableItemCompositeDefine<T> m_define = null;

    /**
     * ???
     * <p>
     * ??????????
     *
     * @param parent ??
     * @param style 
     * @param tableDefine ?{@link com.clustercontrol.bean.TableColumnInfo}?
     *
     * @see org.eclipse.swt.SWT
     * @see org.eclipse.swt.widgets.Composite#Composite(Composite parent, int style)
     * @see com.clustercontrol.bean.TableColumnInfo#TableColumnInfo(java.lang.String, int, int, int)
     * @see com.clustercontrol.monitor.run.action.GetStringFilterTableDefine
     * @see #initialize()
     */
    public TableItemListComposite(Composite parent, int style, ITableItemCompositeDefine<T> define) {
        super(parent, style);

        this.m_define = define;

        this.initialize();
    }

    /**
     * ?????
     */
    protected void initialize() {
        GridLayout layout = new GridLayout(1, true);
        this.setLayout(layout);
        layout.marginHeight = 0;
        layout.marginWidth = 0;

        Table table = new Table(this, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
        WidgetTestUtil.setTestId(this, null, table);
        table.setHeaderVisible(true);
        table.setLinesVisible(true);

        GridData gridData = new GridData();
        gridData.horizontalAlignment = GridData.FILL;
        gridData.verticalAlignment = GridData.FILL;
        gridData.grabExcessHorizontalSpace = true;
        gridData.grabExcessVerticalSpace = true;
        table.setLayoutData(gridData);

        // ??
        this.m_tableViewer = new TableItemTableViewer(table, this.m_define.getLabelProvider());
        this.m_tableViewer.createTableColumn(this.m_define.getTableDefine());
        this.m_tableViewer.addDoubleClickListener(new IDoubleClickListener() {
            @Override
            public void doubleClick(DoubleClickEvent event) {
                T item = getTableItem();
                if (item != null) {
                    Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
                    CommonDialog dialog = m_define.createDialog(shell, item);
                    if (dialog.open() == IDialogConstants.OK_ID) {
                        Table table = getTableViewer().getTable();
                        WidgetTestUtil.setTestId(this, "doubleclick", table);
                        int selectIndex = table.getSelectionIndex();
                        m_define.getTableItemInfoManager().modify(item, m_define.getCurrentCreatedItem());
                        table.setSelection(selectIndex);
                        update();
                    }
                }
            }
        });
    }

    /**
     * ????????
     *
     * @return 
     */
    public TableItemTableViewer getTableViewer() {
        return this.m_tableViewer;
    }

    /**
     * ????????
     * <p>
     * ?????????<code>null</code>???
     *
     * @return ?
     */
    @SuppressWarnings("unchecked")
    public T getTableItem() {
        StructuredSelection selection = (StructuredSelection) this.m_tableViewer.getSelection();

        if (selection == null) {
            return null;
        } else {
            return (T) selection.getFirstElement();
        }
    }

    /**
     * ??????????
     *
     * @param info ????
     */
    public void setInputData(List<T> items) {

        if (items != null) {
            // 
            m_define.getTableItemInfoManager().initialize(items);
            // ?
            Object[] list = m_define.getTableItemInfoManager().get();

            // 
            this.m_tableViewer.setInput(list);
        }
    }

    /**
     * ????<BR>
     * ???????
     *
     * @see com.clustercontrol.monitor.run.util.StringValueInfoManager#get()
     * @see com.com.clustercontrol.monitor.run.viewer.TableItemTableViewer
     */
    @Override
    public void update() {
        // ?
        Object[] list = m_define.getTableItemInfoManager().get();

        // 
        this.m_tableViewer.setInput(list);
    }

    /**
     * ????????
     * <p>
     * ????????????
     * ????????<code>null</code>???
     *
     * @param monitorInfo ?
     * @return ?
     *
     * @see #setValidateResult(String, String)
     */
    public List<T> getTableItemData() {
        return this.m_define.getTableItemInfoManager().getTableItemInfoList();
    }

    /* (? Javadoc)
     * @see org.eclipse.swt.widgets.Control#setEnabled(boolean)
     */
    @Override
    public void setEnabled(boolean enabled) {
        this.m_tableViewer.getTable().setEnabled(enabled);
    }
}