com.siteview.mde.internal.ui.wizards.RequiredPluginsContainerPage.java Source code

Java tutorial

Introduction

Here is the source code for com.siteview.mde.internal.ui.wizards.RequiredPluginsContainerPage.java

Source

/*******************************************************************************
 *  Copyright (c) 2000, 2008 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.wizards;

import com.siteview.mde.core.monitor.IMonitorModelBase;
import com.siteview.mde.core.monitor.MonitorRegistry;

import org.eclipse.core.runtime.IPath;
import org.eclipse.jdt.core.*;
import org.eclipse.jdt.ui.JavaUI;
import org.eclipse.jdt.ui.wizards.IClasspathContainerPage;
import org.eclipse.jdt.ui.wizards.IClasspathContainerPageExtension;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.viewers.*;
import org.eclipse.jface.wizard.WizardPage;
import com.siteview.mde.internal.core.ClasspathComputer;
import com.siteview.mde.internal.core.RequiredMonitorsClasspathContainer;
import com.siteview.mde.internal.ui.*;
import com.siteview.mde.internal.ui.elements.DefaultContentProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;

public class RequiredPluginsContainerPage extends WizardPage
        implements IClasspathContainerPage, IClasspathContainerPageExtension {
    private IClasspathEntry entry;
    private TableViewer viewer;
    private Image projectImage;
    private Image libraryImage;
    private Image slibraryImage;
    private IClasspathEntry[] realEntries;
    private IJavaProject javaProject;

    class EntryContentProvider extends DefaultContentProvider implements IStructuredContentProvider {
        public Object[] getElements(Object parent) {
            if (realEntries != null)
                return realEntries;
            return new Object[0];
        }
    }

    //   class EntrySorter extends ViewerSorter {
    //      public int category(Object obj) {
    //         IClasspathEntry entry = (IClasspathEntry) obj;
    //         return entry.getEntryKind() == IClasspathEntry.CPE_PROJECT
    //            ? -10
    //            : 0;
    //      }
    //   }

    class EntryLabelProvider extends LabelProvider implements ITableLabelProvider {
        public String getText(Object obj) {
            IClasspathEntry entry = (IClasspathEntry) obj;
            int kind = entry.getEntryKind();
            if (kind == IClasspathEntry.CPE_PROJECT)
                return entry.getPath().segment(0);
            IPath path = entry.getPath();
            String name = path.lastSegment();
            return name + " - " //$NON-NLS-1$
                    + path.uptoSegment(path.segmentCount() - 1).toOSString();
        }

        public Image getImage(Object obj) {
            IClasspathEntry entry = (IClasspathEntry) obj;
            int kind = entry.getEntryKind();
            if (kind == IClasspathEntry.CPE_PROJECT)
                return projectImage;
            else if (kind == IClasspathEntry.CPE_LIBRARY) {
                IPath sourceAtt = entry.getSourceAttachmentPath();
                return sourceAtt != null ? slibraryImage : libraryImage;
            }
            return null;
        }

        public String getColumnText(Object obj, int col) {
            return getText(obj);
        }

        public Image getColumnImage(Object obj, int col) {
            return getImage(obj);
        }
    }

    /**
     * The constructor.
     */
    public RequiredPluginsContainerPage() {
        super("requiredPluginsContainerPage"); //$NON-NLS-1$
        setTitle(MDEUIMessages.RequiredPluginsContainerPage_title);
        setDescription(MDEUIMessages.RequiredPluginsContainerPage_desc);
        projectImage = PlatformUI.getWorkbench().getSharedImages().getImage(IDE.SharedImages.IMG_OBJ_PROJECT);
        //libraryImage = PDEPluginImages.DESC_BUILD_VAR_OBJ.createImage();
        libraryImage = JavaUI.getSharedImages()
                .getImage(org.eclipse.jdt.ui.ISharedImages.IMG_OBJS_EXTERNAL_ARCHIVE);
        slibraryImage = JavaUI.getSharedImages()
                .getImage(org.eclipse.jdt.ui.ISharedImages.IMG_OBJS_EXTERNAL_ARCHIVE_WITH_SOURCE);
        setImageDescriptor(MDEPluginImages.DESC_CONVJPPRJ_WIZ);
    }

    /**
     * Insert the method's description here.
     * @see WizardPage#createControl
     */
    public void createControl(Composite parent) {
        Composite container = new Composite(parent, SWT.NULL);
        container.setLayout(new GridLayout());
        Label label = new Label(container, SWT.NULL);
        label.setText(MDEUIMessages.RequiredPluginsContainerPage_label);
        viewer = new TableViewer(container, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
        viewer.setContentProvider(new EntryContentProvider());
        viewer.setLabelProvider(new EntryLabelProvider());
        viewer.setComparator(new ViewerComparator());

        GridData gd = new GridData(GridData.FILL_BOTH);
        gd.widthHint = 400;
        gd.heightHint = 300;
        viewer.getTable().setLayoutData(gd);

        PlatformUI.getWorkbench().getHelpSystem().setHelp(container, IHelpContextIds.PLUGINS_CONTAINER_PAGE);
        setControl(container);
        Dialog.applyDialogFont(container);
        if (realEntries != null)
            initializeView();

        PlatformUI.getWorkbench().getHelpSystem().setHelp(container, IHelpContextIds.REQUIRED_PLUINGS_CONTAINER);
    }

    /**
     * Insert the method's description here.
     * @see WizardPage#finish
     */
    public boolean finish() {
        return true;
    }

    /**
     * Insert the method's description here.
     * @see WizardPage#getSelection
     */
    public IClasspathEntry getSelection() {
        return entry;
    }

    public void initialize(IJavaProject project, IClasspathEntry[] currentEntries) {
        javaProject = project;
    }

    /**
     * Insert the method's description here.
     * @see WizardPage#setSelection
     */
    public void setSelection(IClasspathEntry containerEntry) {
        this.entry = containerEntry;
        createRealEntries();
        if (viewer != null)
            initializeView();
    }

    private void createRealEntries() {
        IJavaProject javaProject = getJavaProject();
        if (javaProject == null) {
            realEntries = new IClasspathEntry[0];
            return;
        }

        if (entry == null) {
            entry = ClasspathComputer.createContainerEntry();
            IMonitorModelBase model = MonitorRegistry.findModel(javaProject.getProject());
            if (model != null) {
                IClasspathContainer container = new RequiredMonitorsClasspathContainer(model);
                if (container != null)
                    realEntries = container.getClasspathEntries();
            }
        } else {
            try {
                IClasspathContainer container = JavaCore.getClasspathContainer(entry.getPath(), javaProject);
                if (container != null)
                    realEntries = container.getClasspathEntries();
            } catch (JavaModelException e) {
            }
        }
        if (realEntries == null)
            realEntries = new IClasspathEntry[0];
    }

    private IJavaProject getJavaProject() {
        return javaProject;
    }

    private void initializeView() {
        viewer.setInput(entry);
    }
}