summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCédric Bosdonnat <cedricbosdo@openoffice.org>2010-11-30 22:25:47 +0100
committerCédric Bosdonnat <cedricbosdo@openoffice.org>2010-11-30 22:25:47 +0100
commit6f25a7248561976c60be27255797b8b440d6efae (patch)
treece84455d3db4191b5824457335e71c079ffedaac
parentd907aafe0fce19a3b50bf9c073545f4e95681852 (diff)
[Core] Shared some code between the export wizard and oolaunch
-rw-r--r--core/source/org/openoffice/ide/eclipse/core/gui/PackageContentSelector.java68
-rw-r--r--core/source/org/openoffice/ide/eclipse/core/launch/office/OfficeLaunchDelegate.java67
-rw-r--r--core/source/org/openoffice/ide/eclipse/core/launch/office/PackageConfigTab.java53
-rw-r--r--core/source/org/openoffice/ide/eclipse/core/wizards/pages/UnoPackageExportPage.java40
4 files changed, 120 insertions, 108 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
diff --git a/core/source/org/openoffice/ide/eclipse/core/launch/office/OfficeLaunchDelegate.java b/core/source/org/openoffice/ide/eclipse/core/launch/office/OfficeLaunchDelegate.java
index b6bf935..89b12b3 100644
--- a/core/source/org/openoffice/ide/eclipse/core/launch/office/OfficeLaunchDelegate.java
+++ b/core/source/org/openoffice/ide/eclipse/core/launch/office/OfficeLaunchDelegate.java
@@ -33,11 +33,11 @@ package org.openoffice.ide.eclipse.core.launch.office;
import java.io.File;
import java.io.IOException;
import java.text.MessageFormat;
-import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
-import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -50,15 +50,12 @@ import org.eclipse.debug.core.model.LaunchConfigurationDelegate;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Display;
import org.openoffice.ide.eclipse.core.PluginLogger;
-import org.openoffice.ide.eclipse.core.internal.helpers.UnoidlProjectHelper;
-import org.openoffice.ide.eclipse.core.internal.model.UnoidlProject;
+import org.openoffice.ide.eclipse.core.gui.PackageContentSelector;
import org.openoffice.ide.eclipse.core.model.IUnoidlProject;
import org.openoffice.ide.eclipse.core.model.ProjectsManager;
import org.openoffice.ide.eclipse.core.model.config.IOOo;
import org.openoffice.ide.eclipse.core.model.config.NullExtraOptionsProvider;
-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;
/**
@@ -91,7 +88,7 @@ public class OfficeLaunchDelegate extends LaunchConfigurationDelegate {
return;
}
- String prjName = pConfiguration.getAttribute(IOfficeLaunchConstants.PROJECT_NAME, ""); //$NON-NLS-1$
+ String prjName = pConfiguration.getAttribute(IOfficeLaunchConstants.PROJECT_NAME, new String() );
boolean useCleanUserInstalation = pConfiguration.getAttribute(
IOfficeLaunchConstants.CLEAN_USER_INSTALLATION, false);
@@ -105,7 +102,8 @@ public class OfficeLaunchDelegate extends LaunchConfigurationDelegate {
userInstallation = userInstallationFolder.getLocation();
}
- File destFile = exportComponent(pMonitor, prj);
+ List<IResource> resources = PackageConfigTab.getResources( pConfiguration );
+ File destFile = exportComponent( prj, resources );
pMonitor.worked(1);
// Try to source ooenv if it exists
@@ -191,51 +189,26 @@ public class OfficeLaunchDelegate extends LaunchConfigurationDelegate {
}
/**
- * Will bild and export the .oxt file.
+ * Will build and export the .oxt file.
*
- * @param pMonitor
- * a monitor to report progress to.
* @param pPrj
- * te target project.
+ * the target project.
+ * @param pResources
+ * the resources to add to the package
+ *
* @return the file containing the .oxt file.
* @throws Exception
* if something goes wrong.
*/
- private File exportComponent(IProgressMonitor pMonitor, IUnoidlProject pPrj) throws Exception {
-
- // TODO Repair this one!
-// ILanguageBuilder langBuilder = pPrj.getLanguage().getLanguageBuidler();
-// IPath libraryPath = langBuilder.createLibrary(pPrj);
-//
-// IFolder distFolder = pPrj.getFolder(pPrj.getDistPath());
-//
-// File destFile = distFolder.getFile(pPrj.getName() + ".oxt").getLocation().toFile();
-// UnoPackage pack = UnoidlProjectHelper.createMinimalUnoPackage(pPrj, destFile);
-// pack.addToClean(libraryPath);
-//
-// // FIXME this code is duplicated.
-// IFile descrFile = pPrj.getFile(IUnoidlProject.DESCRIPTION_FILENAME);
-// if (descrFile.exists()) {
-// pack.addContent(descrFile);
-// }
-//
-// // Select the XCU / XCS files by default
-// FilesFinder finder = new FilesFinder(
-// new String[] { IUnoidlProject.XCU_EXTENSION, IUnoidlProject.XCS_EXTENSION });
-// finder.addExclude(pPrj.getDistFolder().getFullPath());
-// try {
-// ((UnoidlProject) pPrj).getProject().accept(finder);
-// } catch (CoreException e) {
-// // Nothing to log here
-// }
-// ArrayList<IFile> files = finder.getResults();
-// for (IFile aFile : files) {
-// pack.addContent(aFile);
-// }
-//
-// pack.close(pMonitor);
-// return destFile;
- return null;
+ private File exportComponent(IUnoidlProject pPrj, List<IResource> pResources) throws Exception {
+
+ IFolder distFolder = pPrj.getFolder(pPrj.getDistPath());
+ File destFile = distFolder.getFile(pPrj.getName() + ".oxt").getLocation().toFile();
+
+ UnoPackage pack = PackageContentSelector.createPackage( pPrj, destFile, pResources );
+
+ pack.close( );
+ return destFile;
}
}
diff --git a/core/source/org/openoffice/ide/eclipse/core/launch/office/PackageConfigTab.java b/core/source/org/openoffice/ide/eclipse/core/launch/office/PackageConfigTab.java
index b463f44..a27d535 100644
--- a/core/source/org/openoffice/ide/eclipse/core/launch/office/PackageConfigTab.java
+++ b/core/source/org/openoffice/ide/eclipse/core/launch/office/PackageConfigTab.java
@@ -62,6 +62,35 @@ public class PackageConfigTab extends AbstractLaunchConfigurationTab {
PackageContentSelector mContentSelector;
/**
+ * Get the selected resources stored in a launch configuration.
+ *
+ * @param pConfiguration the configuration to extract the infos from
+ *
+ * @return the list of resources extracted
+ *
+ * @throws CoreException if any of the needed properties is missing in
+ * the launch configuration
+ */
+ public static List<IResource> getResources( ILaunchConfiguration pConfiguration ) throws CoreException {
+ ArrayList<IResource> selected = new ArrayList<IResource>();
+
+ String prjName = pConfiguration.getAttribute( IOfficeLaunchConstants.PROJECT_NAME, new String() );
+ IProject prj = ResourcesPlugin.getWorkspace().getRoot().getProject( prjName );
+
+ String paths = pConfiguration.getAttribute( IOfficeLaunchConstants.CONTENT_PATHS, new String() );
+ String[] pathsItems = paths.split( IOfficeLaunchConstants.PATHS_SEPARATOR );
+
+ for (String path : pathsItems) {
+ IResource res = prj.findMember( path );
+ if ( res != null ) {
+ selected.add( res );
+ }
+ }
+
+ return selected;
+ }
+
+ /**
* {@inheritDoc}
*/
public void createControl(Composite pParent) {
@@ -89,28 +118,19 @@ public class PackageConfigTab extends AbstractLaunchConfigurationTab {
public Image getImage() {
return OOEclipsePlugin.getImage(ImagesConstants.PACKAGE_CONTENT);
}
-
+
/**
* {@inheritDoc}
*/
public void initializeFrom(ILaunchConfiguration pConfiguration) {
try {
String prjName = pConfiguration.getAttribute( IOfficeLaunchConstants.PROJECT_NAME, new String() );
- IProject prj = ResourcesPlugin.getWorkspace().getRoot().getProject( prjName );
- mContentSelector.setProject( prj );
+ mContentSelector.setProject( ProjectsManager.getProject( prjName ) );
- String paths = pConfiguration.getAttribute( IOfficeLaunchConstants.CONTENT_PATHS, new String() );
- if ( paths.isEmpty() ) {
- mContentSelector.loadData( ProjectsManager.getProject( prjName ) );
+ List<IResource> selected = getResources( pConfiguration );
+ if ( selected.isEmpty() ) {
+ mContentSelector.loadDefaults();
} else {
- String[] pathsItems = paths.split( IOfficeLaunchConstants.PATHS_SEPARATOR );
- ArrayList<IResource> selected = new ArrayList<IResource>();
- for (String path : pathsItems) {
- IResource res = prj.findMember( path );
- if ( res != null ) {
- selected.add( res );
- }
- }
mContentSelector.setSelected( selected );
}
} catch (CoreException e) {
@@ -144,10 +164,9 @@ public class PackageConfigTab extends AbstractLaunchConfigurationTab {
try {
String prjName = pConfiguration.getAttribute( IOfficeLaunchConstants.PROJECT_NAME, new String() );
if ( !prjName.isEmpty() ) {
- IProject prj = ResourcesPlugin.getWorkspace().getRoot().getProject( prjName );
- mContentSelector.setProject( prj );
+ mContentSelector.setProject( ProjectsManager.getProject( prjName ) );
- mContentSelector.loadData( ProjectsManager.getProject( prjName ) );
+ mContentSelector.loadDefaults();
}
} catch (CoreException e) {
// Don't do anything in that case
diff --git a/core/source/org/openoffice/ide/eclipse/core/wizards/pages/UnoPackageExportPage.java b/core/source/org/openoffice/ide/eclipse/core/wizards/pages/UnoPackageExportPage.java
index 17be342..7c1a624 100644
--- a/core/source/org/openoffice/ide/eclipse/core/wizards/pages/UnoPackageExportPage.java
+++ b/core/source/org/openoffice/ide/eclipse/core/wizards/pages/UnoPackageExportPage.java
@@ -32,9 +32,7 @@ package org.openoffice.ide.eclipse.core.wizards.pages;
import java.io.File;
import java.text.MessageFormat;
-import java.util.List;
-import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
@@ -59,12 +57,9 @@ import org.openoffice.ide.eclipse.core.OOEclipsePlugin;
import org.openoffice.ide.eclipse.core.PluginLogger;
import org.openoffice.ide.eclipse.core.gui.PackageContentSelector;
import org.openoffice.ide.eclipse.core.i18n.ImagesConstants;
-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.config.IOOo;
-import org.openoffice.ide.eclipse.core.model.language.ILanguageBuilder;
-import org.openoffice.ide.eclipse.core.model.utils.SystemHelper;
import org.openoffice.ide.eclipse.core.wizards.Messages;
import org.openoffice.plugin.core.model.UnoPackage;
@@ -150,7 +145,7 @@ public class UnoPackageExportPage extends WizardPage {
i++;
}
- mContentSelector.loadData( mSelectedProject );
+ mContentSelector.loadDefaults( );
restoreWidgetValues();
}
@@ -183,7 +178,6 @@ public class UnoPackageExportPage extends WizardPage {
public void modifyText(ModifyEvent pE) {
int id = mProjectsList.getSelectionIndex();
- IProject prj = ResourcesPlugin.getWorkspace().getRoot().getProject( mSelectedProject.getName() );
if ( id != -1 ) {
String name = mProjectsList.getItem( id );
IUnoidlProject unoprj = ProjectsManager.getProject( name );
@@ -191,8 +185,7 @@ public class UnoPackageExportPage extends WizardPage {
// Change the project in the manifest page
mManifestPage.setProject( unoprj );
-
- mContentSelector.setProject( prj );
+ mContentSelector.setProject( unoprj );
}
setPageComplete( checkPageCompletion() );
@@ -349,33 +342,8 @@ public class UnoPackageExportPage extends WizardPage {
}
if ( doit ) {
- File prjFile = SystemHelper.getFile( mSelectedProject );
-
- // Export the library
- IFile library = null;
- ILanguageBuilder langBuilder = mSelectedProject.getLanguage().getLanguageBuidler();
- library = langBuilder.createLibrary( mSelectedProject );
-
- // Create the package model
- pack = UnoidlProjectHelper.createMinimalUnoPackage( mSelectedProject, destFile );
- pack.addToClean( SystemHelper.getFile( library ) );
-
- IFile descrFile = mSelectedProject.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
- List<?> items = mContentSelector.getSelected();
- for (Object item : items) {
- if ( item instanceof IResource ) {
- File resFile = SystemHelper.getFile( (IResource)item );
- pack.addContent( UnoPackage.getPathRelativeToBase( resFile, prjFile ),
- resFile );
- }
- }
+ pack = PackageContentSelector.createPackage( mSelectedProject, destFile,
+ mContentSelector.getSelected());
// Run the deployer
if ( mAutodeployBox.getSelection() ) {