diff options
author | Mickael Istria | 2022-01-11 15:58:53 +0000 |
---|---|---|
committer | Mickael Istria | 2022-01-11 22:17:48 +0000 |
commit | bcc7488f0d8c02b4a6e2f8dd4910fb6f629f8a82 (patch) | |
tree | 5ac53496152714521d2e6e0f3b5be79ca96b8f13 | |
parent | e4c17a210631e7961d5574174128bd5dbc8ce192 (diff) | |
download | rt.equinox.p2-bcc7488f0d8c02b4a6e2f8dd4910fb6f629f8a82.tar.gz rt.equinox.p2-bcc7488f0d8c02b4a6e2f8dd4910fb6f629f8a82.tar.xz rt.equinox.p2-bcc7488f0d8c02b4a6e2f8dd4910fb6f629f8a82.zip |
Bug 578024 - Improve TrustCertificateDialogY20220113-0600Y20220112-0630Y20220112-0600I20220112-1800I20220112-0210I20220111-2130I20220111-1910I20220111-1800
Add helpContext and shows expiration date.
Change-Id: Ie8b3c737669655e34060496f7b25468fc36fc1d6
Reviewed-on: https://git.eclipse.org/r/c/equinox/rt.equinox.p2/+/189481
Tested-by: Equinox Bot <equinox-bot@eclipse.org>
Reviewed-by: Mickael Istria <mistria@redhat.com>
2 files changed, 42 insertions, 17 deletions
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/IProvHelpContextIds.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/IProvHelpContextIds.java index cba53aa52..3c75aa5e9 100644 --- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/IProvHelpContextIds.java +++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/IProvHelpContextIds.java @@ -13,35 +13,37 @@ *******************************************************************************/ package org.eclipse.equinox.internal.p2.ui; - /** * Help context ids for the P2 UI * <p> * This interface contains constants only; it is not intended to be implemented * or extended. * </p> + * * @since 3.4 * @noextend This interface is not intended to be extended by clients. * @noimplement This interface is not intended to be implemented by clients. */ public interface IProvHelpContextIds { - public static final String PREFIX = ProvUIActivator.PLUGIN_ID + "."; //$NON-NLS-1$ + String PREFIX = ProvUIActivator.PLUGIN_ID + "."; //$NON-NLS-1$ + + String REVERT_CONFIGURATION_WIZARD = PREFIX + "revert_configuration_wizard_context"; //$NON-NLS-1$ - public static final String REVERT_CONFIGURATION_WIZARD = PREFIX + "revert_configuration_wizard_context"; //$NON-NLS-1$ + String UNINSTALL_WIZARD = PREFIX + "uinstall_wizard_context"; //$NON-NLS-1$ - public static final String UNINSTALL_WIZARD = PREFIX + "uinstall_wizard_context"; //$NON-NLS-1$ + String UPDATE_WIZARD = PREFIX + "update_wizard_context"; //$NON-NLS-1$ - public static final String UPDATE_WIZARD = PREFIX + "update_wizard_context"; //$NON-NLS-1$ + String ADD_REPOSITORY_DIALOG = PREFIX + "add_repository_dialog_context"; //$NON-NLS-1$ - public static final String ADD_REPOSITORY_DIALOG = PREFIX + "add_repository_dialog_context"; //$NON-NLS-1$ + String INSTALL_WIZARD = PREFIX + "install_wizard_context"; //$NON-NLS-1$ - public static final String INSTALL_WIZARD = PREFIX + "install_wizard_context"; //$NON-NLS-1$ + String REPOSITORY_MANIPULATION_DIALOG = PREFIX + "repository_manipulation_dialog_context"; //$NON-NLS-1$ - public static final String REPOSITORY_MANIPULATION_DIALOG = PREFIX + "repository_manipulation_dialog_context"; //$NON-NLS-1$ + String INSTALLED_SOFTWARE = PREFIX + "installed_software_context"; //$NON-NLS-1$ - public static final String INSTALLED_SOFTWARE = PREFIX + "installed_software_context"; //$NON-NLS-1$ + String AVAILABLE_SOFTWARE = PREFIX + "available_software_context"; //$NON-NLS-1$ - public static final String AVAILABLE_SOFTWARE = PREFIX + "available_software_context"; //$NON-NLS-1$ + String TRUST_DIALOG = PREFIX + "trust_dialog_context"; //$NON-NLS-1$ } diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/TrustCertificateDialog.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/TrustCertificateDialog.java index 5ffad2efc..23fcf9b35 100644 --- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/TrustCertificateDialog.java +++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/TrustCertificateDialog.java @@ -17,29 +17,30 @@ package org.eclipse.equinox.internal.p2.ui.dialogs; import static org.eclipse.swt.events.SelectionListener.widgetSelectedAdapter; import java.io.*; -import java.security.cert.CertificateEncodingException; -import java.security.cert.X509Certificate; -import java.util.ArrayList; -import java.util.Iterator; +import java.security.cert.*; +import java.time.Instant; +import java.time.temporal.ChronoUnit; +import java.util.*; import java.util.function.Function; import org.bouncycastle.bcpg.ArmoredOutputStream; import org.bouncycastle.openpgp.PGPPublicKey; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; -import org.eclipse.equinox.internal.p2.ui.ProvUIActivator; -import org.eclipse.equinox.internal.p2.ui.ProvUIMessages; +import org.eclipse.equinox.internal.p2.ui.*; import org.eclipse.equinox.internal.p2.ui.viewers.CertificateLabelProvider; import org.eclipse.equinox.internal.provisional.security.ui.X500PrincipalHelper; import org.eclipse.equinox.internal.provisional.security.ui.X509CertificateViewDialog; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.viewers.*; +import org.eclipse.osgi.util.NLS; import org.eclipse.swt.SWT; import org.eclipse.swt.dnd.*; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.*; import org.eclipse.swt.widgets.*; +import org.eclipse.ui.PlatformUI; import org.eclipse.ui.dialogs.SelectionDialog; /** @@ -69,6 +70,7 @@ public class TrustCertificateDialog extends SelectionDialog { setMessage(containsPGPKeys(inputElement) ? ProvUIMessages.TrustCertificateDialog_MessageWithPGP : ProvUIMessages.TrustCertificateDialog_Message); setShellStyle(SWT.DIALOG_TRIM | SWT.MODELESS | SWT.RESIZE | getDefaultOrientation()); + PlatformUI.getWorkbench().getHelpSystem().setHelp(parentShell, IProvHelpContextIds.TRUST_DIALOG); } private static boolean containsPGPKeys(Object inputElement) { @@ -245,6 +247,7 @@ public class TrustCertificateDialog extends SelectionDialog { data.heightHint = SIZING_SELECTION_WIDGET_HEIGHT; data.widthHint = SIZING_SELECTION_WIDGET_WIDTH; listViewer.getTable().setLayoutData(data); + listViewer.getTable().setHeaderVisible(true); listViewer.setContentProvider(contentProvider); TableViewerColumn typeColumn = new TableViewerColumn(listViewer, SWT.NONE); @@ -268,7 +271,27 @@ public class TrustCertificateDialog extends SelectionDialog { return principalHelper.getCN() + "; " + principalHelper.getOU() + "; " //$NON-NLS-1$ //$NON-NLS-2$ + principalHelper.getO(); })); - listViewer.getTable().setHeaderVisible(true); + TableViewerColumn validColumn = new TableViewerColumn(listViewer, SWT.NONE); + validColumn.getColumn().setText(ProvUIMessages.TrustCertificateDialog_dates); + validColumn.getColumn().setWidth(100); + validColumn.setLabelProvider(new PGPOrX509ColumnLabelProvider(pgp -> { + if (pgp.getCreationTime().after(Date.from(Instant.now()))) { + return NLS.bind(ProvUIMessages.TrustCertificateDialog_NotYetValidStartDate, pgp.getCreationTime()); + } + Instant expires = pgp.getCreationTime().toInstant().plus(pgp.getValidSeconds(), ChronoUnit.SECONDS); + return expires.isBefore(Instant.now()) + ? NLS.bind(ProvUIMessages.TrustCertificateDialog_expiredSince, expires) + : NLS.bind(ProvUIMessages.TrustCertificateDialog_validExpires, expires); + }, x509 -> { + try { + x509.checkValidity(); + return ProvUIMessages.TrustCertificateDialog_valid; + } catch (CertificateExpiredException expired) { + return ProvUIMessages.TrustCertificateDialog_expired; + } catch (CertificateNotYetValidException notYetValid) { + return ProvUIMessages.TrustCertificateDialog_notYetValid; + } + })); Menu menu = new Menu(listViewer.getTable()); listViewer.getTable().setMenu(menu); |