fede.workspace.eclipse.java.manager.JavaSourceFolderContentManager.java Source code

Java tutorial

Introduction

Here is the source code for fede.workspace.eclipse.java.manager.JavaSourceFolderContentManager.java

Source

/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
 * Copyright (C) 2006-2010 Adele Team/LIG/Grenoble University, France
 */
package fede.workspace.eclipse.java.manager;

import java.util.Set;

import org.eclipse.core.resources.IFolder;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.MultiStatus;
import org.eclipse.core.runtime.Path;
import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.ui.JavaElementLabelProvider;
import org.eclipse.jdt.ui.StandardJavaElementContentProvider;
import org.eclipse.jface.viewers.DecoratingLabelProvider;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.ui.PlatformUI;

import fede.workspace.dependencies.eclipse.java.IJavaItemManager;
import fede.workspace.eclipse.content.FolderContentManager;
import fede.workspace.eclipse.java.JavaProjectManager;
import fede.workspace.tool.eclipse.EclipseTool;
import fr.imag.adele.cadse.core.CadseException;
import java.util.UUID;
import fr.imag.adele.cadse.core.content.ContentItem;
import fr.imag.adele.cadse.core.Item;
import fr.imag.adele.cadse.core.Link;
import fr.imag.adele.cadse.core.impl.var.NullVariable;
import fr.imag.adele.cadse.core.var.ContextVariable;
import fr.imag.adele.cadse.core.var.ContextVariableImpl;
import fr.imag.adele.cadse.core.var.Variable;

/**
 * The Class JavaSourceFolderContentManager.
 * 
 * @author <a href="mailto:stephane.chomat@imag.fr">Stephane Chomat</a>
 */
public class JavaSourceFolderContentManager extends FolderContentManager implements IJavaItemManager {

    /** The output. */
    Variable output;

    /**
     * Instantiates a new java source folder content manager.
     * 
     * @param parent
     *            the parent
     * @param item
     *            the item
     * @param path
     *            the path
     * @param output
     *            the output
     */
    public JavaSourceFolderContentManager(UUID id, Variable path, Variable output) {
        super(id, path);
        this.output = output;

    }

    /**
     * Instantiates a new java source folder content manager.
     * 
     * @param parent
     *            the parent
     * @param item
     *            the item
     */
    public JavaSourceFolderContentManager(UUID id) {
        super(id, JavaProjectManager.DEFAULT_SOURCES_FOLDER_NAME);
        this.output = NullVariable.INSTANCE;
    }

    /*
     * (non-Javadoc)
     * 
     * @see fede.workspace.eclipse.content.FolderContentManager#delete()
     */
    @Override
    public void delete() throws CadseException {
        super.delete();
        try {
            JavaProjectManager.deleteJavaSourceFolder(getOwnerItem(), getFolder(), EclipseTool.getDefaultMonitor());
        } catch (CoreException e) {
            throw new CadseException("Cannot delete java source folder from {0} : {1}", e, getOwnerItem().getName(),
                    e.getMessage());
        }
    }

    /*
     * (non-Javadoc)
     * 
     * @see fede.workspace.eclipse.content.FolderContentManager#create()
     */
    @Override
    public void create() throws CadseException {
        super.create();
        try {
            JavaProjectManager.createJavaSourceFolder(getOwnerItem(), getFolder(),
                    getSpecificOutputFolder(ContextVariableImpl.DEFAULT), EclipseTool.getDefaultMonitor());
        } catch (CoreException e) {
            throw new CadseException("Cannot create java source folder from {0} : {1}", e, getOwnerItem().getName(),
                    e.getMessage());
        }
    }

    /**
     * Gets the specific output folder.
     * 
     * @param cxt
     *            the cxt
     * 
     * @return the specific output folder
     */
    protected IFolder getSpecificOutputFolder(ContextVariable cxt) {
        return getParentContainer(cxt).getFolder(new Path(output.compute(cxt, getOwnerItem())));
    }

    /*
     * (non-Javadoc)
     * 
     * @see fede.workspace.dependencies.eclipse.java.IJavaItemManager#getJavaElement()
     */
    public IJavaElement[] getJavaElement(IJavaProject jpRef) {
        IJavaElement je = JavaCore.create(getFolder());
        if (je != null) {
            return new IJavaElement[] { je };
        }
        return null;
    }

    /*
     * (non-Javadoc)
     * 
     * @see fede.workspace.dependencies.eclipse.java.IJavaItemManager#isTransitiveLink(fr.imag.adele.cadse.core.Link)
     */
    public boolean isTransitiveLink(Link lk) {
        return false;
    }

    /*
     * (non-Javadoc)
     * 
     * @see fede.workspace.eclipse.content.FolderContentManager#getResources(java.lang.String)
     */
    @Override
    public Object[] getResources(String kind) {
        if ("java-source".equals(kind)) {
            return new Object[] { JavaCore.create(getFolder()) };
        }
        return super.getResources(kind);
    }

