diff options
Diffstat (limited to 'core/source/org/openoffice/ide/eclipse/core/gui/PackageContentSelector.java')
-rw-r--r-- | core/source/org/openoffice/ide/eclipse/core/gui/PackageContentSelector.java | 68 |
1 files changed, 60 insertions, 8 deletions
diff --git a/core/source/org/openoffice/ide/eclipse/core/gui/PackageContentSelector.java b/core/source/org/openoffice/ide/eclipse/core/gui/PackageContentSelector.java index b1194b6..3271a16 100644 --- a/core/source/org/openoffice/ide/eclipse/core/gui/PackageContentSelector.java +++ b/core/source/org/openoffice/ide/eclipse/core/gui/PackageContentSelector.java @@ -30,6 +30,7 @@ ************************************************************************/ package org.openoffice.ide.eclipse.core.gui; +import java.io.File; import java.util.ArrayList; import java.util.List; @@ -50,9 +51,13 @@ import org.eclipse.ui.internal.ide.dialogs.ResourceTreeAndListGroup; import org.eclipse.ui.model.WorkbenchContentProvider; import org.eclipse.ui.model.WorkbenchLabelProvider; import org.openoffice.ide.eclipse.core.PluginLogger; +import org.openoffice.ide.eclipse.core.internal.helpers.UnoidlProjectHelper; import org.openoffice.ide.eclipse.core.model.IUnoidlProject; import org.openoffice.ide.eclipse.core.model.ProjectsManager; +import org.openoffice.ide.eclipse.core.model.language.ILanguageBuilder; +import org.openoffice.ide.eclipse.core.model.utils.SystemHelper; import org.openoffice.ide.eclipse.core.utils.FilesFinder; +import org.openoffice.plugin.core.model.UnoPackage; /** * Common helper GUI part to select elements to add in the UNO package to be exported. @@ -64,6 +69,7 @@ import org.openoffice.ide.eclipse.core.utils.FilesFinder; public class PackageContentSelector extends Composite { private ResourceTreeAndListGroup mResourceGroup; + private IUnoidlProject mProject; /** * Constructor based on SWT composite's one. @@ -90,22 +96,22 @@ public class PackageContentSelector extends Composite { * * @param pPrj the project to show. */ - public void setProject(IProject pPrj) { - mResourceGroup.setRoot( pPrj ); + public void setProject(IUnoidlProject pPrj) { + mProject = pPrj; + IProject prj = ResourcesPlugin.getWorkspace().getRoot().getProject( mProject.getName() ); + mResourceGroup.setRoot( prj ); } /** - * Populate the resource view with some fresh data. - * - * @param pSelectedProject the UNO project for which to show the resources + * Populate the resource view with some default data (mainly the XCU / XCS files). */ - public void loadData( IUnoidlProject pSelectedProject ) { + public void loadDefaults( ) { // Select the XCU / XCS files by default - IProject prj = ResourcesPlugin.getWorkspace().getRoot().getProject( pSelectedProject.getName() ); + IProject prj = ResourcesPlugin.getWorkspace().getRoot().getProject( mProject.getName() ); FilesFinder finder = new FilesFinder( new String[] { IUnoidlProject.XCU_EXTENSION, IUnoidlProject.XCS_EXTENSION } ); try { - finder.addExclude( pSelectedProject.getDistFolder().getFullPath() ); + finder.addExclude( mProject.getDistFolder().getFullPath() ); prj.accept( finder ); } catch (CoreException e) { PluginLogger.error("Could not visit the project's content.", e); @@ -137,6 +143,52 @@ public class PackageContentSelector extends Composite { } /** + * Convenience method to create and populate the UnoPackage. + * + * @param pProject the project to export + * @param pDestFile the file to export to + * @param pResources the files and folder to add to the OXT + * + * @return the populated package model + * + * @throws Exception if anything goes wrong. + */ + public static UnoPackage createPackage( IUnoidlProject pProject, File pDestFile, + List<?> pResources ) throws Exception { + UnoPackage pack = null; + + File prjFile = SystemHelper.getFile( pProject ); + + // Export the library + IFile library = null; + ILanguageBuilder langBuilder = pProject.getLanguage().getLanguageBuidler(); + library = langBuilder.createLibrary( pProject ); + + // Create the package model + pack = UnoidlProjectHelper.createMinimalUnoPackage( pProject, pDestFile ); + pack.addToClean( SystemHelper.getFile( library ) ); + + IFile descrFile = pProject.getFile( IUnoidlProject.DESCRIPTION_FILENAME ); + if ( descrFile.exists() ) { + File resFile = SystemHelper.getFile( descrFile ); + pack.addContent( UnoPackage.getPathRelativeToBase( resFile, prjFile ), + resFile ); + } + + // Add the additional content to the package + for (Object item : pResources) { + if ( item instanceof IResource ) { + File resFile = SystemHelper.getFile( (IResource)item ); + pack.addContent( UnoPackage.getPathRelativeToBase( resFile, prjFile ), + resFile ); + } + } + + + return pack; + } + + /** * @param pResourceType the type of the resources to return by the provider. * * @return a content provider for <code>IResource</code>s that returns |