Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSusan Franklin2008-01-04 22:06:49 +0000
committerSusan Franklin2008-01-04 22:06:49 +0000
commit2200d202919805e23fd51cec10adb2e57980d18e (patch)
tree595803058956402b91cea8db0f4aafa36bab1e08 /bundles/org.eclipse.equinox.p2.ui.admin
parentcf8403b66f0b103543d10fb5a2d9962225e5067e (diff)
downloadrt.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')
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.admin/META-INF/MANIFEST.MF1
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/MetadataRepositoriesView.java13
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/ProfilesView.java35
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/ProvAdminQueryProvider.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/ProvAdminUIMessages.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/AddProfileDialog.java41
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/IUProfilePropertiesGroup.java17
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/UpdateAndInstallDialog.java9
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/messages.properties2
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...

Back to the top