    /**
     * Gets the java source element.
     * 
     * @return the java source element
     */
    public IPackageFragmentRoot getJavaSourceElement() {
        return (IPackageFragmentRoot) JavaCore.create(getFolder());
    }

    /**
     * Gets the java source element.
     * 
     * @return the java source element
     */
    public IPackageFragmentRoot getJavaSourceElement(ContextVariable cxt) {
        return (IPackageFragmentRoot) JavaCore.create(getFolder(cxt));
    }

    /*
     * (non-Javadoc)
     * 
     * @see fede.workspace.eclipse.content.FolderContentManager#getContentProvider()
     */
    @Override
    public ITreeContentProvider getContentProvider() {
        return new StandardJavaElementContentProvider() {
            @Override
            public Object[] getElements(Object parent) {
                if (parent == JavaSourceFolderContentManager.this) {
                    return new Object[] { getJavaSourceElement() };
                }
                return super.getElements(parent);
            }
        };
    }

    /*
     * (non-Javadoc)
     * 
     * @see fede.workspace.eclipse.content.FolderContentManager#getLabelProvider()
     */
    @Override
    public ILabelProvider getLabelProvider() {
        return new DecoratingLabelProvider(
                new JavaElementLabelProvider(JavaElementLabelProvider.SHOW_BASICS
                        | JavaElementLabelProvider.SHOW_OVERLAY_ICONS | JavaElementLabelProvider.SHOW_SMALL_ICONS
                        | JavaElementLabelProvider.SHOW_VARIABLE | JavaElementLabelProvider.SHOW_PARAMETERS),
                PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator());
    }

    /**
     * Creates the package fragment.
     * 
     * @param name
     *            the name
     * @param force
     *            the force
     * @param monitor
     *            the monitor
     * 
     * @return the i package fragment
     * 
     * @throws JavaModelException
     *             the java model exception
     */
    public IPackageFragment createPackageFragment(String name, boolean force, IProgressMonitor monitor)
            throws JavaModelException {
        IPackageFragmentRoot pfr = getJavaSourceElement();
        return pfr.createPackageFragment(name, force, monitor);
    }

    /**
     * Creates the package fragment.
     * 
     * @param name
     *            the name
     * @param force
     *            the force
     * @param monitor
     *            the monitor
     * 
     * @return the i package fragment
     * 
     * @throws JavaModelException
     *             the java model exception
     */
    public IPackageFragment createPackageFragment(ContextVariable cxt, String name, boolean force,
            IProgressMonitor monitor) throws JavaModelException {
        IPackageFragmentRoot pfr = getJavaSourceElement(cxt);
        return pfr.createPackageFragment(name, force, monitor);
    }

    /*
     * (non-Javadoc)
     * 
     * @see fede.workspace.dependencies.eclipse.java.IJavaItemManager#addDependencyClasspathEntry(fr.imag.adele.cadse.core.Link,
     *      fr.imag.adele.cadse.core.Item, fr.imag.adele.cadse.core.Item,
     *      fede.workspace.dependencies.eclipse.java.IJavaItemManager.DependencyNature,
     *      java.util.Set, org.eclipse.core.runtime.MultiStatus)
     */
    public void addDependencyClasspathEntry(Link requirementLink, Item target, Item source, DependencyNature nature,
            Set<IClasspathEntry> classpath, MultiStatus ms) {
    }

    /*
     * (non-Javadoc)
     * 
     * @see fede.workspace.dependencies.eclipse.java.IJavaItemManager#getPackageName(fr.imag.adele.cadse.core.Item)
     */
    public String getPackageName(Item packageItem) {
        return null;
    }

    /*
     * (non-Javadoc)
     * 
     * @see fede.workspace.dependencies.eclipse.java.IJavaItemManager#getPackageVersion(fr.imag.adele.cadse.core.Item)
     */
    public String getPackageVersion(Item packageItem) {
        return null;
    }

    /*
     * (non-Javadoc)
     * 
     * @see fede.workspace.dependencies.eclipse.java.IJavaItemManager#getPackagesFromProject(fr.imag.adele.cadse.core.Item)
     */
    public Set<Item> getPackagesFromProject(Item projectItem) {
        return null;
    }

    /*
     * (non-Javadoc)
     * 
     * @see fede.workspace.dependencies.eclipse.java.IJavaItemManager#getProjectFromPackage(fr.imag.adele.cadse.core.Item)
     */
    public Set<Item> getProjectFromPackage(Item packageItem) {
        return null;
    }

    /*
     * (non-Javadoc)
     * 
     * @see fede.workspace.dependencies.eclipse.java.IJavaItemManager#resolvePackage(fr.imag.adele.cadse.core.Link,
     *      fr.imag.adele.cadse.core.Item, fr.imag.adele.cadse.core.Item,
     *      fede.workspace.dependencies.eclipse.java.IJavaItemManager.DependencyNature,
     *      java.util.Set, org.eclipse.core.runtime.MultiStatus)
     */
    public void resolvePackage(Link requirementLink, Item target, Item source, DependencyNature nature,
            Set<Item> resolved, MultiStatus ms) {
    }
}