diff options
author | Susan Franklin | 2008-01-04 22:06:49 +0000 |
---|---|---|
committer | Susan Franklin | 2008-01-04 22:06:49 +0000 |
commit | 2200d202919805e23fd51cec10adb2e57980d18e (patch) | |
tree | 595803058956402b91cea8db0f4aafa36bab1e08 /bundles/org.eclipse.equinox.p2.ui.admin | |
parent | cf8403b66f0b103543d10fb5a2d9962225e5067e (diff) | |
download | rt.equinox.p2-2200d202919805e23fd51cec10adb2e57980d18e.tar.gz rt.equinox.p2-2200d202919805e23fd51cec10adb2e57980d18e.tar.xz rt.equinox.p2-2200d202919805e23fd51cec10adb2e57980d18e.zip |
Bug 214391 - [prov] [ui] - all references to profiles should be by ID
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.ui.admin')
9 files changed, 75 insertions, 47 deletions
diff --git a/bundles/org.eclipse.equinox.p2.ui.admin/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.ui.admin/META-INF/MANIFEST.MF index 3b2b61959..d1af3b863 100644 --- a/bundles/org.eclipse.equinox.p2.ui.admin/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.equinox.p2.ui.admin/META-INF/MANIFEST.MF @@ -11,6 +11,7 @@ Bundle-RequiredExecutionEnvironment: J2SE-1.4, Import-Package: org.eclipse.equinox.internal.p2.core.helpers, org.eclipse.equinox.internal.p2.ui.model, org.eclipse.equinox.p2.artifact.repository, + org.eclipse.equinox.p2.core, org.eclipse.equinox.p2.core.eventbus, org.eclipse.equinox.p2.core.repository, org.eclipse.equinox.p2.engine, diff --git a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/MetadataRepositoriesView.java b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/MetadataRepositoriesView.java index 631809ddd..581043437 100644 --- a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/MetadataRepositoriesView.java +++ b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/MetadataRepositoriesView.java @@ -90,14 +90,14 @@ public class MetadataRepositoriesView extends RepositoriesView { private IProfileChooser getProfileChooser() { return new IProfileChooser() { - public Profile getProfile(Shell shell) { + public String getProfileId(Shell shell) { // TODO would be nice if the profile chooser dialog let you // create a new profile DeferredQueryContentProvider provider = new DeferredQueryContentProvider(ProvAdminUIActivator.getDefault().getQueryProvider()); if (provider.getElements(new Profiles()).length == 0) { - AddProfileDialog dialog = new AddProfileDialog(shell, new Profile[0]); + AddProfileDialog dialog = new AddProfileDialog(shell, new String[0]); if (dialog.open() == Window.OK) { - return dialog.getAddedProfile(); + return dialog.getAddedProfileId(); } return null; } @@ -109,8 +109,11 @@ public class MetadataRepositoriesView extends RepositoriesView { dialog.setContentProvider(provider); dialog.open(); Object[] result = dialog.getResult(); - if (result != null && result.length > 0) - return (Profile) ProvUI.getAdapter(result[0], Profile.class); + if (result != null && result.length > 0) { + Profile profile = (Profile) ProvUI.getAdapter(result[0], Profile.class); + if (profile != null) + return profile.getProfileId(); + } return null; } diff --git a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/ProfilesView.java b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/ProfilesView.java index d3f0e096f..4cbf484ca 100644 --- a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/ProfilesView.java +++ b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/ProfilesView.java @@ -15,6 +15,7 @@ import java.util.List; import org.eclipse.equinox.internal.p2.ui.admin.dialogs.AddProfileDialog; import org.eclipse.equinox.internal.p2.ui.admin.dialogs.UpdateAndInstallDialog; import org.eclipse.equinox.internal.p2.ui.admin.preferences.PreferenceConstants; +import org.eclipse.equinox.p2.core.ProvisionException; import org.eclipse.equinox.p2.engine.Profile; import org.eclipse.equinox.p2.ui.*; import org.eclipse.equinox.p2.ui.actions.UninstallAction; @@ -22,8 +23,7 @@ import org.eclipse.equinox.p2.ui.actions.UpdateAction; import org.eclipse.equinox.p2.ui.admin.ProvAdminUIActivator; import org.eclipse.equinox.p2.ui.model.InstalledIUElement; import org.eclipse.equinox.p2.ui.model.Profiles; -import org.eclipse.equinox.p2.ui.operations.ProfileOperation; -import org.eclipse.equinox.p2.ui.operations.RemoveProfilesOperation; +import org.eclipse.equinox.p2.ui.operations.*; import org.eclipse.equinox.p2.ui.viewers.*; import org.eclipse.jface.action.*; import org.eclipse.jface.viewers.*; @@ -76,7 +76,7 @@ public class ProfilesView extends ProvView { } public void run() { - new AddProfileDialog(viewer.getControl().getShell(), ((ITreeContentProvider) viewer.getContentProvider()).getElements(getInput())).open(); + new AddProfileDialog(viewer.getControl().getShell(), getKnownProfileIds()).open(); } } @@ -87,9 +87,9 @@ public class ProfilesView extends ProvView { } public void run() { - Profile profile = getProfileChooser().getProfile(getShell()); - if (profile != null) { - UpdateAndInstallDialog dialog = new UpdateAndInstallDialog(getShell(), profile); + String profileId = getProfileChooser().getProfileId(getShell()); + if (profileId != null) { + UpdateAndInstallDialog dialog = new UpdateAndInstallDialog(getShell(), profileId); dialog.open(); } } @@ -212,12 +212,15 @@ public class ProfilesView extends ProvView { IProfileChooser getProfileChooser() { return new IProfileChooser() { - public Profile getProfile(Shell shell) { + public String getProfileId(Shell shell) { Object firstElement = getSelection().getFirstElement(); if (firstElement instanceof InstalledIUElement) { - return ((InstalledIUElement) firstElement).getProfile(); + return ((InstalledIUElement) firstElement).getProfileId(); } - return (Profile) ProvUI.getAdapter(firstElement, Profile.class); + Profile profile = (Profile) ProvUI.getAdapter(firstElement, Profile.class); + if (profile != null) + return profile.getProfileId(); + return null; } public String getLabel() { @@ -231,4 +234,18 @@ public class ProfilesView extends ProvView { list.add(PreferenceConstants.PREF_SHOW_INSTALL_ROOTS_ONLY); return list; } + + private String[] getKnownProfileIds() { + try { + Profile[] allProfiles = ProvisioningUtil.getProfiles(); + String[] ids = new String[allProfiles.length]; + for (int i = 0; i < allProfiles.length; i++) + ids[i] = allProfiles[i].getProfileId(); + return ids; + } catch (ProvisionException e) { + ProvUI.handleException(e, ProvAdminUIMessages.ProfilesView_0); + return new String[0]; + } + + } }
\ No newline at end of file diff --git a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/ProvAdminQueryProvider.java b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/ProvAdminQueryProvider.java index efbb4a81c..568247892 100644 --- a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/ProvAdminQueryProvider.java +++ b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/ProvAdminQueryProvider.java @@ -59,7 +59,7 @@ public class ProvAdminQueryProvider implements IProvElementQueryProvider { case IProvElementQueryProvider.AVAILABLE_IUS : // Is it a rollback repository? if (element instanceof RollbackRepositoryElement) { - Query profileQuery = new InstallableUnitQuery(((RollbackRepositoryElement) element).getProfile().getProfileId()); + Query profileQuery = new InstallableUnitQuery(((RollbackRepositoryElement) element).getProfileId()); return new ElementQueryDescriptor(element.getQueryable(), profileQuery, new AvailableIUCollector(this, element.getQueryable(), false)); } // It is a regular repository. diff --git a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/ProvAdminUIMessages.java b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/ProvAdminUIMessages.java index 40e3fd6b9..d4f873688 100644 --- a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/ProvAdminUIMessages.java +++ b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/ProvAdminUIMessages.java @@ -37,6 +37,7 @@ public class ProvAdminUIMessages extends NLS { public static String ArtifactRepositoriesView_AddRepositoryLabel; public static String ArtifactRepositoriesView_RemoveRepositoryTooltip; public static String ArtifactRepositoriesView_RemoveRepositoryOperationLabel; + public static String ProfilesView_0; public static String ProfilesView_AddProfileTooltip; public static String ProfilesView_AddProfileLabel; public static String ProfilesView_RemoveProfileLabel; @@ -75,6 +76,7 @@ public class ProvAdminUIMessages extends NLS { public static String IUGroup_TouchpointData; public static String IUGroup_TouchpointType; public static String IUGroup_Version; + public static String IUProfilePropertiesGroup_InvalidProfileID; public static String No_Property_Item_Selected; diff --git a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/AddProfileDialog.java b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/AddProfileDialog.java index ae92d10ac..69ff9421f 100644 --- a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/AddProfileDialog.java +++ b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/AddProfileDialog.java @@ -10,12 +10,10 @@ *******************************************************************************/ package org.eclipse.equinox.internal.p2.ui.admin.dialogs; -import java.util.ArrayList; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.equinox.internal.p2.ui.admin.ProvAdminUIMessages; import org.eclipse.equinox.p2.engine.Profile; -import org.eclipse.equinox.p2.ui.ProvUI; import org.eclipse.equinox.p2.ui.ProvisioningOperationRunner; import org.eclipse.equinox.p2.ui.admin.ProvAdminUIActivator; import org.eclipse.equinox.p2.ui.operations.AddProfileOperation; @@ -35,13 +33,13 @@ public class AddProfileDialog extends StatusDialog { private ProfileGroup profileGroup; private Button okButton; - private Profile[] knownProfiles; - private Profile addedProfile; + private String[] knownProfileIds; + private String addedProfileId; - public AddProfileDialog(Shell parentShell, Object[] knownProfileElements) { + public AddProfileDialog(Shell parentShell, String[] knownProfiles) { super(parentShell); - recordProfiles(knownProfileElements); + this.knownProfileIds = knownProfiles; setTitle(ProvAdminUIMessages.AddProfileDialog_Title); } @@ -70,11 +68,12 @@ public class AddProfileDialog extends StatusDialog { */ private void addProfile() { profileGroup.updateProfile(); - addedProfile = profileGroup.getProfile(); - if (addedProfile == null) { + Profile profile = profileGroup.getProfile(); + if (profile == null) { return; } - ProvisioningOperationRunner.schedule(new AddProfileOperation(ProvAdminUIMessages.AddProfileDialog_OperationLabel, addedProfile), getShell()); + addedProfileId = profile.getProfileId(); + ProvisioningOperationRunner.schedule(new AddProfileOperation(ProvAdminUIMessages.AddProfileDialog_OperationLabel, profile), getShell()); } void verifyComplete() { @@ -96,12 +95,12 @@ public class AddProfileDialog extends StatusDialog { } private boolean isDuplicate() { - if (knownProfiles == null) { + if (knownProfileIds == null) { return false; } - for (int i = 0; i < knownProfiles.length; i++) { - if (knownProfiles[i].getProfileId().equals(profileGroup.getProfileId())) { + for (int i = 0; i < knownProfileIds.length; i++) { + if (knownProfileIds[i].equals(profileGroup.getProfileId())) { setOkEnablement(false); this.updateStatus(new Status(IStatus.ERROR, ProvAdminUIActivator.PLUGIN_ID, IStatus.OK, ProvAdminUIMessages.AddProfileDialog_DuplicateProfileID, null)); return true; @@ -110,16 +109,6 @@ public class AddProfileDialog extends StatusDialog { return false; } - private void recordProfiles(Object[] profileElements) { - java.util.ArrayList profiles = new ArrayList(); - for (int i = 0; i < profileElements.length; i++) { - Profile profile = (Profile) ProvUI.getAdapter(profileElements[i], Profile.class); - if (profile != null) - profiles.add(profile); - } - knownProfiles = (Profile[]) profiles.toArray(new Profile[profiles.size()]); - } - protected void updateButtonsEnableState(IStatus status) { setOkEnablement(!status.matches(IStatus.ERROR)); } @@ -130,13 +119,13 @@ public class AddProfileDialog extends StatusDialog { } /** - * Return the profile that was added with this dialog, or null + * Return the profile id that was added with this dialog, or null * if no profile has been added. This method will not return * a valid profile until the user has pressed OK and the profile * has been added to the profile registry. - * @return the added profile + * @return the added profile's id */ - public Profile getAddedProfile() { - return addedProfile; + public String getAddedProfileId() { + return addedProfileId; } } diff --git a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/IUProfilePropertiesGroup.java b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/IUProfilePropertiesGroup.java index 6370cf089..b37e3eb6f 100644 --- a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/IUProfilePropertiesGroup.java +++ b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/IUProfilePropertiesGroup.java @@ -11,9 +11,14 @@ package org.eclipse.equinox.internal.p2.ui.admin.dialogs; import org.eclipse.equinox.internal.p2.ui.admin.ProvAdminUIMessages; +import org.eclipse.equinox.p2.core.ProvisionException; +import org.eclipse.equinox.p2.engine.Profile; import org.eclipse.equinox.p2.metadata.IInstallableUnit; +import org.eclipse.equinox.p2.ui.ProvUI; import org.eclipse.equinox.p2.ui.dialogs.IUGroup; import org.eclipse.equinox.p2.ui.model.InstalledIUElement; +import org.eclipse.equinox.p2.ui.operations.ProvisioningUtil; +import org.eclipse.osgi.util.NLS; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.layout.GridData; @@ -67,9 +72,19 @@ public class IUProfilePropertiesGroup extends IUGroup { String[] userPropNames = new String[] {ProvAdminUIMessages.ProfileRootPropertyName}; for (int i = 0; i < propNames.length; i++) { TableItem item = new TableItem(propertiesTable, SWT.NULL); - String value = ((InstalledIUElement) iuElement).getProfile().getInstallableUnitProfileProperty(getIU(), propNames[i]); + Profile profile = getProfile((InstalledIUElement) iuElement); + String value = profile == null ? null : profile.getInstallableUnitProfileProperty(getIU(), propNames[i]); if (value != null) item.setText(new String[] {userPropNames[i], value}); } } + + private Profile getProfile(InstalledIUElement element) { + try { + return ProvisioningUtil.getProfile(element.getProfileId()); + } catch (ProvisionException e) { + ProvUI.handleException(e, NLS.bind(ProvAdminUIMessages.IUProfilePropertiesGroup_InvalidProfileID, element.getProfileId())); + return null; + } + } } diff --git a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/UpdateAndInstallDialog.java b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/UpdateAndInstallDialog.java index fdd273d1e..888906d4a 100644 --- a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/UpdateAndInstallDialog.java +++ b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/UpdateAndInstallDialog.java @@ -11,7 +11,6 @@ package org.eclipse.equinox.internal.p2.ui.admin.dialogs; import org.eclipse.equinox.internal.p2.ui.admin.ProvAdminUIMessages; -import org.eclipse.equinox.p2.engine.Profile; import org.eclipse.equinox.p2.ui.admin.ProvAdminUIActivator; import org.eclipse.equinox.p2.ui.dialogs.UpdateAndInstallGroup; import org.eclipse.jface.dialogs.Dialog; @@ -28,15 +27,15 @@ import org.eclipse.swt.widgets.*; */ public class UpdateAndInstallDialog extends TrayDialog { - private Profile profile; + private String profileId; /** * Create an instance of this Dialog. * */ - public UpdateAndInstallDialog(Shell shell, Profile profile) { + public UpdateAndInstallDialog(Shell shell, String profileId) { super(shell); - this.profile = profile; + this.profileId = profileId; } protected void configureShell(Shell shell) { @@ -50,7 +49,7 @@ public class UpdateAndInstallDialog extends TrayDialog { FontMetrics fontMetrics = gc.getFontMetrics(); gc.dispose(); - UpdateAndInstallGroup group = new UpdateAndInstallGroup(parent, profile, ProvAdminUIMessages.UpdateAndInstallDialog_InstalledIUsPageLabel, ProvAdminUIMessages.UpdateAndInstallDialog_AvailableIUsPageLabel, null, null, ProvAdminUIActivator.getDefault().getQueryProvider(), null, fontMetrics); + UpdateAndInstallGroup group = new UpdateAndInstallGroup(parent, profileId, ProvAdminUIMessages.UpdateAndInstallDialog_InstalledIUsPageLabel, ProvAdminUIMessages.UpdateAndInstallDialog_AvailableIUsPageLabel, null, null, ProvAdminUIActivator.getDefault().getQueryProvider(), null, fontMetrics); Dialog.applyDialogFont(group.getTabFolder()); return group.getTabFolder(); } diff --git a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/messages.properties b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/messages.properties index 80419b71e..bdcd44a21 100644 --- a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/messages.properties +++ b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/messages.properties @@ -31,6 +31,7 @@ ArtifactRepositoriesView_AddRepositoryLabel=Add repository... ArtifactRepositoriesView_AddRepositoryTooltip=Add a new artifact repository ArtifactRepositoriesView_RemoveRepositoryTooltip=Remove the selected artifact repositories ArtifactRepositoriesView_RemoveRepositoryOperationLabel=Remove Artifact Repositories +ProfilesView_0=Error retrieving profiles ProfilesView_AddProfileTooltip=Add a new profile ProvView_RefreshCommandTooltip=Refresh the items in the view. ProfilesView_AddProfileLabel=Add profile... @@ -55,6 +56,7 @@ IUGroup_TouchpointData=Touchpoint &data: IUGroup_RequiredCapabilities=&Required capabilities: IUGroup_ProvidedCapabilities=&Provided capabilities: IUGroup_IU_ID_Required=Must set an IU ID +IUProfilePropertiesGroup_InvalidProfileID=Profile id {0} not valid. ProfileGroup_ID=Profile &id: ProfileGroup_Browse=&Browse... ProfileGroup_Browse2=B&rowse... |