diff options
author | Susan Franklin | 2008-01-30 00:48:05 +0000 |
---|---|---|
committer | Susan Franklin | 2008-01-30 00:48:05 +0000 |
commit | 57870e66ef7fae7685c5eeb2e57effd0d91509ba (patch) | |
tree | cb90935909d71a7c12c04601fc47172287cec0d9 | |
parent | fbca750fbe5c2be9fd9d0659c1f9b4fc5fefd162 (diff) | |
download | rt.equinox.p2-57870e66ef7fae7685c5eeb2e57effd0d91509ba.tar.gz rt.equinox.p2-57870e66ef7fae7685c5eeb2e57effd0d91509ba.tar.xz rt.equinox.p2-57870e66ef7fae7685c5eeb2e57effd0d91509ba.zip |
Bug 203009 - [prov] [ui] polish up the property pages
19 files changed, 343 insertions, 55 deletions
diff --git a/bundles/org.eclipse.equinox.p2.ui.admin/plugin.properties b/bundles/org.eclipse.equinox.p2.ui.admin/plugin.properties index 92c0d0098..674a59058 100644 --- a/bundles/org.eclipse.equinox.p2.ui.admin/plugin.properties +++ b/bundles/org.eclipse.equinox.p2.ui.admin/plugin.properties @@ -20,7 +20,7 @@ MetadataRepositories.name=Metadata Repositories ArtifactRepositories.name=Artifact Repositories Profiles.name=Profiles Provisioning.title=Provisioning -Profile.name=Profile -IU.name=Installable Unit +Profile.name=Profile Admin Info +IU.name=IU Admin Info InstalledIU.name=IU Profile Properties -Repository.name=Repository
\ No newline at end of file +Repository.name=Repository Admin Info
\ No newline at end of file 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 18d865461..5c34d1757 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 @@ -78,6 +78,11 @@ public class ProvAdminUIMessages extends NLS { public static String IUGroup_Version; public static String IUProfilePropertiesGroup_InvalidProfileID; + public static String IUPropertiesGroup_CopyrightProviderLabel; + public static String IUPropertiesGroup_DescriptionPropertyLabel; + public static String IUPropertiesGroup_LicenseProviderLabel; + public static String IUPropertiesGroup_NamePropertyLabel; + public static String IUPropertiesGroup_ProviderPropertyLabel; public static String No_Property_Item_Selected; public static String ProfileGroup_Browse; diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/IUGroup.java b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/IUGroup.java index 734343689..2740a4742 100644 --- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/IUGroup.java +++ b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/IUGroup.java @@ -8,7 +8,7 @@ * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ -package org.eclipse.equinox.p2.ui.dialogs; +package org.eclipse.equinox.internal.p2.ui.admin.dialogs; import org.eclipse.equinox.p2.metadata.IInstallableUnit; import org.eclipse.equinox.p2.ui.ProvUI; diff --git a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/IUImplementationGroup.java b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/IUImplementationGroup.java index 0cdfc99e2..910d54af5 100644 --- a/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/IUImplementationGroup.java +++ b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/IUImplementationGroup.java @@ -16,7 +16,6 @@ import org.eclipse.equinox.internal.p2.ui.admin.ProvAdminUIMessages; import org.eclipse.equinox.p2.metadata.*; import org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitDescription; import org.eclipse.equinox.p2.ui.admin.ProvAdminUIActivator; -import org.eclipse.equinox.p2.ui.dialogs.IUGroup; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.swt.SWT; 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 b37e3eb6f..7d69c4cdd 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 @@ -15,7 +15,6 @@ 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; diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/IUPropertiesGroup.java b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/IUPropertiesGroup.java index a27bf9070..1c3df71f8 100644 --- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/IUPropertiesGroup.java +++ b/bundles/org.eclipse.equinox.p2.ui.admin/src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/IUPropertiesGroup.java @@ -8,9 +8,9 @@ * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ -package org.eclipse.equinox.p2.ui.dialogs; +package org.eclipse.equinox.internal.p2.ui.admin.dialogs; -import org.eclipse.equinox.internal.p2.ui.ProvUIMessages; +import org.eclipse.equinox.internal.p2.ui.admin.ProvAdminUIMessages; import org.eclipse.equinox.p2.metadata.IInstallableUnit; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyListener; @@ -62,7 +62,7 @@ public class IUPropertiesGroup extends IUGroup { return; } String[] propNames = new String[] {IInstallableUnit.PROP_NAME, IInstallableUnit.PROP_DESCRIPTION, IInstallableUnit.PROP_PROVIDER, IInstallableUnit.PROP_COPYRIGHT, IInstallableUnit.PROP_LICENSE}; - String[] userPropNames = new String[] {ProvUIMessages.IUPropertiesGroup_NameProperty, ProvUIMessages.IUPropertiesGroup_DescriptionProperty, ProvUIMessages.IUPropertiesGroup_ProviderProperty, ProvUIMessages.IUPropertiesGroup_CopyrightProperty, ProvUIMessages.IUPropertiesGroup_LicenseProperty}; + String[] userPropNames = new String[] {ProvAdminUIMessages.IUPropertiesGroup_NamePropertyLabel, ProvAdminUIMessages.IUPropertiesGroup_DescriptionPropertyLabel, ProvAdminUIMessages.IUPropertiesGroup_ProviderPropertyLabel, ProvAdminUIMessages.IUPropertiesGroup_CopyrightProviderLabel, ProvAdminUIMessages.IUPropertiesGroup_LicenseProviderLabel}; for (int i = 0; i < propNames.length; i++) { TableItem item = new TableItem(propertiesTable, SWT.NULL); String value = getIU().getProperty(propNames[i]); 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 132ce5e69..fa342a119 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 @@ -57,6 +57,11 @@ IUGroup_RequiredCapabilities=&Required capabilities: IUGroup_ProvidedCapabilities=&Provided capabilities: IUGroup_IU_ID_Required=Must set an IU ID IUProfilePropertiesGroup_InvalidProfileID=Profile id {0} not valid. +IUPropertiesGroup_CopyrightProviderLabel=Copyright +IUPropertiesGroup_DescriptionPropertyLabel=Description +IUPropertiesGroup_LicenseProviderLabel=License +IUPropertiesGroup_NamePropertyLabel=Name +IUPropertiesGroup_ProviderPropertyLabel=Provider ProfileGroup_ID=Profile &id: ProfileGroup_Browse=&Browse... ProfileGroup_Browse2=B&rowse... diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk/plugin.properties b/bundles/org.eclipse.equinox.p2.ui.sdk/plugin.properties index ec2ac420c..8b0cf2f1b 100644 --- a/bundles/org.eclipse.equinox.p2.ui.sdk/plugin.properties +++ b/bundles/org.eclipse.equinox.p2.ui.sdk/plugin.properties @@ -13,9 +13,10 @@ # providerName=Eclipse.org bundleName=Provisioning SDK UI (Incubation) -Profile.name=Install Location -IU.name=Feature -Repository.name=Site +IU.general=General Information +IU.license=License Agreement +IU.copyright=Copyright +Repository.name=General Information Update.command=Software Updates (Incubation)... automaticUpdatesPrefPage = Automatic Updates provisioningPrefPage = Install/Update diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk/plugin.xml b/bundles/org.eclipse.equinox.p2.ui.sdk/plugin.xml index 69035470e..652fb29fc 100644 --- a/bundles/org.eclipse.equinox.p2.ui.sdk/plugin.xml +++ b/bundles/org.eclipse.equinox.p2.ui.sdk/plugin.xml @@ -13,16 +13,36 @@ <extension point="org.eclipse.ui.propertyPages"> <page - name="%IU.name" - class="org.eclipse.equinox.p2.ui.dialogs.IUPropertyPage" - id="org.eclipse.equinox.internal.p2.ui.sdk.IUPropertyPage"> + name="%IU.copyright" + class="org.eclipse.equinox.p2.ui.dialogs.IUCopyrightPropertyPage" + id="org.eclipse.equinox.p2.ui.sdk.IUCopyrightPropertyPage"> <enabledWhen> <adapt type="org.eclipse.equinox.p2.metadata.IInstallableUnit"> </adapt> </enabledWhen> </page> - + <page + name="%IU.general" + class="org.eclipse.equinox.p2.ui.dialogs.IUGeneralInfoPropertyPage" + id="org.eclipse.equinox.p2.ui.sdk.IUGeneralInfoPropertyPage"> + <enabledWhen> + <adapt + type="org.eclipse.equinox.p2.metadata.IInstallableUnit"> + </adapt> + </enabledWhen> + </page> + <page + name="%IU.license" + class="org.eclipse.equinox.p2.ui.dialogs.IULicensePropertyPage" + id="org.eclipse.equinox.p2.ui.sdk.IULicensePropertyPage"> + <enabledWhen> + <adapt + type="org.eclipse.equinox.p2.metadata.IInstallableUnit"> + </adapt> + </enabledWhen> + </page> + <page name="%Repository.name" class="org.eclipse.equinox.p2.ui.dialogs.RepositoryPropertyPage" 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 b514109f9..0bcd3fe59 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 @@ -38,15 +38,20 @@ public class ProvUIMessages extends NLS { public static String CategoryElementCollector_Uncategorized; public static String ChooseProfileDialog_DefaultDialogTitle; public static String InstallDialog_InstallSelectionMessage; - public static String IUPropertiesGroup_CopyrightProperty; - public static String IUPropertiesGroup_DescriptionProperty; - public static String IUPropertiesGroup_LicenseProperty; + public static String IUCopyrightPropertyPage_NoCopyright; public static String IUDetailsLabelProvider_KB; public static String IUDetailsLabelProvider_Bytes; public static String IUDetailsLabelProvider_ComputingSize; public static String IUDetailsLabelProvider_Unknown; - public static String IUPropertiesGroup_NameProperty; - public static String IUPropertiesGroup_ProviderProperty; + public static String IUGeneralInfoPropertyPage_ContactLabel; + public static String IUGeneralInfoPropertyPage_CouldNotOpenBrowser; + public static String IUGeneralInfoPropertyPage_DescriptionLabel; + public static String IUGeneralInfoPropertyPage_DocumentationLink; + public static String IUGeneralInfoPropertyPage_IdentifierLabel; + public static String IUGeneralInfoPropertyPage_NameLabel; + public static String IUGeneralInfoPropertyPage_ProviderLabel; + public static String IUGeneralInfoPropertyPage_VersionLabel; + public static String IULicensePropertyPage_NoLicense; public static String ProfileElement_InvalidProfile; public static String ProfileModificationWizardPage_ProfileNotFound; // utility error messages diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/IUPropertyPage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IUPropertyPage.java index 460f8d890..0ae86e9bc 100644 --- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/IUPropertyPage.java +++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IUPropertyPage.java @@ -8,15 +8,15 @@ * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ -package org.eclipse.equinox.p2.ui.dialogs; +package org.eclipse.equinox.internal.p2.ui.dialogs; import org.eclipse.equinox.internal.p2.ui.ProvUIMessages; import org.eclipse.equinox.p2.metadata.IInstallableUnit; import org.eclipse.equinox.p2.ui.ProvUI; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.swt.SWT; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.graphics.FontMetrics; +import org.eclipse.swt.graphics.GC; import org.eclipse.swt.widgets.*; import org.eclipse.ui.dialogs.PropertyPage; @@ -25,26 +25,29 @@ import org.eclipse.ui.dialogs.PropertyPage; * * @since 3.4 */ -public class IUPropertyPage extends PropertyPage { - - private IUPropertiesGroup iuGroup; +public abstract class IUPropertyPage extends PropertyPage { protected Control createContents(Composite parent) { + noDefaultAndApplyButton(); IInstallableUnit iu = (IInstallableUnit) ProvUI.getAdapter(getElement(), IInstallableUnit.class); + Control control; if (iu == null) { Label label = new Label(parent, SWT.DEFAULT); label.setText(ProvUIMessages.IUPropertyPage_NoIUSelected); + control = label; } - iuGroup = new IUPropertiesGroup(parent, iu, new ModifyListener() { - public void modifyText(ModifyEvent event) { - // not editable - } - }); - Dialog.applyDialogFont(iuGroup.getComposite()); - return iuGroup.getComposite(); + control = createIUPage(parent, iu); + Dialog.applyDialogFont(parent); + return control; } - public boolean performOk() { - return true; + protected int computeWidthLimit(Control control, int nchars) { + GC gc = new GC(control); + gc.setFont(control.getFont()); + FontMetrics fontMetrics = gc.getFontMetrics(); + gc.dispose(); + return Dialog.convertWidthInCharsToPixels(fontMetrics, nchars); } + + protected abstract Control createIUPage(Composite parent, IInstallableUnit iu); } diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/StructuredIUGroup.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/StructuredIUGroup.java index 3bf0b7c92..1e8452086 100644 --- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/StructuredIUGroup.java +++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/StructuredIUGroup.java @@ -12,6 +12,7 @@ package org.eclipse.equinox.internal.p2.ui.dialogs; import java.util.ArrayList; import java.util.List; +import org.eclipse.equinox.p2.director.ProvisioningContext; import org.eclipse.equinox.p2.metadata.IInstallableUnit; import org.eclipse.equinox.p2.ui.ProvUI; import org.eclipse.equinox.p2.ui.query.IQueryProvider; @@ -33,6 +34,7 @@ import org.eclipse.swt.widgets.Composite; public abstract class StructuredIUGroup { private IQueryProvider queryProvider; + private ProvisioningContext context; private FontMetrics fm; private StructuredViewer viewer; private Composite composite; @@ -45,19 +47,20 @@ public abstract class StructuredIUGroup { * to retrieve elements in the viewer. * @param font The font to use for calculating pixel sizes. This font is * not managed by the receiver. + * @param context the ProvisioningContext describing the context for provisioning. + */ - public StructuredIUGroup(final Composite parent, IQueryProvider queryProvider, Font font) { + public StructuredIUGroup(final Composite parent, IQueryProvider queryProvider, Font font, ProvisioningContext context) { this.queryProvider = queryProvider; + this.context = context; // Set up a fontmetrics for calculations GC gc = new GC(parent); gc.setFont(font); fm = gc.getFontMetrics(); gc.dispose(); - - createGroupComposite(parent); } - private void createGroupComposite(Composite parent) { + protected void createGroupComposite(Composite parent) { composite = new Composite(parent, SWT.NONE); GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true); composite.setLayoutData(gd); @@ -99,7 +102,10 @@ public abstract class StructuredIUGroup { protected IInstallableUnit getIU(Object element) { return (IInstallableUnit) ProvUI.getAdapter(element, IInstallableUnit.class); + } + protected ProvisioningContext getProvisioningContext() { + return context; } protected int convertHorizontalDLUsToPixels(int dlus) { 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 c55c1a5e7..a8ca866dc 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 @@ -57,14 +57,22 @@ ProvDropAdapter_InvalidDropTarget=Invalid drop target ProvDropAdapter_UnsupportedDropOperation=Unsupported drop operation ProvElementQueryResult_CouldNotInstantiateElement=Could not instantiate UI element class {0} +IUCopyrightPropertyPage_NoCopyright=No copyright information has been provided. IUPropertyPage_NoIUSelected=There was nothing selected to show in the properties. IUDetailsLabelProvider_KB={0} KB IUDetailsLabelProvider_Bytes={0} Bytes IUDetailsLabelProvider_ComputingSize=Computing size... IUDetailsLabelProvider_Unknown=Unknown -IUPropertiesGroup_NameProperty=Name -IUPropertiesGroup_ProviderProperty=Provider -IUPropertiesGroup_LicenseProperty=License +IUGeneralInfoPropertyPage_ContactLabel=Contact: +IUGeneralInfoPropertyPage_CouldNotOpenBrowser=Could not open the web browser. +IUGeneralInfoPropertyPage_DescriptionLabel=Description +IUGeneralInfoPropertyPage_DocumentationLink=Documentation is available: +IUGeneralInfoPropertyPage_IdentifierLabel=Identifier: +IUGeneralInfoPropertyPage_NameLabel=Name: +IUGeneralInfoPropertyPage_ProviderLabel=Provider: +IUGeneralInfoPropertyPage_VersionLabel=Version: +IULicensePropertyPage_NoLicense=No license information has been provided. + RepositoryPropertyPage_DescriptionFieldLabel=Description: RepositoryPropertyPage_NoRepoSelected=There was no repository selected RepositoryPropertyPage_NameFieldLabel=Name: @@ -101,8 +109,6 @@ UpdateAndInstallGroup_Refresh=&Refresh CategoryElementCollector_Uncategorized=Uncategorized ChooseProfileDialog_DefaultDialogTitle=Select a profile InstallDialog_InstallSelectionMessage=Review and confirm that the checked items will be installed. -IUPropertiesGroup_DescriptionProperty=Description -IUPropertiesGroup_CopyrightProperty=Copyright PlatformUpdateTitle = Software Updates PlatformRestartMessage = You will need to restart the system for the changes to take effect. \ diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/AvailableIUGroup.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/AvailableIUGroup.java index 587f42f86..05db67df3 100644 --- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/AvailableIUGroup.java +++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/AvailableIUGroup.java @@ -36,8 +36,6 @@ import org.eclipse.swt.widgets.*; */ public class AvailableIUGroup extends StructuredIUGroup { - ProvisioningContext context; - /** * Create a group that represents the available IU's. * @@ -50,9 +48,8 @@ public class AvailableIUGroup extends StructuredIUGroup { * including information about which repositories should be used. */ public AvailableIUGroup(final Composite parent, IQueryProvider queryProvider, Font font, ProvisioningContext context) { - // This will evolve into a provisioning context - super(parent, queryProvider, font); - this.context = context; + super(parent, queryProvider, font, context); + this.createGroupComposite(parent); } protected StructuredViewer createViewer(Composite parent, IQueryProvider queryProvider) { @@ -68,7 +65,7 @@ public class AvailableIUGroup extends StructuredIUGroup { // Now the content. availableIUViewer.setContentProvider(new AvailableIUContentProvider(queryProvider)); - availableIUViewer.setInput(new MetadataRepositories(context.getMetadataRepositories())); + availableIUViewer.setInput(new MetadataRepositories(getProvisioningContext().getMetadataRepositories())); // Now the presentation, columns before label provider. setTreeColumns(availableIUViewer.getTree()); @@ -78,7 +75,7 @@ public class AvailableIUGroup extends StructuredIUGroup { protected void refreshAll() { // The content provider caches the children unless input changes, // so a viewer.refresh() is not enough. - availableIUViewer.setInput(new MetadataRepositories(context.getMetadataRepositories())); + availableIUViewer.setInput(new MetadataRepositories(getProvisioningContext().getMetadataRepositories())); } }; ProvUIActivator.getDefault().addProvisioningListener(listener); diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/IUCopyrightPropertyPage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/IUCopyrightPropertyPage.java new file mode 100644 index 000000000..d65c78223 --- /dev/null +++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/IUCopyrightPropertyPage.java @@ -0,0 +1,43 @@ +/******************************************************************************* + * Copyright (c) 2007 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.p2.ui.dialogs; + +import org.eclipse.equinox.internal.p2.ui.ProvUIMessages; +import org.eclipse.equinox.internal.p2.ui.dialogs.IUPropertyPage; +import org.eclipse.equinox.p2.metadata.IInstallableUnit; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.*; + +/** + * PropertyPage that shows an IU's properties + * + * @since 3.4 + */ +public class IUCopyrightPropertyPage extends IUPropertyPage { + + protected Control createIUPage(Composite parent, IInstallableUnit iu) { + String copyrightText = iu.getProperty(IInstallableUnit.PROP_COPYRIGHT); + if (copyrightText != null && copyrightText.length() > 0) { + Text text = new Text(parent, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER | SWT.WRAP); + GridData gd = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING); + gd.widthHint = computeWidthLimit(text, 80); + text.setLayoutData(gd); + text.setText(copyrightText); + text.setEditable(false); + return text; + } + Label label = new Label(parent, SWT.NULL); + label.setText(ProvUIMessages.IUCopyrightPropertyPage_NoCopyright); + return label; + + } +} diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/IUGeneralInfoPropertyPage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/IUGeneralInfoPropertyPage.java new file mode 100644 index 000000000..444c4acc1 --- /dev/null +++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/IUGeneralInfoPropertyPage.java @@ -0,0 +1,151 @@ +/******************************************************************************* + * Copyright (c) 2007 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.p2.ui.dialogs; + +import java.net.MalformedURLException; +import java.net.URL; +import org.eclipse.equinox.internal.p2.ui.ProvUIMessages; +import org.eclipse.equinox.internal.p2.ui.dialogs.IUPropertyPage; +import org.eclipse.equinox.p2.metadata.IInstallableUnit; +import org.eclipse.equinox.p2.ui.ProvUI; +import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.*; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.browser.IWebBrowser; +import org.eclipse.ui.browser.IWorkbenchBrowserSupport; + +/** + * PropertyPage that shows an IU's properties + * + * @since 3.4 + */ +public class IUGeneralInfoPropertyPage extends IUPropertyPage { + + protected Control createIUPage(Composite parent, IInstallableUnit iu) { + Composite composite = new Composite(parent, SWT.NONE); + GridLayout layout = new GridLayout(); + layout.marginWidth = 0; + layout.marginHeight = 0; + layout.verticalSpacing = 15; + composite.setLayout(layout); + + createGeneralSection(composite, iu); + createDescriptionSection(composite, iu); + createDocumentationSection(composite, iu); + + return composite; + } + + private void createGeneralSection(Composite parent, IInstallableUnit iu) { + Composite composite = new Composite(parent, SWT.NONE); + GridLayout layout = new GridLayout(); + layout.numColumns = 2; + layout.marginWidth = 0; + layout.marginHeight = 0; + composite.setLayout(layout); + composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + addField(composite, ProvUIMessages.IUGeneralInfoPropertyPage_NameLabel, iu.getProperty(IInstallableUnit.PROP_NAME)); + addField(composite, ProvUIMessages.IUGeneralInfoPropertyPage_IdentifierLabel, iu.getId()); + addField(composite, ProvUIMessages.IUGeneralInfoPropertyPage_VersionLabel, iu.getVersion().toString()); + addField(composite, ProvUIMessages.IUGeneralInfoPropertyPage_ProviderLabel, iu.getProperty(IInstallableUnit.PROP_PROVIDER)); + addField(composite, ProvUIMessages.IUGeneralInfoPropertyPage_ContactLabel, iu.getProperty(IInstallableUnit.PROP_CONTACT)); + + } + + private void createDescriptionSection(Composite parent, IInstallableUnit iu) { + String description = iu.getProperty(IInstallableUnit.PROP_DESCRIPTION); + if (description != null && description.length() > 0) { + Group group = new Group(parent, SWT.NONE); + group.setText(ProvUIMessages.IUGeneralInfoPropertyPage_DescriptionLabel); + group.setLayout(new GridLayout()); + group.setLayoutData(new GridData(GridData.FILL_BOTH)); + + Text text = new Text(group, SWT.MULTI | SWT.WRAP); + GridData gd = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING); + gd.widthHint = computeWidthLimit(text, 80); + gd.heightHint = 200; + text.setEditable(false); + text.setText(description); + text.setLayoutData(gd); + } + + } + + private void createDocumentationSection(Composite parent, IInstallableUnit iu) { + String docURL = iu.getProperty(IInstallableUnit.PROP_DOC_URL); + if (docURL != null && docURL.length() > 0) { + final URL url; + try { + url = new URL(docURL); + } catch (MalformedURLException e) { + return; + } + String filename = (url != null) ? url.getFile() : null; + if (filename != null & (filename.endsWith(".htm") || filename.endsWith(".html"))) { //$NON-NLS-1$ //$NON-NLS-2$ + // create some space + new Label(parent, SWT.NONE); + // Now create a link to the documentation + Label label = new Label(parent, SWT.NONE); + label.setText(ProvUIMessages.IUGeneralInfoPropertyPage_DocumentationLink); + Link link = new Link(parent, SWT.LEFT | SWT.WRAP); + link.setText(NLS.bind("<a>{0}</a>", url.toExternalForm())); //$NON-NLS-1$ + GridData gd = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING); + gd.widthHint = computeWidthLimit(link, 80); + link.setLayoutData(gd); + link.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + showURL(url); + } + }); + } + } + } + + private void addField(Composite parent, String property, String value) { + + if (value != null && value.length() > 0) { + Label label = new Label(parent, SWT.NONE); + label.setText(property); + + label = new Label(parent, SWT.NONE); + label.setText(getEscapedString(value)); + } + } + + private String getEscapedString(String value) { + StringBuffer result = new StringBuffer(value.length() + 10); + for (int i = 0; i < value.length(); ++i) { + char c = value.charAt(i); + if ('&' == c) { + result.append("&&"); //$NON-NLS-1$ + } else { + result.append(c); + } + } + return result.toString(); + } + + void showURL(URL url) { + IWorkbenchBrowserSupport support = PlatformUI.getWorkbench().getBrowserSupport(); + try { + IWebBrowser browser = support.getExternalBrowser(); + browser.openURL(url); + } catch (PartInitException e) { + ProvUI.handleException(e, ProvUIMessages.IUGeneralInfoPropertyPage_CouldNotOpenBrowser); + } + } +} diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/IULicensePropertyPage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/IULicensePropertyPage.java new file mode 100644 index 000000000..5da8a6a80 --- /dev/null +++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/IULicensePropertyPage.java @@ -0,0 +1,43 @@ +/******************************************************************************* + * Copyright (c) 2007 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.p2.ui.dialogs; + +import org.eclipse.equinox.internal.p2.ui.ProvUIMessages; +import org.eclipse.equinox.internal.p2.ui.dialogs.IUPropertyPage; +import org.eclipse.equinox.p2.metadata.IInstallableUnit; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.*; + +/** + * PropertyPage that shows an IU's properties + * + * @since 3.4 + */ +public class IULicensePropertyPage extends IUPropertyPage { + + protected Control createIUPage(Composite parent, IInstallableUnit iu) { + String licenseText = iu.getProperty(IInstallableUnit.PROP_LICENSE); + if (licenseText != null && licenseText.length() > 0) { + Text text = new Text(parent, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER | SWT.WRAP); + GridData gd = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING); + gd.widthHint = computeWidthLimit(text, 80); + text.setLayoutData(gd); + text.setText(licenseText); + text.setEditable(false); + return text; + } + Label label = new Label(parent, SWT.NULL); + label.setText(ProvUIMessages.IULicensePropertyPage_NoLicense); + return label; + + } +} diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/InstalledIUGroup.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/InstalledIUGroup.java index 6d6f7f833..85d649707 100644 --- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/InstalledIUGroup.java +++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/InstalledIUGroup.java @@ -13,6 +13,7 @@ package org.eclipse.equinox.p2.ui.dialogs; import org.eclipse.equinox.internal.p2.ui.ProvUIActivator; import org.eclipse.equinox.internal.p2.ui.dialogs.StructuredIUGroup; import org.eclipse.equinox.internal.p2.ui.viewers.IUDetailsLabelProvider; +import org.eclipse.equinox.p2.director.ProvisioningContext; import org.eclipse.equinox.p2.ui.ProvUI; import org.eclipse.equinox.p2.ui.model.ProfileElement; import org.eclipse.equinox.p2.ui.query.IQueryProvider; @@ -44,11 +45,15 @@ public class InstalledIUGroup extends StructuredIUGroup { * @param profileId the id of the profile whose content is being shown. * @param font The font to use for calculating pixel sizes. This font is * not managed by the receiver. + * @param context the ProvisioningContext describing the context for provisioning, + * including information about which repositories should be used. + */ - public InstalledIUGroup(final Composite parent, IQueryProvider queryProvider, Font font, String profileId) { + public InstalledIUGroup(final Composite parent, IQueryProvider queryProvider, Font font, ProvisioningContext context, String profileId) { // This will evolve into a provisioning context - super(parent, queryProvider, font); + super(parent, queryProvider, font, context); this.profileId = profileId; + this.createGroupComposite(parent); } protected StructuredViewer createViewer(Composite parent, IQueryProvider queryProvider) { diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/UpdateAndInstallGroup.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/UpdateAndInstallGroup.java index e640d8b49..2286279ba 100644 --- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/UpdateAndInstallGroup.java +++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/dialogs/UpdateAndInstallGroup.java @@ -172,7 +172,7 @@ public class UpdateAndInstallGroup { composite.setLayout(layout); // Table of installed IU's - installedIUGroup = new InstalledIUGroup(composite, queryProvider, JFaceResources.getDialogFont(), profileId); + installedIUGroup = new InstalledIUGroup(composite, queryProvider, JFaceResources.getDialogFont(), new ProvisioningContext(), profileId); // Vertical buttons Composite buttonBar = (Composite) createInstalledIUsVerticalButtonBar(composite, queryProvider); |