Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/AddArtifactRepositoryOperation.java16
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/AddMetadataRepositoryOperation.java14
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/RepositoryImplementationPropertyPage.java34
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIMessages.java1
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages.properties3
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/ArtifactRepositoryElement.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/ElementUtils.java3
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/MetadataRepositoryElement.java23
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/MetadataRepositoryElementCollector.java12
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/UpdateManagerCompatibility.java7
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/dialogs/RepositoryManipulationPage.java120
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/operations/AddColocatedRepositoryOperation.java10
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/operations/AddRepositoryOperation.java66
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/operations/ProvisioningUtil.java33
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/operations/RemoveColocatedRepositoryOperation.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/operations/RemoveRepositoryOperation.java26
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/policy/ColocatedRepositoryManipulator.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/policy/RepositoryManipulator.java7
18 files changed, 308 insertions, 81 deletions
diff --git a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/AddArtifactRepositoryOperation.java b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/AddArtifactRepositoryOperation.java
index cc0b4a4eb..3550215ef 100644
--- a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/AddArtifactRepositoryOperation.java
+++ b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/AddArtifactRepositoryOperation.java
@@ -10,19 +10,19 @@
*******************************************************************************/
package org.eclipse.equinox.internal.p2.ui.admin;
-import org.eclipse.equinox.internal.provisional.p2.ui.operations.ProvisioningUtil;
-import org.eclipse.equinox.internal.provisional.p2.ui.operations.RepositoryOperation;
-
import java.net.URI;
import org.eclipse.core.runtime.*;
import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException;
+import org.eclipse.equinox.internal.provisional.p2.core.repository.IRepository;
+import org.eclipse.equinox.internal.provisional.p2.ui.operations.AddRepositoryOperation;
+import org.eclipse.equinox.internal.provisional.p2.ui.operations.ProvisioningUtil;
/**
- * Operation which adds an artifact repository given its URL.
+ * Operation which adds an artifact repository given its URI.
*
* @since 3.4
*/
-public class AddArtifactRepositoryOperation extends RepositoryOperation {
+public class AddArtifactRepositoryOperation extends AddRepositoryOperation {
public AddArtifactRepositoryOperation(String label, URI location) {
super(label, new URI[] {location});
@@ -36,4 +36,10 @@ public class AddArtifactRepositoryOperation extends RepositoryOperation {
}
return okStatus();
}
+
+ protected void setNickname(URI location, String nickname) throws ProvisionException {
+ for (int i = 0; i < locations.length; i++) {
+ ProvisioningUtil.setArtifactRepositoryProperty(location, IRepository.PROP_NICKNAME, nickname);
+ }
+ }
}
diff --git a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/AddMetadataRepositoryOperation.java b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/AddMetadataRepositoryOperation.java
index 5e1f34008..3d41e5e38 100644
--- a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/AddMetadataRepositoryOperation.java
+++ b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/AddMetadataRepositoryOperation.java
@@ -10,19 +10,19 @@
*******************************************************************************/
package org.eclipse.equinox.internal.p2.ui.admin;
-import org.eclipse.equinox.internal.provisional.p2.ui.operations.ProvisioningUtil;
-import org.eclipse.equinox.internal.provisional.p2.ui.operations.RepositoryOperation;
-
import java.net.URI;
import org.eclipse.core.runtime.*;
import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException;
+import org.eclipse.equinox.internal.provisional.p2.core.repository.IRepository;
+import org.eclipse.equinox.internal.provisional.p2.ui.operations.AddRepositoryOperation;
+import org.eclipse.equinox.internal.provisional.p2.ui.operations.ProvisioningUtil;
/**
* Operation that adds a metadata repository given its URL.
*
* @since 3.4
*/
-public class AddMetadataRepositoryOperation extends RepositoryOperation {
+public class AddMetadataRepositoryOperation extends AddRepositoryOperation {
public AddMetadataRepositoryOperation(String label, URI location) {
super(label, new URI[] {location});
@@ -36,4 +36,10 @@ public class AddMetadataRepositoryOperation extends RepositoryOperation {
}
return okStatus();
}
+
+ protected void setNickname(URI location, String nickname) throws ProvisionException {
+ for (int i = 0; i < locations.length; i++) {
+ ProvisioningUtil.setMetadataRepositoryProperty(location, IRepository.PROP_NICKNAME, nickname);
+ }
+ }
}
diff --git a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/RepositoryImplementationPropertyPage.java b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/RepositoryImplementationPropertyPage.java
index 1fc376ef7..f8f1cafb0 100644
--- a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/RepositoryImplementationPropertyPage.java
+++ b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/RepositoryImplementationPropertyPage.java
@@ -12,6 +12,7 @@ package org.eclipse.equinox.internal.p2.ui.admin.dialogs;
import java.util.Map;
import org.eclipse.equinox.internal.p2.ui.admin.ProvAdminUIMessages;
+import org.eclipse.equinox.internal.provisional.p2.core.repository.IRepository;
import org.eclipse.equinox.internal.provisional.p2.ui.ProvUI;
import org.eclipse.equinox.internal.provisional.p2.ui.model.IRepositoryElement;
import org.eclipse.swt.SWT;
@@ -29,7 +30,8 @@ public class RepositoryImplementationPropertyPage extends PropertyPage {
private IRepositoryElement repositoryElement;
private Composite composite;
private Text name;
- private Text url;
+ private Text location;
+ private Text nickname;
private Text description;
private Table propertiesTable;
@@ -52,14 +54,19 @@ public class RepositoryImplementationPropertyPage extends PropertyPage {
Label urlLabel = new Label(composite, SWT.NONE);
urlLabel.setText(ProvAdminUIMessages.RepositoryImplementationPropertyPage_LocationLabel);
- url = new Text(composite, SWT.WRAP | SWT.READ_ONLY);
- url.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ location = new Text(composite, SWT.WRAP | SWT.READ_ONLY);
+ location.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Label nameLabel = new Label(composite, SWT.NONE);
nameLabel.setText(ProvAdminUIMessages.RepositoryImplementationPropertyPage_NameLabel);
name = new Text(composite, SWT.WRAP | SWT.READ_ONLY);
name.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ Label nicknameLabel = new Label(composite, SWT.NONE);
+ nicknameLabel.setText(ProvAdminUIMessages.RepositoryImplementationPropertyPage_NicknameLabel);
+ nickname = new Text(composite, SWT.WRAP | SWT.READ_ONLY);
+ nickname.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
Label descriptionLabel = new Label(composite, SWT.NONE);
descriptionLabel.setText(ProvAdminUIMessages.RepositoryImplementationPropertyPage_DescriptionLabel);
data = new GridData();
@@ -87,6 +94,7 @@ public class RepositoryImplementationPropertyPage extends PropertyPage {
TableColumn valueColumn = new TableColumn(propertiesTable, SWT.NONE);
valueColumn.setText(ProvAdminUIMessages.RepositoryImplementationPropertyPage_ValueColumnLabel);
+ initializeFields();
initializeTable();
nameColumn.pack();
@@ -96,6 +104,26 @@ public class RepositoryImplementationPropertyPage extends PropertyPage {
}
+ private void initializeFields() {
+ IRepositoryElement element = getRepositoryElement();
+ if (element != null) {
+ IRepository repo = getRepositoryElement().getRepository(null);
+ location.setText(repo.getLocation().toString());
+ String value = repo.getName();
+ if (value != null)
+ name.setText(value);
+ value = repo.getDescription();
+ if (value != null)
+ description.setText(value);
+ String nick = element.getName();
+ // Kind of a hack, to avoid figuring out which manager to go to get the
+ // nickname. Instead we are just assuming that any name stored in the element that
+ // is not location or provider name is the nickname.
+ if (!nick.equals(value) && !nick.equals(repo.getLocation().toString()))
+ nickname.setText(nick);
+ }
+ }
+
private void initializeTable() {
if (getRepositoryElement() != null) {
Map repoProperties = getRepositoryElement().getRepository(null).getProperties();
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIMessages.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIMessages.java
index e2b4bab83..5cf1f2706 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIMessages.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIMessages.java
@@ -156,6 +156,7 @@ public class ProvUIMessages extends NLS {
public static String AddRepositoryDialog_DuplicateURL;
public static String AddRepositoryDialog_InvalidURL;
public static String AddRepositoryDialog_LocationLabel;
+ public static String AddRepositoryDialog_NameLabel;
public static String AddRepositoryDialog_Title;
public static String AvailableIUElement_ProfileNotFound;
public static String AvailableIUGroup_LoadingRepository;
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages.properties b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages.properties
index 2dd899960..79d223996 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages.properties
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages.properties
@@ -126,7 +126,8 @@ AddColocatedRepositoryDialog_AddSiteTitle=Add Site
AddRepositoryDialog_Title=Add Repository
AddRepositoryDialog_DuplicateURL=Duplicate location
AddRepositoryDialog_InvalidURL=The provided location is not valid
-AddRepositoryDialog_LocationLabel=Location:
+AddRepositoryDialog_LocationLabel=&Location:
+AddRepositoryDialog_NameLabel=&Name:
UpdateAction_UpdatesAvailableMessage=Check the updates that you wish to install.
UpdateAction_UpdatesAvailableTitle=Available Updates
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/ArtifactRepositoryElement.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/ArtifactRepositoryElement.java
index 8af14ad12..66840e4aa 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/ArtifactRepositoryElement.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/ArtifactRepositoryElement.java
@@ -121,9 +121,11 @@ public class ArtifactRepositoryElement extends ProvElement implements IDeferredW
*/
public String getName() {
try {
- String name = ProvisioningUtil.getArtifactRepositoryProperty(location, IRepository.PROP_NAME);
+ String name = ProvisioningUtil.getArtifactRepositoryProperty(location, IRepository.PROP_NICKNAME);
if (name == null)
- return ""; //$NON-NLS-1$
+ name = ProvisioningUtil.getArtifactRepositoryProperty(location, IRepository.PROP_NAME);
+ if (name == null)
+ name = ""; //$NON-NLS-1$
return name;
} catch (ProvisionException e) {
return ""; //$NON-NLS-1$
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/ElementUtils.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/ElementUtils.java
index 72f4ba19c..444028829 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/ElementUtils.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/ElementUtils.java
@@ -17,6 +17,7 @@ import org.eclipse.core.runtime.*;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.equinox.internal.p2.ui.ProvUIMessages;
import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException;
+import org.eclipse.equinox.internal.provisional.p2.core.repository.IRepository;
import org.eclipse.equinox.internal.provisional.p2.core.repository.IRepositoryManager;
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.internal.provisional.p2.ui.ProvUI;
@@ -60,6 +61,8 @@ public class ElementUtils {
ProvisioningUtil.setColocatedRepositoryEnablement(location, false);
}
}
+ ProvisioningUtil.setMetadataRepositoryProperty(location, IRepository.PROP_NICKNAME, elements[i].getName());
+ ProvisioningUtil.setArtifactRepositoryProperty(location, IRepository.PROP_NICKNAME, elements[i].getName());
}
// Are there any elements that need to be deleted? Go over the original state
// and remove any elements that weren't in the elements we were given
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/MetadataRepositoryElement.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/MetadataRepositoryElement.java
index 6ecc8b4e8..a2d151015 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/MetadataRepositoryElement.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/MetadataRepositoryElement.java
@@ -42,6 +42,7 @@ public class MetadataRepositoryElement extends RootElement implements IRepositor
URI location;
boolean isEnabled;
boolean alreadyReportedNotFound = false;
+ String name;
public MetadataRepositoryElement(Object parent, URI location, boolean isEnabled) {
this(parent, null, null, location, isEnabled);
@@ -145,14 +146,22 @@ public class MetadataRepositoryElement extends RootElement implements IRepositor
* @see org.eclipse.equinox.internal.provisional.p2.ui.model.RepositoryElement#getName()
*/
public String getName() {
- try {
- String name = ProvisioningUtil.getMetadataRepositoryProperty(location, IRepository.PROP_NAME);
- if (name == null)
- return ""; //$NON-NLS-1$
- return name;
- } catch (ProvisionException e) {
- return ""; //$NON-NLS-1$
+ if (name == null) {
+ try {
+ name = ProvisioningUtil.getMetadataRepositoryProperty(location, IRepository.PROP_NICKNAME);
+ if (name == null)
+ name = ProvisioningUtil.getMetadataRepositoryProperty(location, IRepository.PROP_NAME);
+ if (name == null)
+ name = ""; //$NON-NLS-1$
+ } catch (ProvisionException e) {
+ name = ""; //$NON-NLS-1$
+ }
}
+ return name;
+ }
+
+ public void setNickname(String name) {
+ this.name = name;
}
/*
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/MetadataRepositoryElementCollector.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/MetadataRepositoryElementCollector.java
index 71185903e..793356cdb 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/MetadataRepositoryElementCollector.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/MetadataRepositoryElementCollector.java
@@ -13,6 +13,8 @@ package org.eclipse.equinox.internal.p2.ui.query;
import java.net.URI;
import org.eclipse.equinox.internal.p2.ui.model.MetadataRepositoryElement;
import org.eclipse.equinox.internal.p2.ui.model.QueriedElementCollector;
+import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException;
+import org.eclipse.equinox.internal.provisional.p2.core.repository.IRepository;
import org.eclipse.equinox.internal.provisional.p2.query.IQueryable;
import org.eclipse.equinox.internal.provisional.p2.ui.operations.ProvisioningUtil;
@@ -38,6 +40,14 @@ public class MetadataRepositoryElementCollector extends QueriedElementCollector
public boolean accept(Object match) {
if (!(match instanceof URI))
return true;
- return super.accept(new MetadataRepositoryElement(parent, (URI) match, ProvisioningUtil.getMetadataRepositoryEnablement((URI) match)));
+ MetadataRepositoryElement element = new MetadataRepositoryElement(parent, (URI) match, ProvisioningUtil.getMetadataRepositoryEnablement((URI) match));
+ try {
+ String nickname = ProvisioningUtil.getMetadataRepositoryProperty((URI) match, IRepository.PROP_NICKNAME);
+ if (nickname != null && nickname.length() > 0)
+ element.setNickname(nickname);
+ } catch (ProvisionException e) {
+ // swallow
+ }
+ return super.accept(element);
}
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/UpdateManagerCompatibility.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/UpdateManagerCompatibility.java
index 891a5191e..04bce0371 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/UpdateManagerCompatibility.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/UpdateManagerCompatibility.java
@@ -104,7 +104,12 @@ public class UpdateManagerCompatibility {
String sel = getAttribute(child, "selected"); //$NON-NLS-1$
boolean selected = (sel != null && sel.equals("true")); //$NON-NLS-1$
- bookmarks.add(new MetadataRepositoryElement(null, uri, selected));
+
+ MetadataRepositoryElement element = new MetadataRepositoryElement(null, uri, selected);
+ String nickname = getAttribute(child, "name"); //$NON-NLS-1$
+ if (nickname != null && nickname.length() > 0)
+ element.setNickname(nickname);
+ bookmarks.add(element);
}
private static void createFolder(Node child, Vector bookmarks) {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/dialogs/RepositoryManipulationPage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/dialogs/RepositoryManipulationPage.java
index 12a6af857..f31923f6f 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/dialogs/RepositoryManipulationPage.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/dialogs/RepositoryManipulationPage.java
@@ -238,6 +238,39 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
labelProvider = new RepositoryDetailsLabelProvider();
repositoryViewer.setLabelProvider(labelProvider);
+ // Edit the nickname
+ repositoryViewer.setCellModifier(new ICellModifier() {
+ public boolean canModify(Object element, String property) {
+ return true;
+ }
+
+ public Object getValue(Object element, String property) {
+ return ((MetadataRepositoryElement) element).getName();
+ }
+
+ public void modify(Object element, String property, Object value) {
+ if (value != null && value.toString().length() > 0) {
+ MetadataRepositoryElement repo;
+ if (element instanceof Item) {
+ repo = (MetadataRepositoryElement) ((Item) element).getData();
+ } else if (element instanceof MetadataRepositoryElement) {
+ repo = (MetadataRepositoryElement) element;
+ } else {
+ return;
+ }
+ changed = true;
+ repo.setNickname(value.toString());
+ if (comparator.getSortKey() == RepositoryDetailsLabelProvider.COL_NAME)
+ repositoryViewer.refresh(true);
+ else
+ repositoryViewer.update(repo, null);
+ }
+ }
+
+ });
+ repositoryViewer.setColumnProperties(new String[] {"nickname"}); //$NON-NLS-1$
+ repositoryViewer.setCellEditors(new CellEditor[] {new TextCellEditor(repositoryViewer.getTable())});
+
repositoryViewer.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
validateButtons();
@@ -463,15 +496,10 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
}
void addRepository() {
- AddRepositoryDialog dialog = new AddRepositoryDialog(getShell(), policy.getQueryContext().getMetadataRepositoryFlags()) {
- protected ProvisioningOperation getOperation(URI repositoryLocation) {
- return RepositoryManipulationPage.this.getRepoAddOperation(repositoryLocation);
- }
-
- protected RepositoryLocationValidator getRepositoryLocationValidator() {
- return RepositoryManipulationPage.this.getRepositoryLocationValidator();
+ AddRepositoryDialog dialog = new AddRepositoryDialog(getShell(), policy) {
+ protected RepositoryManipulator getRepositoryManipulator() {
+ return RepositoryManipulationPage.this.getRepositoryManipulator();
}
-
};
dialog.setTitle(manipulator.getAddOperationLabel());
dialog.open();
@@ -647,17 +675,39 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
}
}
- // return a repo manipulator that only operates on the local cache
+ // Return a repo manipulator that only operates on the local cache.
+ // Labels and other presentation info are used from the original manipulator.
RepositoryManipulator getRepositoryManipulator() {
if (localCacheRepoManipulator == null)
localCacheRepoManipulator = new RepositoryManipulator() {
+ public AddRepositoryOperation getAddOperation(URI location) {
+ return new AddRepositoryOperation("Cached add repo operation", new URI[] {location}) { //$NON-NLS-1$
+ protected IStatus doExecute(IProgressMonitor monitor) {
+ for (int i = 0; i < locations.length; i++) {
+ MetadataRepositoryElement element = new MetadataRepositoryElement(getInput(), locations[i], true);
+ if (nicknames != null)
+ element.setNickname(nicknames[i]);
+ getInput().cachedElements.put(locations[i].toString(), element);
- public RepositoryOperation getAddOperation(URI repoLocation) {
- return RepositoryManipulationPage.this.getRepoAddOperation(repoLocation);
+ }
+ changed = true;
+ asyncRefresh();
+ return Status.OK_STATUS;
+ }
+
+ protected IStatus doBatchedExecute(IProgressMonitor monitor) throws ProvisionException {
+ // Not called due to override of doExecute
+ return null;
+ }
+
+ protected void setNickname(URI location, String nickname) throws ProvisionException {
+ // Not called due to override of doExecute
+ }
+ };
}
public String getAddOperationLabel() {
- return ProvUIMessages.RepositoryManipulationPage_Add;
+ return manipulator.getAddOperationLabel();
}
public URI[] getKnownRepositories() {
@@ -665,15 +715,15 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
}
public String getManipulatorButtonLabel() {
- return ""; //$NON-NLS-1$
+ return manipulator.getManipulatorButtonLabel();
}
public String getManipulatorLinkLabel() {
- return ""; //$NON-NLS-1$
+ return manipulator.getManipulatorLinkLabel();
}
- public RepositoryOperation getRemoveOperation(URI[] repoLocations) {
- return new RepositoryOperation("Cached remove repo operation", repoLocations) { //$NON-NLS-1$
+ public RemoveRepositoryOperation getRemoveOperation(URI[] repoLocations) {
+ return new RemoveRepositoryOperation("Cached remove repo operation", repoLocations) { //$NON-NLS-1$
protected IStatus doBatchedExecute(IProgressMonitor monitor) throws ProvisionException {
removeRepositories();
return Status.OK_STATUS;
@@ -682,11 +732,15 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
}
public String getRemoveOperationLabel() {
- return ProvUIMessages.RepositoryManipulationPage_Remove;
+ return manipulator.getRemoveOperationLabel();
}
public RepositoryLocationValidator getRepositoryLocationValidator(Shell shell) {
- return RepositoryManipulationPage.this.getRepositoryLocationValidator();
+ return new DefaultMetadataURLValidator() {
+ protected URI[] getKnownLocations() {
+ return getKnownRepositories();
+ }
+ };
}
public boolean manipulateRepositories(Shell shell) {
@@ -735,34 +789,4 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
locations[i] = elements[i].getLocation();
return locations;
}
-
- RepositoryLocationValidator getRepositoryLocationValidator() {
- DefaultMetadataURLValidator validator = new DefaultMetadataURLValidator() {
- protected URI[] getKnownLocations() {
- return getKnownRepositories();
- }
- };
- return validator;
-
- }
-
- RepositoryOperation getRepoAddOperation(URI location) {
- return new RepositoryOperation("Cached add repo operation", new URI[] {location}) { //$NON-NLS-1$
- protected IStatus doExecute(IProgressMonitor monitor) {
- for (int i = 0; i < locations.length; i++) {
- Hashtable elements = getInput().cachedElements;
- elements.put(locations[i].toString(), new MetadataRepositoryElement(getInput(), locations[i], true));
-
- }
- changed = true;
- asyncRefresh();
- return Status.OK_STATUS;
- }
-
- protected IStatus doBatchedExecute(IProgressMonitor monitor) throws ProvisionException {
- // TODO Auto-generated method stub
- return null;
- }
- };
- }
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/operations/AddColocatedRepositoryOperation.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/operations/AddColocatedRepositoryOperation.java
index fdb40cfb5..ced8c0633 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/operations/AddColocatedRepositoryOperation.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/operations/AddColocatedRepositoryOperation.java
@@ -13,6 +13,7 @@ package org.eclipse.equinox.internal.provisional.p2.ui.operations;
import java.net.URI;
import org.eclipse.core.runtime.*;
import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException;
+import org.eclipse.equinox.internal.provisional.p2.core.repository.IRepository;
/**
* Operation that adds colocated artifact and metadata repositories
@@ -20,7 +21,7 @@ import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException;
*
* @since 3.4
*/
-public class AddColocatedRepositoryOperation extends RepositoryOperation {
+public class AddColocatedRepositoryOperation extends AddRepositoryOperation {
public AddColocatedRepositoryOperation(String label, URI url) {
super(label, new URI[] {url});
}
@@ -40,4 +41,11 @@ public class AddColocatedRepositoryOperation extends RepositoryOperation {
}
return okStatus();
}
+
+ protected void setNickname(URI location, String nickname) throws ProvisionException {
+ for (int i = 0; i < locations.length; i++) {
+ ProvisioningUtil.setMetadataRepositoryProperty(location, IRepository.PROP_NICKNAME, nickname);
+ ProvisioningUtil.setArtifactRepositoryProperty(location, IRepository.PROP_NICKNAME, nickname);
+ }
+ }
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/operations/AddRepositoryOperation.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/operations/AddRepositoryOperation.java
new file mode 100644
index 000000000..37c311261
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/operations/AddRepositoryOperation.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.equinox.internal.provisional.p2.ui.operations;
+
+import java.net.URI;
+import org.eclipse.core.runtime.*;
+import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException;
+import org.eclipse.equinox.internal.provisional.p2.ui.ProvUI;
+
+/**
+ * Abstract class representing an operation that adds repositories,
+ * using an optional nickname.
+ *
+ * @since 3.5
+ */
+public abstract class AddRepositoryOperation extends RepositoryOperation {
+
+ protected String[] nicknames;
+
+ public AddRepositoryOperation(String label, URI[] locations) {
+ super(label, locations);
+ }
+
+ public void setNicknames(String[] nicknames) {
+ Assert.isLegal(nicknames != null && nicknames.length == locations.length);
+ this.nicknames = nicknames;
+ }
+
+ public boolean runInBackground() {
+ return true;
+ }
+
+ protected IStatus doExecute(IProgressMonitor monitor) throws ProvisionException {
+ boolean batched = false;
+ if (locations != null && locations.length > 1) {
+ ProvUI.startBatchOperation();
+ batched = true;
+ }
+ IStatus status = doBatchedExecute(monitor);
+ if (nicknames != null) {
+ for (int i = 0; i < nicknames.length; i++) {
+ setNickname(locations[i], nicknames[i]);
+ }
+ }
+ if (batched && notify)
+ ProvUI.endBatchOperation();
+ return status;
+ }
+
+ protected abstract void setNickname(URI location, String nickname) throws ProvisionException;
+
+ protected abstract IStatus doBatchedExecute(IProgressMonitor monitor) throws ProvisionException;
+
+ public void setNotify(boolean notify) {
+ this.notify = notify;
+ }
+
+}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/operations/ProvisioningUtil.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/operations/ProvisioningUtil.java
index a077c8a15..eca565b84 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/operations/ProvisioningUtil.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/operations/ProvisioningUtil.java
@@ -57,6 +57,13 @@ public class ProvisioningUtil {
return manager.getRepositoryProperty(location, key);
}
+ public static void setMetadataRepositoryProperty(URI location, String key, String value) throws ProvisionException {
+ IMetadataRepositoryManager manager = (IMetadataRepositoryManager) ServiceHelper.getService(ProvUIActivator.getContext(), IMetadataRepositoryManager.class.getName());
+ if (manager == null)
+ throw new ProvisionException(ProvUIMessages.ProvisioningUtil_NoRepositoryManager);
+ manager.setRepositoryProperty(location, key, value);
+ }
+
public static boolean getMetadataRepositoryEnablement(URI location) {
IMetadataRepositoryManager manager = (IMetadataRepositoryManager) ServiceHelper.getService(ProvUIActivator.getContext(), IMetadataRepositoryManager.class.getName());
if (manager == null)
@@ -75,7 +82,16 @@ public class ProvisioningUtil {
IMetadataRepositoryManager manager = (IMetadataRepositoryManager) ServiceHelper.getService(ProvUIActivator.getContext(), IMetadataRepositoryManager.class.getName());
if (manager == null)
throw new ProvisionException(ProvUIMessages.ProvisioningUtil_NoRepositoryManager);
- return manager.loadRepository(location, monitor);
+ IMetadataRepository repo = manager.loadRepository(location, monitor);
+ // If there is no user nickname assigned to this repo but there is a provider name, then set the nickname.
+ // This will keep the name in the manager even when the repo is not loaded
+ String name = getMetadataRepositoryProperty(location, IRepository.PROP_NICKNAME);
+ if (name == null) {
+ name = getMetadataRepositoryProperty(location, IRepository.PROP_NAME);
+ if (name != null)
+ setMetadataRepositoryProperty(location, IRepository.PROP_NICKNAME, name);
+ }
+ return repo;
}
public static IStatus validateMetadataRepositoryLocation(URI location, IProgressMonitor monitor) {
@@ -119,6 +135,13 @@ public class ProvisioningUtil {
return manager.getRepositoryProperty(location, key);
}
+ public static void setArtifactRepositoryProperty(URI location, String key, String value) throws ProvisionException {
+ IArtifactRepositoryManager manager = (IArtifactRepositoryManager) ServiceHelper.getService(ProvUIActivator.getContext(), IArtifactRepositoryManager.class.getName());
+ if (manager == null)
+ throw new ProvisionException(ProvUIMessages.ProvisioningUtil_NoRepositoryManager);
+ manager.setRepositoryProperty(location, key, value);
+ }
+
public static IArtifactRepository loadArtifactRepository(URI location, IProgressMonitor monitor) throws ProvisionException {
IArtifactRepositoryManager manager = (IArtifactRepositoryManager) ServiceHelper.getService(ProvUIActivator.getContext(), IArtifactRepositoryManager.class.getName());
if (manager == null)
@@ -127,6 +150,14 @@ public class ProvisioningUtil {
if (repo == null) {
throw new ProvisionException(NLS.bind(ProvUIMessages.ProvisioningUtil_LoadRepositoryFailure, location));
}
+ // If there is no user nickname assigned to this repo but there is a provider name, then set the nickname.
+ // This will keep the name in the manager even when the repo is not loaded
+ String name = getArtifactRepositoryProperty(location, IRepository.PROP_NICKNAME);
+ if (name == null) {
+ name = getArtifactRepositoryProperty(location, IRepository.PROP_NAME);
+ if (name != null)
+ setArtifactRepositoryProperty(location, IRepository.PROP_NICKNAME, name);
+ }
return repo;
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/operations/RemoveColocatedRepositoryOperation.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/operations/RemoveColocatedRepositoryOperation.java
index daa8a2608..2cda09e85 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/operations/RemoveColocatedRepositoryOperation.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/operations/RemoveColocatedRepositoryOperation.java
@@ -15,11 +15,11 @@ import org.eclipse.core.runtime.*;
import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException;
/**
- * Operation that removes the colocated repositories with the given URLs. *
+ * Operation that removes the colocated repositories with the given locations. *
*
* @since 3.4
*/
-public class RemoveColocatedRepositoryOperation extends RepositoryOperation {
+public class RemoveColocatedRepositoryOperation extends RemoveRepositoryOperation {
public RemoveColocatedRepositoryOperation(String label, URI[] repoLocations) {
super(label, repoLocations);
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/operations/RemoveRepositoryOperation.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/operations/RemoveRepositoryOperation.java
new file mode 100644
index 000000000..b50015eab
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/operations/RemoveRepositoryOperation.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.equinox.internal.provisional.p2.ui.operations;
+
+import java.net.URI;
+
+/**
+ * Abstract class representing an operation that removes repositories.
+ *
+ * @since 3.5
+ */
+public abstract class RemoveRepositoryOperation extends RepositoryOperation {
+
+ public RemoveRepositoryOperation(String label, URI[] locations) {
+ super(label, locations);
+ }
+
+}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/policy/ColocatedRepositoryManipulator.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/policy/ColocatedRepositoryManipulator.java
index caf79bb09..ee1cd3690 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/policy/ColocatedRepositoryManipulator.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/policy/ColocatedRepositoryManipulator.java
@@ -91,7 +91,7 @@ public class ColocatedRepositoryManipulator extends RepositoryManipulator {
* (non-Javadoc)
* @see org.eclipse.equinox.internal.provisional.p2.ui.policy.RepositoryManipulator#getAddOperation(java.net.URI)
*/
- public RepositoryOperation getAddOperation(URI repoLocation) {
+ public AddRepositoryOperation getAddOperation(URI repoLocation) {
return new AddColocatedRepositoryOperation(getAddOperationLabel(), repoLocation);
}
@@ -119,7 +119,7 @@ public class ColocatedRepositoryManipulator extends RepositoryManipulator {
* (non-Javadoc)
* @see org.eclipse.equinox.internal.provisional.p2.ui.policy.RepositoryManipulator#getRemoveOperation(java.net.URI[])
*/
- public RepositoryOperation getRemoveOperation(URI[] reposToRemove) {
+ public RemoveRepositoryOperation getRemoveOperation(URI[] reposToRemove) {
return new RemoveColocatedRepositoryOperation(getRemoveOperationLabel(), reposToRemove);
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/policy/RepositoryManipulator.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/policy/RepositoryManipulator.java
index c7188e5c1..a00ee42c0 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/policy/RepositoryManipulator.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/policy/RepositoryManipulator.java
@@ -11,7 +11,8 @@
package org.eclipse.equinox.internal.provisional.p2.ui.policy;
import java.net.URI;
-import org.eclipse.equinox.internal.provisional.p2.ui.operations.RepositoryOperation;
+import org.eclipse.equinox.internal.provisional.p2.ui.operations.AddRepositoryOperation;
+import org.eclipse.equinox.internal.provisional.p2.ui.operations.RemoveRepositoryOperation;
import org.eclipse.swt.widgets.Shell;
/**
@@ -51,7 +52,7 @@ public abstract class RepositoryManipulator {
* Return an operation that could be used to add the specified URL as
* a repository.
*/
- public abstract RepositoryOperation getAddOperation(URI repoLocation);
+ public abstract AddRepositoryOperation getAddOperation(URI repoLocation);
/**
* Return a String describing a possible add operation. This is used
@@ -63,7 +64,7 @@ public abstract class RepositoryManipulator {
* Return an operation that could be used to remove the specified URL as
* a repositories.
*/
- public abstract RepositoryOperation getRemoveOperation(URI[] repoLocations);
+ public abstract RemoveRepositoryOperation getRemoveOperation(URI[] repoLocations);
/**
* Return a String describing a possible remove operation. This is used

Back to the top