summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCédric Bosdonnat <cedricbosdo@openoffice.org>2010-12-15 22:41:27 +0100
committerCédric Bosdonnat <cedricbosdo@openoffice.org>2010-12-15 22:41:27 +0100
commit9d7b336d8e56f57b44529df134c102081b00ba66 (patch)
tree793f96763d52b821c413797bb5a96d994ddce0c5
parent3615ff3124f59da12b45b1960fe26522bbe858c2 (diff)
[core] force build before launching and exporting
-rw-r--r--core/source/org/openoffice/ide/eclipse/core/launch/office/OfficeLaunchDelegate.java23
-rw-r--r--core/source/org/openoffice/ide/eclipse/core/wizards/PackageExportWizard.java50
-rw-r--r--core/source/org/openoffice/ide/eclipse/core/wizards/pages/UnoPackageExportPage.java12
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 );
+ }
}