package com.liferay.ide.project.core.modules; import com.liferay.ide.core.util.CoreUtil; import java.util.List; import org.eclipse.core.resources.IFolder; 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.JavaModelException; import org.eclipse.sapphire.DefaultValueService; import org.eclipse.sapphire.FilteredListener; import org.eclipse.sapphire.PropertyContentEvent; /** * @author Gregory Amerson */ public class JavaPackageNameDefaultValueService extends DefaultValueService { @Override protected String compute() { String retval = null; final IJavaProject project = context( NewLiferayComponentOp.class ).adapt( IJavaProject.class ); if( project != null ) { try { final List<IFolder> srcFolders = CoreUtil.getSourceFolders( project ); final IPackageFragmentRoot[] roots = project.getAllPackageFragmentRoots(); if( !CoreUtil.isNullOrEmpty( roots ) ) { for( IPackageFragmentRoot root : roots ) { final IJavaElement[] packages = root.getChildren(); if( !CoreUtil.isNullOrEmpty( packages ) ) { for( IJavaElement element : packages ) { if( element instanceof IPackageFragment ) { final IPackageFragment fragment = (IPackageFragment) element; boolean isInSourceFolder = false; for( IFolder srcFolder : srcFolders ) { if( srcFolder.getFullPath().isPrefixOf( fragment.getPath() ) ) { isInSourceFolder = true; break; } } if( isInSourceFolder ) { final String elementName = fragment.getElementName(); if( !CoreUtil.isNullOrEmpty( elementName ) ) { retval = elementName; } } } } } } } } catch( JavaModelException e ) { } } return retval; } @Override protected void initDefaultValueService() { super.initDefaultValueService(); FilteredListener<PropertyContentEvent> listener = new FilteredListener<PropertyContentEvent>() { @Override protected void handleTypedEvent( PropertyContentEvent event ) { refresh(); } }; op().property( NewLiferayComponentOp.PROP_PROJECT_NAME ).attach( listener ); } private NewLiferayComponentOp op() { return context( NewLiferayComponentOp.class ); } }