diff options
Diffstat (limited to 'bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ConfigureRepositoryLocationsDialog.java')
-rw-r--r-- | bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ConfigureRepositoryLocationsDialog.java | 232 |
1 files changed, 232 insertions, 0 deletions
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ConfigureRepositoryLocationsDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ConfigureRepositoryLocationsDialog.java new file mode 100644 index 000000000..d6914f0df --- /dev/null +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ConfigureRepositoryLocationsDialog.java @@ -0,0 +1,232 @@ +/******************************************************************************* + * 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.team.internal.ccvs.ui; + +import java.util.Map; +import java.util.Properties; + +import org.eclipse.jface.dialogs.*; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.viewers.*; +import org.eclipse.jface.wizard.IWizard; +import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.*; +import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation; +import org.eclipse.team.internal.ccvs.core.connection.CVSRepositoryLocation; +import org.eclipse.team.internal.ccvs.ui.wizards.AlternativeLocationWizard; +import org.eclipse.ui.PlatformUI; + +public class ConfigureRepositoryLocationsDialog extends TitleAreaDialog { + + private Image dlgTitleImage; + private ConfigureRepositoryLocationsTable fConfigureRepositoryLocationsTable; + + /** + * Creates a new AlternativeRepositoryDialog. + * + * @param parentShell + * the parent shell + * @param alternativesMap + * Map with a repository location (ICVSRepositoryLocation) from + * the Team Project Set as a key and list of alternatives found + * (also ICVSRepositoryLocation) as a value. + * @param message + * a message to display to the user + */ + public ConfigureRepositoryLocationsDialog(Shell parentShell, Map alternativesMap) { + super(parentShell); + setShellStyle(getShellStyle() | SWT.RESIZE); + fConfigureRepositoryLocationsTable = new ConfigureRepositoryLocationsTable( + alternativesMap); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.dialogs.TitleAreaDialog#createContents(org.eclipse.swt.widgets.Composite) + */ + protected Control createContents(Composite parent) { + Control contents = super.createContents(parent); + setTitle(CVSUIMessages.ConfigureRepositoryLocationsWizard_title); + setMessage(CVSUIMessages.ConfigureRepositoryLocationsWizard_message); + dlgTitleImage = CVSUIPlugin.getPlugin().getImageDescriptor( + ICVSUIConstants.IMG_WIZBAN_NEW_LOCATION).createImage(); + setTitleImage(dlgTitleImage); + return contents; + } + + public boolean close() { + if (dlgTitleImage != null) { + dlgTitleImage.dispose(); + } + return super.close(); + } + + /* + * (non-Javadoc) Method declared in Window. + */ + protected void configureShell(Shell shell) { + super.configureShell(shell); + shell.setText(CVSUIMessages.ConfigureRepositoryLocationsWizard_title); + // set F1 help + PlatformUI.getWorkbench().getHelpSystem().setHelp(shell, + IHelpContextIds.ALTERNATIVE_REPOSITORY_DIALOG); + } + + /** + * @see Dialog#createDialogArea + */ + protected Control createDialogArea(Composite parent) { + initializeDialogUnits(parent); + + final Composite composite = new Composite(parent, SWT.NONE); + composite.setLayout(new GridLayout(2, false)); + + GridData childData = new GridData(GridData.FILL_BOTH); + composite.setLayoutData(childData); + + Composite table = fConfigureRepositoryLocationsTable.createControl(composite); + GridData gridData = new GridData(GridData.VERTICAL_ALIGN_FILL); + gridData.horizontalSpan = 2; + gridData.horizontalAlignment = GridData.FILL; + gridData.grabExcessHorizontalSpace = true; + gridData.grabExcessVerticalSpace = true; + table.setLayoutData(gridData); + + final Button showMethodButton = new Button(composite, SWT.CHECK); + showMethodButton + .setText(CVSUIMessages.ConfigureRepositoryLocationsWizard_showConnection); + showMethodButton.addListener(SWT.Selection, new Listener() { + public void handleEvent(Event event) { + fConfigureRepositoryLocationsTable + .setShowConnectionMethod(showMethodButton + .getSelection()); + } + }); + showMethodButton.setEnabled(fConfigureRepositoryLocationsTable + .noDuplicateRepositoryLocationFound()); + showMethodButton.setSelection(!fConfigureRepositoryLocationsTable + .noDuplicateRepositoryLocationFound()); + showMethodButton.setLayoutData(new GridData( + GridData.HORIZONTAL_ALIGN_BEGINNING)); + + final Button createLocationButton = new Button(composite, SWT.PUSH); + createLocationButton + .setText(CVSUIMessages.ConfigureRepositoryLocationsWizard_createLocation); + createLocationButton + .setToolTipText(CVSUIMessages.ConfigureRepositoryLocationsWizard_createLocationTooltip); + createLocationButton.addListener(SWT.Selection, new Listener() { + public void handleEvent(Event event) { + + CVSRepositoryLocation selectedAlternativeRepository = fConfigureRepositoryLocationsTable + .getSelectedAlternativeRepository(); + + Properties properties = new Properties(); + properties + .put( + "connection", selectedAlternativeRepository.getMethod().getName()); //$NON-NLS-1$ + properties.put( + "user", selectedAlternativeRepository.getUsername()); //$NON-NLS-1$ + // TODO: retrieve password (if available) and use it to prime + // the field + // properties.put("password", ""); //$NON-NLS-1$ + properties.put("host", selectedAlternativeRepository.getHost()); //$NON-NLS-1$ + int port = selectedAlternativeRepository.getPort(); + if (port != ICVSRepositoryLocation.USE_DEFAULT_PORT) + properties.put("port", String.valueOf(port)); //$NON-NLS-1$ + properties + .put( + "root", selectedAlternativeRepository.getRootDirectory()); //$NON-NLS-1$ + + AlternativeLocationWizard wizard = new AlternativeLocationWizard( + properties); + wizard.setSwitchPerspectives(false); + WizardDialog dialog = new ConfigureRepositoryLocationsWizardDialog( + getShell(), wizard); + dialog.open(); + + ICVSRepositoryLocation location = wizard.getLocation(); + if (location != null) + fConfigureRepositoryLocationsTable + .addAlternativeRepositoryToSelection(location); + } + }); + createLocationButton.setEnabled(fConfigureRepositoryLocationsTable + .getSelection().getFirstElement() != null); + createLocationButton.setLayoutData(new GridData( + GridData.HORIZONTAL_ALIGN_END)); + + fConfigureRepositoryLocationsTable.getViewer().addSelectionChangedListener( + new ISelectionChangedListener() { + public void selectionChanged(SelectionChangedEvent event) { + IStructuredSelection sel = (IStructuredSelection) event + .getSelection(); + Object firstElement = sel.getFirstElement(); + createLocationButton.setEnabled(firstElement != null); + } + }); + + return composite; + } + + public Map getSelected() { + return fConfigureRepositoryLocationsTable.getSelected(); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.dialogs.Dialog#getDialogBoundsSettings() + */ + protected IDialogSettings getDialogBoundsSettings() { + String sectionName = getClass().getName() + "_dialogBounds"; //$NON-NLS-1$ + IDialogSettings settings = CVSUIPlugin.getPlugin().getDialogSettings(); + IDialogSettings section = settings.getSection(sectionName); + if (section == null) { + section = settings.addNewSection(sectionName); + section.put("DIALOG_HEIGHT", 300); //$NON-NLS-1$ + section.put("DIALOG_WIDTH", 600); //$NON-NLS-1$ + } + return section; + } + + /* + * @see org.eclipse.jface.dialogs.Dialog#getDialogBoundsStrategy() + * @since 3.2 + */ + protected int getDialogBoundsStrategy() { + return DIALOG_PERSISTLOCATION | DIALOG_PERSISTSIZE; + } + + /** + * This class is made only to change Wizard's default "Finish" button label + * to "Create". + */ + private class ConfigureRepositoryLocationsWizardDialog extends WizardDialog { + + public ConfigureRepositoryLocationsWizardDialog(Shell parentShell, + IWizard newWizard) { + super(parentShell, newWizard); + } + + protected Button createButton(Composite parent, int id, String label, + boolean defaultButton) { + if (id == IDialogConstants.FINISH_ID) + label = CVSUIMessages.ConfigureRepositoryLocationsWizardDialog_finish; + return super.createButton(parent, id, label, defaultButton); + } + + } +} |