com.mg.merp.wb.badi.library.util.ContainerPageController.java Source code

Java tutorial

Introduction

Here is the source code for com.mg.merp.wb.badi.library.util.ContainerPageController.java

Source

/* ContainerPageController.java
 *
 * Copyright (c) 1998 - 2006 BusinessTechnology, Ltd.
 * All rights reserved
 *
 * This program is the proprietary and confidential information
 * of BusinessTechnology, Ltd. and may be used and disclosed only
 * as authorized in a license agreement authorizing and
 * controlling such use and disclosure
 *
 * Millennium Business Suite Anywhere System.
 *
 */
package com.mg.merp.wb.badi.library.util;

import com.mg.merp.wb.badi.library.BadiLibraryPlugin;
import com.mg.merp.wb.badi.library.ContainerPage;

import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jface.viewers.CheckStateChangedEvent;
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.swt.graphics.Image;
import org.eclipse.swt.widgets.TableItem;

import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
import java.util.Vector;

/**
 *  ? {@link ContainerPageController}
 *
 * @author Valentin A. Poroxnenko
 * @version $Id: ContainerPageController.java,v 1.2 2006/11/24 09:06:40 poroxnenko Exp $
 */
public class ContainerPageController
        implements IStructuredContentProvider, ITableLabelProvider, ICheckStateListener {

    private ContainerPage page;

    private Set<String> libs;

    private Vector<String> libVector;

    public ContainerPageController(ContainerPage page) {
        this.page = page;
        libs = new LinkedHashSet<String>();
    }

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

    }

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

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

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

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

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

    /*
     * (non-Javadoc)
     *
     * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object,
     *      int)
     */
    public String getColumnText(Object element, int columnIndex) {
        String value = null;
        if (element != null) {
            switch (columnIndex) {
            case 1: {
                String s = ((LibInfo) element).libTitle;
                if (s != null)
                    value = s; //$NON-NLS-1$
                break;
            }
            case 2: {
                String s = ((LibInfo) element).libVersion;
                if (s != null)
                    value = s; //$NON-NLS-1$
                break;
            }
            case 3: {
                String s = ((LibInfo) element).libVendor;
                if (s != null)
                    value = s; //$NON-NLS-1$
                break;
            }

            }
        }

        return value;
    }

    @SuppressWarnings("unchecked")
    public Object[] getElements(Object inputElement) {
        Map<String, LibInfo> input = (Map<String, LibInfo>) inputElement;
        LibInfo[] lis = new LibInfo[input.values().size()];
        libVector = new Vector<String>(input.keySet());
        return input.values().toArray(lis);
    }

    public void checkStateChanged(CheckStateChangedEvent event) {
        if (event.getChecked())
            addArchToMainLib((LibInfo) event.getElement());
        else
            removeArchFromLib((LibInfo) event.getElement());
    }

    private void removeArchFromLib(LibInfo info) {
        libs.remove(info.libName);
        page.setPageComplete(page.isPageComplete());
    }

    private void addArchToMainLib(LibInfo info) {
        addDependencies(info.libName);
        page.setPageComplete(page.isPageComplete());
    }

    private void addDependencies(String libName) {
        libs.add(libName);
        page.getTableViewer().getTable().getItem(libVector.indexOf(libName)).setChecked(true);
        for (String nm : BadiLibraryPlugin.getLibs().get(libName).libDepends) {
            if (!libs.contains(nm))
                addDependencies(nm);
        }

    }

    public void setCheckedElements() {
        for (int i = 0; i < page.getTableViewer().getTable().getItemCount(); i++) {
            TableItem ti = page.getTableViewer().getTable().getItem(i);
            ti.setChecked(libs.contains(((LibInfo) ti.getData()).libName));
        }
    }

    public Set<String> getLibs() {
        return libs;
    }

    public void setLibs(Set<String> libs) {
        this.libs = libs;
    }

    /**
     * ? ??  ,     ,  ? 
     * 
     *
     * @param project  Java-
     */
    public void initLibs(IJavaProject project) {
        libs = BadiLibraryPlugin.initLibsFromPropFile(project);
    }

}