Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/RepositoriesView.java')
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/RepositoriesView.java62
1 files changed, 47 insertions, 15 deletions
diff --git a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/RepositoriesView.java b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/RepositoriesView.java
index fecff8b3e..cf21efabc 100644
--- a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/RepositoriesView.java
+++ b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/RepositoriesView.java
@@ -10,22 +10,29 @@
*******************************************************************************/
package org.eclipse.equinox.internal.p2.ui.admin;
+import java.lang.reflect.InvocationTargetException;
+import java.net.URI;
import java.util.ArrayList;
import java.util.List;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.equinox.internal.p2.ui.ProvUI;
+import org.eclipse.equinox.internal.p2.ui.ProvUIImages;
import org.eclipse.equinox.internal.p2.ui.admin.preferences.PreferenceConstants;
-import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
-import org.eclipse.equinox.internal.provisional.p2.ui.*;
-import org.eclipse.equinox.internal.provisional.p2.ui.model.IRepositoryElement;
-import org.eclipse.equinox.internal.provisional.p2.ui.operations.RemoveRepositoryOperation;
-import org.eclipse.equinox.internal.provisional.p2.ui.viewers.RepositoryContentProvider;
-import org.eclipse.equinox.internal.provisional.p2.ui.viewers.StructuredViewerProvisioningListener;
+import org.eclipse.equinox.internal.p2.ui.model.IRepositoryElement;
+import org.eclipse.equinox.internal.p2.ui.viewers.RepositoryContentProvider;
+import org.eclipse.equinox.internal.p2.ui.viewers.StructuredViewerProvisioningListener;
+import org.eclipse.equinox.p2.metadata.IInstallableUnit;
+import org.eclipse.equinox.p2.operations.RepositoryTracker;
import org.eclipse.jface.action.*;
+import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.viewers.*;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.dialogs.PropertyDialogAction;
+import org.eclipse.ui.progress.IWorkbenchSiteProgressService;
import org.eclipse.ui.statushandlers.StatusManager;
/**
@@ -46,7 +53,14 @@ abstract class RepositoriesView extends ProvView {
}
public void run() {
- ProvisioningOperationRunner.run(getRemoveOperation(getSelection().toArray()), StatusManager.SHOW | StatusManager.LOG);
+ RepositoryTracker tracker = RepositoriesView.this.getRepositoryTracker();
+ Object[] elements = getSelection().toArray();
+ ArrayList<URI> uris = new ArrayList<URI>(elements.length);
+ for (int i = 0; i < elements.length; i++) {
+ if (elements[i] instanceof IRepositoryElement<?>)
+ uris.add(((IRepositoryElement<?>) elements[i]).getLocation());
+ }
+ tracker.removeRepositories(uris.toArray(new URI[uris.size()]), RepositoriesView.this.getProvisioningUI().getSession());
}
}
@@ -60,10 +74,10 @@ abstract class RepositoriesView extends ProvView {
public void run() {
Object[] elements = ((ITreeContentProvider) viewer.getContentProvider()).getElements(getInput());
- ArrayList urls = new ArrayList();
+ ArrayList<URI> urls = new ArrayList<URI>();
for (int i = 0; i < elements.length; i++)
- if (elements[i] instanceof IRepositoryElement)
- urls.add(((IRepositoryElement) elements[i]).getLocation());
+ if (elements[i] instanceof IRepositoryElement<?>)
+ urls.add(((IRepositoryElement<?>) elements[i]).getLocation());
openAddRepositoryDialog(getShell());
}
}
@@ -164,9 +178,9 @@ abstract class RepositoriesView extends ProvView {
}
- protected abstract int openAddRepositoryDialog(Shell shell);
+ protected abstract RepositoryTracker getRepositoryTracker();
- protected abstract RemoveRepositoryOperation getRemoveOperation(Object[] elements);
+ protected abstract int openAddRepositoryDialog(Shell shell);
protected abstract String getAddCommandLabel();
@@ -179,14 +193,32 @@ abstract class RepositoriesView extends ProvView {
protected abstract String getRemoveCommandTooltip();
protected boolean isRepository(Object element) {
- return element instanceof IRepositoryElement;
+ return element instanceof IRepositoryElement<?>;
}
protected abstract int getListenerEventTypes();
- protected List getVisualProperties() {
- List list = super.getVisualProperties();
+ protected List<String> getVisualProperties() {
+ List<String> list = super.getVisualProperties();
list.add(PreferenceConstants.PREF_HIDE_SYSTEM_REPOS);
return list;
}
+
+ protected void refreshUnderlyingModel() {
+ IWorkbenchSiteProgressService service = (IWorkbenchSiteProgressService) getSite().getAdapter(IWorkbenchSiteProgressService.class);
+ if (service != null) {
+ try {
+ service.run(true, false, new IRunnableWithProgress() {
+ public void run(IProgressMonitor monitor) {
+ getRepositoryTracker().refreshRepositories(getRepositoryTracker().getKnownRepositories(getProvisioningUI().getSession()), getProvisioningUI().getSession(), monitor);
+ }
+ });
+ } catch (InvocationTargetException e) {
+ ProvUI.handleException(e, null, StatusManager.SHOW);
+ } catch (InterruptedException e) {
+ // ignore
+ }
+ } else
+ getRepositoryTracker().refreshRepositories(getRepositoryTracker().getKnownRepositories(getProvisioningUI().getSession()), getProvisioningUI().getSession(), new NullProgressMonitor());
+ }
}

Back to the top