From c0923f655632b34b5c51e0f7dd5d0454fa7b7b13 Mon Sep 17 00:00:00 2001 From: Lakshmi Shanmugam Date: Fri, 4 Aug 2017 17:19:07 +0530 Subject: Bug 462404: New Eclipse.app layout: "Import > From Existing Installation" doesn't accept app bundle When Mac app bundle is provided try to drill down to Contents/Eclipse folder if it exists. Change-Id: I29844aed359b1b062cf209675a993e1ba06d09d3 Signed-off-by: Lakshmi Shanmugam --- .../importexport/internal/wizard/AbstractPage.java | 6 ++++++ .../internal/wizard/ImportFromInstallationPage.java | 20 +++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/AbstractPage.java b/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/AbstractPage.java index f06dddec1..e998dc8d2 100644 --- a/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/AbstractPage.java +++ b/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/AbstractPage.java @@ -324,6 +324,7 @@ public abstract class AbstractPage extends WizardPage implements Listener { public void keyPressed(KeyEvent e) { if (e.character == SWT.CR) { entryChanged = false; + modifyDestinationValue(getDestinationValue()); handleDestinationChanged(getDestinationValue()); } } @@ -757,4 +758,9 @@ public abstract class AbstractPage extends WizardPage implements Listener { protected void addDestinationItem(String value) { destinationNameField.add(value); } + + void modifyDestinationValue(String destinationValue) { + //Do nothing + } + } \ No newline at end of file diff --git a/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ImportFromInstallationPage.java b/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ImportFromInstallationPage.java index fc33368c4..3b787455c 100644 --- a/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ImportFromInstallationPage.java +++ b/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ImportFromInstallationPage.java @@ -282,7 +282,7 @@ public class ImportFromInstallationPage extends AbstractImportPage implements IS final String selectedFileName = dialog.open(); if (selectedFileName != null) { - setDestinationValue(selectedFileName); + modifyDestinationValue(selectedFileName); handleDestinationChanged(selectedFileName); } } @@ -324,6 +324,24 @@ public class ImportFromInstallationPage extends AbstractImportPage implements IS } } + @Override + void modifyDestinationValue(String selectedFileName) { + /* + * If the destination file is a Mac app bundle, modify the destination + * to *.app/Contents/Eclipse if the path exists. + */ + if ("cocoa".equals(SWT.getPlatform())) { //$NON-NLS-1$ + Path nPath = new Path(selectedFileName); + if (nPath.lastSegment().endsWith(".app")) { //$NON-NLS-1$ + IPath appendedPath = nPath.append("Contents").append("Eclipse");//$NON-NLS-1$ //$NON-NLS-2$ + if (appendedPath.toFile().exists()) { + selectedFileName = appendedPath.toOSString(); + } + } + } + setDestinationValue(selectedFileName); + } + @Override protected boolean validDestination() { if (this.destinationNameField == null) -- cgit v1.2.1