Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java')
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java311
1 files changed, 107 insertions, 204 deletions
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java
index 4cc1686b1..38532af82 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2013 IBM Corporation and others.
+ * Copyright (c) 2007, 2018 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
@@ -28,14 +28,12 @@ import org.eclipse.equinox.p2.operations.RepositoryTracker;
import org.eclipse.jface.dialogs.*;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.layout.*;
-import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.viewers.*;
import org.eclipse.jface.window.Window;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.accessibility.AccessibleAdapter;
-import org.eclipse.swt.accessibility.AccessibleEvent;
+import org.eclipse.swt.accessibility.AccessibleListener;
import org.eclipse.swt.custom.BusyIndicator;
import org.eclipse.swt.dnd.*;
import org.eclipse.swt.events.*;
@@ -214,49 +212,30 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
// Filter box
pattern = new Text(composite, SWT.SINGLE | SWT.BORDER | SWT.SEARCH | SWT.CANCEL);
- pattern.getAccessible().addAccessibleListener(new AccessibleAdapter() {
- @Override
- public void getName(AccessibleEvent e) {
- e.result = DEFAULT_FILTER_TEXT;
- }
- });
+ pattern.getAccessible().addAccessibleListener(AccessibleListener.getNameAdapter(e -> e.result = DEFAULT_FILTER_TEXT));
pattern.setText(DEFAULT_FILTER_TEXT);
pattern.selectAll();
- pattern.addModifyListener(new ModifyListener() {
- @Override
- public void modifyText(ModifyEvent e) {
- applyFilter();
- }
- });
-
- pattern.addKeyListener(new KeyAdapter() {
- @Override
- public void keyPressed(KeyEvent e) {
- if (e.keyCode == SWT.ARROW_DOWN) {
- if (table.getItemCount() > 0) {
- table.setFocus();
- } else if (e.character == SWT.CR) {
- return;
- }
+ pattern.addModifyListener(e -> applyFilter());
+
+ pattern.addKeyListener(KeyListener.keyPressedAdapter(e -> {
+ if (e.keyCode == SWT.ARROW_DOWN) {
+ if (table.getItemCount() > 0) {
+ table.setFocus();
+ } else if (e.character == SWT.CR) {
+ return;
}
}
- });
+ }));
- pattern.addFocusListener(new FocusAdapter() {
- @Override
- public void focusGained(FocusEvent e) {
- display.asyncExec(new Runnable() {
- @Override
- public void run() {
- if (!pattern.isDisposed()) {
- if (DEFAULT_FILTER_TEXT.equals(pattern.getText().trim())) {
- pattern.selectAll();
- }
- }
+ pattern.addFocusListener(FocusListener.focusGainedAdapter(e -> {
+ display.asyncExec(() -> {
+ if (!pattern.isDisposed()) {
+ if (DEFAULT_FILTER_TEXT.equals(pattern.getText().trim())) {
+ pattern.selectAll();
}
- });
- }
- });
+ }
+ });
+ }));
// spacer to fill other column
if (policy.getRepositoriesVisible())
@@ -267,14 +246,11 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
repositoryViewer = new CheckboxTableViewer(table);
// Key listener for delete
- table.addKeyListener(new KeyAdapter() {
- @Override
- public void keyPressed(KeyEvent e) {
- if (e.keyCode == SWT.DEL) {
- removeRepositories();
- }
+ table.addKeyListener(KeyListener.keyPressedAdapter(e -> {
+ if (e.keyCode == SWT.DEL) {
+ removeRepositories();
}
- });
+ }));
setTableColumns();
CopyUtils.activateCopy(this, table);
@@ -327,13 +303,10 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
repositoryViewer.setColumnProperties(new String[] {"nickname"}); //$NON-NLS-1$
repositoryViewer.setCellEditors(new CellEditor[] {new TextCellEditor(repositoryViewer.getTable())});
- repositoryViewer.addSelectionChangedListener(new ISelectionChangedListener() {
- @Override
- public void selectionChanged(SelectionChangedEvent event) {
- if (policy.getRepositoriesVisible())
- validateButtons();
- setDetails();
- }
+ repositoryViewer.addSelectionChangedListener(event -> {
+ if (policy.getRepositoriesVisible())
+ validateButtons();
+ setDetails();
});
repositoryViewer.setCheckStateProvider(new ICheckStateProvider() {
@@ -348,17 +321,14 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
}
});
- repositoryViewer.addCheckStateListener(new ICheckStateListener() {
- @Override
- public void checkStateChanged(CheckStateChangedEvent event) {
- MetadataRepositoryElement element = (MetadataRepositoryElement) event.getElement();
- element.setEnabled(event.getChecked());
- // paranoid that an equal but not identical element was passed in as the selection.
- // update the cache map just in case.
- getInput().put(element);
- // update the viewer to show the change
- updateForEnablementChange(new MetadataRepositoryElement[] {element});
- }
+ repositoryViewer.addCheckStateListener(event -> {
+ MetadataRepositoryElement element = (MetadataRepositoryElement) event.getElement();
+ element.setEnabled(event.getChecked());
+ // paranoid that an equal but not identical element was passed in as the selection.
+ // update the cache map just in case.
+ getInput().put(element);
+ // update the viewer to show the change
+ updateForEnablementChange(new MetadataRepositoryElement[] {element});
});
// Input last
@@ -376,12 +346,7 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
listener = getViewerProvisioningListener();
ProvUI.getProvisioningEventBus(ui.getSession()).addListener(listener);
- composite.addDisposeListener(new DisposeListener() {
- @Override
- public void widgetDisposed(DisposeEvent event) {
- ProvUI.getProvisioningEventBus(ui.getSession()).removeListener(listener);
- }
- });
+ composite.addDisposeListener(event -> ProvUI.getProvisioningEventBus(ui.getSession()).removeListener(listener));
validateButtons();
}
@@ -394,11 +359,7 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
details.setLayoutData(data);
- GridLayoutFactory.fillDefaults()
- .numColumns(policy.getRepositoriesVisible() ? 2 : 1)
- .margins(LayoutConstants.getMargins())
- .spacing(LayoutConstants.getSpacing())
- .generateLayout(composite);
+ GridLayoutFactory.fillDefaults().numColumns(policy.getRepositoriesVisible() ? 2 : 1).margins(LayoutConstants.getMargins()).spacing(LayoutConstants.getSpacing()).generateLayout(composite);
Dialog.applyDialogFont(composite);
return composite;
@@ -490,60 +451,25 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
private void createVerticalButtons(Composite parent) {
addButton = createVerticalButton(parent, ProvUIMessages.RepositoryManipulationPage_Add, false);
- addButton.addListener(SWT.Selection, new Listener() {
- @Override
- public void handleEvent(Event event) {
- addRepository();
- }
- });
+ addButton.addListener(SWT.Selection, event -> addRepository());
editButton = createVerticalButton(parent, ProvUIMessages.RepositoryManipulationPage_Edit, false);
- editButton.addListener(SWT.Selection, new Listener() {
- @Override
- public void handleEvent(Event event) {
- changeRepositoryProperties();
- }
- });
+ editButton.addListener(SWT.Selection, event -> changeRepositoryProperties());
removeButton = createVerticalButton(parent, ProvUIMessages.RepositoryManipulationPage_Remove, false);
- removeButton.addListener(SWT.Selection, new Listener() {
- @Override
- public void handleEvent(Event event) {
- removeRepositories();
- }
- });
+ removeButton.addListener(SWT.Selection, event -> removeRepositories());
refreshButton = createVerticalButton(parent, ProvUIMessages.RepositoryManipulationPage_RefreshConnection, false);
- refreshButton.addListener(SWT.Selection, new Listener() {
- @Override
- public void handleEvent(Event event) {
- refreshRepository();
- }
- });
+ refreshButton.addListener(SWT.Selection, event -> refreshRepository());
disableButton = createVerticalButton(parent, ProvUIMessages.RepositoryManipulationPage_DisableButton, false);
- disableButton.addListener(SWT.Selection, new Listener() {
- @Override
- public void handleEvent(Event event) {
- toggleRepositoryEnablement();
- }
- });
+ disableButton.addListener(SWT.Selection, event -> toggleRepositoryEnablement());
Button button = createVerticalButton(parent, ProvUIMessages.RepositoryManipulationPage_Import, false);
- button.addListener(SWT.Selection, new Listener() {
- @Override
- public void handleEvent(Event event) {
- importRepositories();
- }
- });
+ button.addListener(SWT.Selection, event -> importRepositories());
exportButton = createVerticalButton(parent, ProvUIMessages.RepositoryManipulationPage_Export, false);
- exportButton.addListener(SWT.Selection, new Listener() {
- @Override
- public void handleEvent(Event event) {
- exportRepositories();
- }
- });
+ exportButton.addListener(SWT.Selection, event -> exportRepositories());
}
CachedMetadataRepositories getInput() {
@@ -552,10 +478,6 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
return input;
}
- /*
- * (non-Javadoc)
- * @see org.eclipse.jface.preference.PreferencePage#performOk()
- */
@Override
public boolean performOk() {
if (changed)
@@ -632,57 +554,54 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
final URI location = selected[0].getLocation();
ProgressMonitorDialog dialog = new ProgressMonitorDialog(getShell());
try {
- dialog.run(true, true, new IRunnableWithProgress() {
- @Override
- public void run(IProgressMonitor monitor) {
- monitor.beginTask(NLS.bind(ProvUIMessages.RepositoryManipulationPage_ContactingSiteMessage, location), 100);
+ dialog.run(true, true, monitor -> {
+ monitor.beginTask(NLS.bind(ProvUIMessages.RepositoryManipulationPage_ContactingSiteMessage, location), 100);
+ try {
+ // Batch the events for this operation so that any events on reload (discovery, etc.) will be ignored
+ // in the UI as they happen.
+ ui.signalRepositoryOperationStart();
+ tracker.clearRepositoryNotFound(location);
+ // If the managers don't know this repo, refreshing it will not work.
+ // We temporarily add it, but we must remove it in case the user cancels out of this page.
+ if (!includesRepo(tracker.getKnownRepositories(ui.getSession()), location)) {
+ remove[0] = true;
+ // We don't want to use the tracker here because it ensures that additions are
+ // reported as user events to be responded to. We don't want, for example, the
+ // install wizard to change combo selections based on what is done here.
+ ProvUI.getMetadataRepositoryManager(ui.getSession()).addRepository(location);
+ ProvUI.getArtifactRepositoryManager(ui.getSession()).addRepository(location);
+ }
+ // See https://bugs.eclipse.org/bugs/show_bug.cgi?id=312332
+ // We assume repository colocation here. Ideally we should not do this, but the
+ // RepositoryTracker API is swallowing the refresh errors.
+ SubMonitor sub = SubMonitor.convert(monitor, 200);
try {
- // Batch the events for this operation so that any events on reload (discovery, etc.) will be ignored
- // in the UI as they happen.
- ui.signalRepositoryOperationStart();
- tracker.clearRepositoryNotFound(location);
- // If the managers don't know this repo, refreshing it will not work.
- // We temporarily add it, but we must remove it in case the user cancels out of this page.
- if (!includesRepo(tracker.getKnownRepositories(ui.getSession()), location)) {
- remove[0] = true;
- // We don't want to use the tracker here because it ensures that additions are
- // reported as user events to be responded to. We don't want, for example, the
- // install wizard to change combo selections based on what is done here.
- ProvUI.getMetadataRepositoryManager(ui.getSession()).addRepository(location);
- ProvUI.getArtifactRepositoryManager(ui.getSession()).addRepository(location);
- }
- // See https://bugs.eclipse.org/bugs/show_bug.cgi?id=312332
- // We assume repository colocation here. Ideally we should not do this, but the
- // RepositoryTracker API is swallowing the refresh errors.
- SubMonitor sub = SubMonitor.convert(monitor, 200);
- try {
- ProvUI.getMetadataRepositoryManager(ui.getSession()).refreshRepository(location, sub.newChild(100));
- } catch (ProvisionException e) {
- fail[0] = e;
- }
- try {
- ProvUI.getArtifactRepositoryManager(ui.getSession()).refreshRepository(location, sub.newChild(100));
- } catch (ProvisionException e) {
- // Failure in the artifact repository. We will not report this because the user has no separate visibility
- // of the artifact repository. We should log the error. If this repository fails during a download, the error
- // will be reported at that time to the user, when it matters. This also prevents false error reporting when
- // a metadata repository didn't actually have a colocated artifact repository.
- LogHelper.log(e);
- }
- } catch (OperationCanceledException e) {
- // Catch canceled login attempts
- fail[0] = new ProvisionException(new Status(IStatus.CANCEL, ProvUIActivator.PLUGIN_ID, ProvUIMessages.RepositoryManipulationPage_RefreshOperationCanceled, e));
- } finally {
- // Check if the monitor was canceled
- if (fail[0] == null && monitor.isCanceled())
- fail[0] = new ProvisionException(new Status(IStatus.CANCEL, ProvUIActivator.PLUGIN_ID, ProvUIMessages.RepositoryManipulationPage_RefreshOperationCanceled));
- // If we temporarily added a repo so we could read it, remove it.
- if (remove[0]) {
- ProvUI.getMetadataRepositoryManager(ui.getSession()).removeRepository(location);
- ProvUI.getArtifactRepositoryManager(ui.getSession()).removeRepository(location);
- }
- ui.signalRepositoryOperationComplete(null, false);
+ ProvUI.getMetadataRepositoryManager(ui.getSession()).refreshRepository(location, sub.newChild(100));
+ } catch (ProvisionException e1) {
+ fail[0] = e1;
+ }
+ try {
+ ProvUI.getArtifactRepositoryManager(ui.getSession()).refreshRepository(location, sub.newChild(100));
+ } catch (ProvisionException e2) {
+ // Failure in the artifact repository. We will not report this because the user has no separate visibility
+ // of the artifact repository. We should log the error. If this repository fails during a download, the error
+ // will be reported at that time to the user, when it matters. This also prevents false error reporting when
+ // a metadata repository didn't actually have a colocated artifact repository.
+ LogHelper.log(e2);
}
+ } catch (OperationCanceledException e3) {
+ // Catch canceled login attempts
+ fail[0] = new ProvisionException(new Status(IStatus.CANCEL, ProvUIActivator.PLUGIN_ID, ProvUIMessages.RepositoryManipulationPage_RefreshOperationCanceled, e3));
+ } finally {
+ // Check if the monitor was canceled
+ if (fail[0] == null && monitor.isCanceled())
+ fail[0] = new ProvisionException(new Status(IStatus.CANCEL, ProvUIActivator.PLUGIN_ID, ProvUIMessages.RepositoryManipulationPage_RefreshOperationCanceled));
+ // If we temporarily added a repo so we could read it, remove it.
+ if (remove[0]) {
+ ProvUI.getMetadataRepositoryManager(ui.getSession()).removeRepository(location);
+ ProvUI.getArtifactRepositoryManager(ui.getSession()).removeRepository(location);
+ }
+ ui.signalRepositoryOperationComplete(null, false);
}
});
} catch (InvocationTargetException e) {
@@ -739,29 +658,23 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
}
void importRepositories() {
- BusyIndicator.showWhile(getShell().getDisplay(), new Runnable() {
- @Override
- public void run() {
- MetadataRepositoryElement[] imported = UpdateManagerCompatibility.importSites(getShell());
- if (imported.length > 0) {
- changed = true;
- for (int i = 0; i < imported.length; i++)
- getInput().put(imported[i]);
- safeRefresh(null);
- }
+ BusyIndicator.showWhile(getShell().getDisplay(), () -> {
+ MetadataRepositoryElement[] imported = UpdateManagerCompatibility.importSites(getShell());
+ if (imported.length > 0) {
+ changed = true;
+ for (int i = 0; i < imported.length; i++)
+ getInput().put(imported[i]);
+ safeRefresh(null);
}
});
}
void exportRepositories() {
- BusyIndicator.showWhile(getShell().getDisplay(), new Runnable() {
- @Override
- public void run() {
- MetadataRepositoryElement[] elements = getSelectedElements();
- if (elements.length == 0)
- elements = getElements();
- UpdateManagerCompatibility.exportSites(getShell(), elements);
- }
+ BusyIndicator.showWhile(getShell().getDisplay(), () -> {
+ MetadataRepositoryElement[] elements = getSelectedElements();
+ if (elements.length == 0)
+ elements = getElements();
+ UpdateManagerCompatibility.exportSites(getShell(), elements);
});
}
@@ -846,13 +759,10 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
}
void safeRefresh(final MetadataRepositoryElement elementToSelect) {
- Runnable runnable = new Runnable() {
- @Override
- public void run() {
- repositoryViewer.refresh();
- if (elementToSelect != null)
- repositoryViewer.setSelection(new StructuredSelection(elementToSelect), true);
- }
+ Runnable runnable = () -> {
+ repositoryViewer.refresh();
+ if (elementToSelect != null)
+ repositoryViewer.setSelection(new StructuredSelection(elementToSelect), true);
};
if (Display.getCurrent() == null)
display.asyncExec(runnable);
@@ -894,9 +804,6 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
}
}
- /* (non-Javadoc)
- * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
- */
@Override
public void init(IWorkbench workbench) {
noDefaultAndApplyButton();
@@ -977,10 +884,6 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
return localCacheRepoManipulator;
}
- /*
- * (non-Javadoc)
- * @see org.eclipse.equinox.p2.ui.ICopyable#copyToClipboard(org.eclipse.swt.widgets.Control)
- */
@Override
public void copyToClipboard(Control activeControl) {
MetadataRepositoryElement[] elements = getSelectedElements();

Back to the top