diff options
author | Cédric Bosdonnat <cedricbosdo@openoffice.org> | 2010-12-15 22:41:27 +0100 |
---|---|---|
committer | Cédric Bosdonnat <cedricbosdo@openoffice.org> | 2010-12-15 22:41:27 +0100 |
commit | 9d7b336d8e56f57b44529df134c102081b00ba66 (patch) | |
tree | 793f96763d52b821c413797bb5a96d994ddce0c5 | |
parent | 3615ff3124f59da12b45b1960fe26522bbe858c2 (diff) |
[core] force build before launching and exporting
3 files changed, 56 insertions, 29 deletions
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 45b3306..6672d57 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 @@ -35,7 +35,9 @@ import java.text.MessageFormat; import java.util.List;
import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -47,6 +49,7 @@ 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.builders.TypesBuilder;
import org.openoffice.ide.eclipse.core.gui.PackageContentSelector;
import org.openoffice.ide.eclipse.core.model.IUnoidlProject;
import org.openoffice.ide.eclipse.core.model.ProjectsManager;
@@ -88,29 +91,33 @@ public class OfficeLaunchDelegate extends LaunchConfigurationDelegate { boolean useCleanUserInstalation = pConfiguration.getAttribute(
IOfficeLaunchConstants.CLEAN_USER_INSTALLATION, false);
- IUnoidlProject prj = ProjectsManager.getProject(prjName);
+ IUnoidlProject unoprj = ProjectsManager.getProject(prjName);
- if (null != prj) {
+ if (null != unoprj) {
try {
IPath userInstallation = null;
if (useCleanUserInstalation) {
- IFolder userInstallationFolder = prj.getOpenOfficeUserProfileFolder();
+ IFolder userInstallationFolder = unoprj.getOpenOfficeUserProfileFolder();
userInstallation = userInstallationFolder.getLocation();
}
+ // Force the build
+ IProject prj = ResourcesPlugin.getWorkspace().getRoot().getProject( prjName );
+ TypesBuilder.build( prj, pMonitor );
+
List<IResource> resources = PackageConfigTab.getResources( pConfiguration );
- File destFile = exportComponent( prj, resources );
+ File destFile = exportComponent( unoprj, resources );
pMonitor.worked(1);
// Deploy the component
- deployComponent(prj, userInstallation, destFile);
+ deployComponent(unoprj, userInstallation, destFile);
pMonitor.worked(1);
// Run an OpenOffice instance
if (ILaunchManager.DEBUG_MODE.equals(pMode)) {
- prj.getLanguage().connectDebuggerToOpenOffice(prj, pLaunch, userInstallation, pMonitor);
+ unoprj.getLanguage().connectDebuggerToOpenOffice(unoprj, pLaunch, userInstallation, pMonitor);
} else {
- prj.getOOo().runOpenOffice(prj, pLaunch, userInstallation, new NullExtraOptionsProvider(),
+ unoprj.getOOo().runOpenOffice(unoprj, pLaunch, userInstallation, new NullExtraOptionsProvider(),
pMonitor);
}
pMonitor.worked(1);
@@ -161,7 +168,7 @@ public class OfficeLaunchDelegate extends LaunchConfigurationDelegate { * if something goes wrong.
*/
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();
diff --git a/core/source/org/openoffice/ide/eclipse/core/wizards/PackageExportWizard.java b/core/source/org/openoffice/ide/eclipse/core/wizards/PackageExportWizard.java index 1389b42..962c57f 100644 --- a/core/source/org/openoffice/ide/eclipse/core/wizards/PackageExportWizard.java +++ b/core/source/org/openoffice/ide/eclipse/core/wizards/PackageExportWizard.java @@ -41,6 +41,7 @@ import org.eclipse.jface.wizard.Wizard; import org.eclipse.ui.IExportWizard; import org.eclipse.ui.IWorkbench; import org.openoffice.ide.eclipse.core.OOEclipsePlugin; +import org.openoffice.ide.eclipse.core.PluginLogger; import org.openoffice.ide.eclipse.core.model.IUnoidlProject; import org.openoffice.ide.eclipse.core.model.ProjectsManager; import org.openoffice.ide.eclipse.core.wizards.pages.ManifestExportPage; @@ -81,28 +82,35 @@ public class PackageExportWizard extends Wizard implements IExportWizard { boolean finished = false; UnoPackage model = mMainPage.getPackageModel( ); if ( model != null ) { - // Configure the manifest.xml for the model - mManifestPage.configureManifest( model ); - - // TODO Run the next operations in a job - - // Write the build scripts if needed - mManifestPage.createBuildScripts( model ); - - // Export the package - File out = model.close( ); - finished = out != null; - - mMainPage.refreshProject(); - - if ( mHasNewDialogSettings ) { - IDialogSettings workbenchSettings = OOEclipsePlugin.getDefault().getDialogSettings(); - IDialogSettings section = workbenchSettings.getSection(DIALOG_SETTINGS_KEY); - section = workbenchSettings.addNewSection(DIALOG_SETTINGS_KEY); - setDialogSettings(section); - } + try { + // Force a build on the project + mMainPage.forceBuild(); + + // Configure the manifest.xml for the model + mManifestPage.configureManifest( model ); + + // TODO Run the next operations in a job + + // Write the build scripts if needed + mManifestPage.createBuildScripts( model ); + + // Export the package + File out = model.close( ); + finished = out != null; - mMainPage.saveWidgetValues(); + mMainPage.refreshProject(); + + if ( mHasNewDialogSettings ) { + IDialogSettings workbenchSettings = OOEclipsePlugin.getDefault().getDialogSettings(); + IDialogSettings section = workbenchSettings.getSection(DIALOG_SETTINGS_KEY); + section = workbenchSettings.addNewSection(DIALOG_SETTINGS_KEY); + setDialogSettings(section); + } + + mMainPage.saveWidgetValues(); + } catch ( Exception e ) { + PluginLogger.error( "Project couldn't be built", e ); + } } return finished; 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 7c1a624..74d2d13 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 @@ -55,6 +55,7 @@ import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Label; import org.openoffice.ide.eclipse.core.OOEclipsePlugin; import org.openoffice.ide.eclipse.core.PluginLogger; +import org.openoffice.ide.eclipse.core.builders.TypesBuilder; import org.openoffice.ide.eclipse.core.gui.PackageContentSelector; import org.openoffice.ide.eclipse.core.i18n.ImagesConstants; import org.openoffice.ide.eclipse.core.model.IUnoidlProject; @@ -403,4 +404,15 @@ public class UnoPackageExportPage extends WizardPage { } } } + + /** + * Force a build of the selected project. + * + * @throws Exception if the project couldn't be built. + */ + public void forceBuild( ) throws Exception { + String prjName = mSelectedProject.getName(); + IProject prj = ResourcesPlugin.getWorkspace().getRoot().getProject( prjName ); + TypesBuilder.build( prj, null ); + } } |