Index: src/org/eclipse/update/internal/ui/wizards/ModeSelectionPage.java =================================================================== RCS file: /home/eclipse/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/ModeSelectionPage.java,v retrieving revision 1.18 diff -u -r1.18 ModeSelectionPage.java --- src/org/eclipse/update/internal/ui/wizards/ModeSelectionPage.java 11 Apr 2005 22:45:30 -0000 1.18 +++ src/org/eclipse/update/internal/ui/wizards/ModeSelectionPage.java 18 May 2005 01:18:01 -0000 @@ -10,17 +10,23 @@ *******************************************************************************/ package org.eclipse.update.internal.ui.wizards; -import org.eclipse.jface.dialogs.*; +import org.eclipse.core.runtime.Platform; import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.swt.SWT; -import org.eclipse.swt.events.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.ui.*; +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.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.PlatformUI; import org.eclipse.update.internal.operations.UpdateUtils; import org.eclipse.update.internal.ui.UpdateUI; import org.eclipse.update.internal.ui.UpdateUIMessages; -import org.eclipse.update.search.*; +import org.eclipse.update.search.UpdateSearchRequest; /** */ @@ -65,10 +71,17 @@ GridLayout layout = new GridLayout(); composite.setLayout(layout); updatesButton = new Button(composite, SWT.RADIO); - updatesButton.setText(UpdateUIMessages.ModeSelectionPage_updates); + updatesButton.setText(UpdateUIMessages.ModeSelectionPage_updates); updateMode = !getSettings().getBoolean(P_NEW_FEATURES_MODE); + // don't allow updates if the installation location is readonly + if (Platform.getInstallLocation().isReadOnly()) { + updatesButton.setEnabled(false); + updateMode = false; + } updatesButton.setSelection(updateMode); + + final Label updatesText = new Label(composite, SWT.WRAP); updatesText.setText(UpdateUIMessages.ModeSelectionPage_updatesText); GridData gd = new GridData(GridData.FILL_HORIZONTAL); Index: src/org/eclipse/update/internal/ui/wizards/TargetPage.java =================================================================== RCS file: /home/eclipse/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/TargetPage.java,v retrieving revision 1.71 diff -u -r1.71 TargetPage.java --- src/org/eclipse/update/internal/ui/wizards/TargetPage.java 28 Apr 2005 18:22:31 -0000 1.71 +++ src/org/eclipse/update/internal/ui/wizards/TargetPage.java 18 May 2005 01:18:01 -0000 @@ -1,420 +1,463 @@ -/******************************************************************************* - * Copyright (c) 2000, 2005 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.update.internal.ui.wizards; - -import java.io.*; -import java.util.*; - -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.resource.*; -import org.eclipse.jface.viewers.*; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.ui.*; -import org.eclipse.update.configuration.*; -import org.eclipse.update.core.*; -import org.eclipse.update.internal.operations.*; -import org.eclipse.update.internal.ui.*; -import org.eclipse.update.internal.ui.parts.*; -import org.eclipse.update.operations.*; - -public class TargetPage extends BannerPage implements IDynamicPage { - private TableViewer jobViewer; - private IInstallConfiguration config; - private ConfigListener configListener; - private Label requiredSpaceLabel; - private Label availableSpaceLabel; - private IInstallFeatureOperation[] jobs; - //private IInstallFeatureOperation currentJob; - private Label installLocation; - private Button changeLocation; - static HashSet added; - - class JobsContentProvider - extends DefaultContentProvider - implements IStructuredContentProvider { - public Object[] getElements(Object parent) { - return jobs; - } - } - - class JobsLabelProvider - extends LabelProvider - implements ITableLabelProvider { - - public Image getColumnImage(Object obj, int col) { - UpdateLabelProvider provider = UpdateUI.getDefault().getLabelProvider(); - - IInstallFeatureOperation job = (IInstallFeatureOperation) obj; - ImageDescriptor base = - job.getFeature().isPatch() - ? UpdateUIImages.DESC_EFIX_OBJ - : UpdateUIImages.DESC_FEATURE_OBJ; - int flags = 0; - if (job.getTargetSite() == null) - flags = UpdateLabelProvider.F_ERROR; - return provider.get(base, flags); - } - - public String getColumnText(Object obj, int col) { - if (col == 0) { - IFeature feature = ((IInstallFeatureOperation) obj).getFeature(); - return feature.getLabel() - + " " //$NON-NLS-1$ - + feature.getVersionedIdentifier().getVersion().toString(); - } - return null; - } - } - - class ConfigListener implements IInstallConfigurationChangedListener { - public void installSiteAdded(IConfiguredSite csite) { - - // set the site as target for all jobs without a target - for (int i=0; jobs != null && i 0) - jobViewer.setSelection(new StructuredSelection(jobs[0])); - } - - super.setVisible(visible); - } - - private void verifyNotEmpty(boolean empty) { - String errorMessage = null; - if (empty) - errorMessage = UpdateUIMessages.InstallWizard_TargetPage_location_empty; - setErrorMessage(errorMessage); - setPageComplete(!empty); - } - - - private void updateStatus(Object element) { - if (element == null) { - requiredSpaceLabel.setText(""); //$NON-NLS-1$ - availableSpaceLabel.setText(""); //$NON-NLS-1$ - return; - } - IConfiguredSite site = (IConfiguredSite) element; - File file = new File(site.getSite().getURL().getFile()); - long available = LocalSystemInfo.getFreeSpace(file); - long required = computeRequiredSizeFor(site); - if (required <= 0) - requiredSpaceLabel.setText(UpdateUIMessages.InstallWizard_TargetPage_unknownSize); - else - requiredSpaceLabel.setText( - NLS.bind(UpdateUIMessages.InstallWizard_TargetPage_size, "" + required)); //$NON-NLS-1$ - - if (available == LocalSystemInfo.SIZE_UNKNOWN) - availableSpaceLabel.setText(UpdateUIMessages.InstallWizard_TargetPage_unknownSize); - else - availableSpaceLabel.setText( - NLS.bind(UpdateUIMessages.InstallWizard_TargetPage_size, "" + available)); //$NON-NLS-1$ - } - - private long computeRequiredSizeFor(IConfiguredSite site) { - long totalSize = 0; - for (int i = 0; i < jobs.length; i++) { - if (site.equals(jobs[i].getTargetSite())) { - long jobSize = site.getSite().getInstallSizeFor(jobs[i].getFeature()); - if (jobSize == -1) - return -1; - totalSize += jobSize; - } - } - return totalSize; - } - - private void pageChanged() { - boolean empty = false; - for (int i=0; jobs!=null && i 0) + jobViewer.setSelection(new StructuredSelection(jobs[0])); + } + + super.setVisible(visible); + } + + private void verifyNotEmpty(boolean empty) { + String errorMessage = null; + if (empty) + errorMessage = UpdateUIMessages.InstallWizard_TargetPage_location_empty; + setErrorMessage(errorMessage); + setPageComplete(!empty); + } + + + private void updateStatus(Object element) { + if (element == null) { + requiredSpaceLabel.setText(""); //$NON-NLS-1$ + availableSpaceLabel.setText(""); //$NON-NLS-1$ + return; + } + IConfiguredSite site = (IConfiguredSite) element; + File file = new File(site.getSite().getURL().getFile()); + long available = LocalSystemInfo.getFreeSpace(file); + long required = computeRequiredSizeFor(site); + if (required <= 0) + requiredSpaceLabel.setText(UpdateUIMessages.InstallWizard_TargetPage_unknownSize); + else + requiredSpaceLabel.setText( + NLS.bind(UpdateUIMessages.InstallWizard_TargetPage_size, "" + required)); //$NON-NLS-1$ + + if (available == LocalSystemInfo.SIZE_UNKNOWN) + availableSpaceLabel.setText(UpdateUIMessages.InstallWizard_TargetPage_unknownSize); + else + availableSpaceLabel.setText( + NLS.bind(UpdateUIMessages.InstallWizard_TargetPage_size, "" + available)); //$NON-NLS-1$ + } + + private long computeRequiredSizeFor(IConfiguredSite site) { + long totalSize = 0; + for (int i = 0; i < jobs.length; i++) { + if (site.equals(jobs[i].getTargetSite())) { + long jobSize = site.getSite().getInstallSizeFor(jobs[i].getFeature()); + if (jobSize == -1) + return -1; + totalSize += jobSize; + } + } + return totalSize; + } + + private void pageChanged() { + boolean empty = false; + for (int i=0; jobs!=null && i