// Copyright (c) 2003-2005 by Leif Frenzel - see http://leiffrenzel.de package net.sf.eclipsefp.haskell.core.code; import java.util.Set; import net.sf.eclipsefp.haskell.core.cabalmodel.PackageDescriptionStanza; import net.sf.eclipsefp.haskell.core.preferences.ICorePreferenceNames; import net.sf.eclipsefp.haskell.core.util.ResourceUtil; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IPath; /** <p>holds detailed information about the module which is to be created * in the 'New Module' wizard.</p> * * @author Leif Frenzel */ public class ModuleCreationInfo { private String moduleName = ""; //$NON-NLS-1$ private IPath folders; private IContainer sourceContainer; private EHaskellCommentStyle fCommentStyle = EHaskellCommentStyle.USUAL; private Set<PackageDescriptionStanza> included; private Set<PackageDescriptionStanza> exposed; private PackageDescriptionStanza editorStanza; /** * are the source folders used to generate the qualified name */ private boolean foldersQualify=true; /** * the name of the preference defining the module template */ private String templatePreferenceName=ICorePreferenceNames.TEMPLATE_MODULE; private IProject project; // attribute setters and getters //////////////////////////////// public ModuleCreationInfo() { super(); } public ModuleCreationInfo(final IFile f) { super(); this.project=f.getProject(); IContainer src=ResourceUtil.getSourceContainer( f ); setSourceContainer( src ); if (src!=null){ IPath p=ResourceUtil.getSourceRelativePath( src, f ); setFolders(p); } setModuleName( f.getProjectRelativePath().removeFileExtension().lastSegment() ); } public IPath getFolders() { return folders; } public void setFolders( final IPath folders ) { this.folders = folders; } public String getModuleName() { return this.moduleName; } public String getQualifiedModuleName(){ StringBuilder sb=new StringBuilder(); if (foldersQualify && getFolders()!=null && getFolders().segmentCount()>0){ String ps=getFolders().toPortableString().replace( '/', '.' ) ; sb.append(ps); if (!ps.endsWith( "." )){ //$NON-NLS-1$ sb.append("."); //$NON-NLS-1$ } } sb.append(getModuleName()); return sb.toString(); } public void setModuleName( final String moduleName ) { this.moduleName = moduleName; } public IContainer getSourceContainer() { return sourceContainer; } public void setSourceContainer( final IContainer sourceContainer ) { this.sourceContainer = sourceContainer; if (this.sourceContainer!=null){ this.project=this.sourceContainer.getProject(); } } public EHaskellCommentStyle getCommentStyle() { return fCommentStyle; } public void setCommentStyle( final EHaskellCommentStyle style ) { fCommentStyle = style; } public Set<PackageDescriptionStanza> getIncluded() { return included; } public void setIncluded( final Set<PackageDescriptionStanza> included ) { this.included = included; } public Set<PackageDescriptionStanza> getExposed() { return exposed; } public void setExposed( final Set<PackageDescriptionStanza> exposed ) { this.exposed = exposed; } public boolean isFoldersQualify() { return foldersQualify; } public void setFoldersQualify( final boolean foldersQualify ) { this.foldersQualify = foldersQualify; } public PackageDescriptionStanza getEditorStanza() { return editorStanza; } public void setEditorStanza( final PackageDescriptionStanza editorStanza ) { this.editorStanza = editorStanza; } public IProject getProject() { return project; } public void setProject( final IProject project ) { this.project = project; } public String getTemplatePreferenceName() { return templatePreferenceName; } public void setTemplatePreferenceName( final String templatePreferenceName ) { this.templatePreferenceName = templatePreferenceName; } }