| package org.eclipse.team.internal.ccvs.ui.wizards; |
| |
| /* |
| * (c) Copyright IBM Corp. 2000, 2001. |
| * All Rights Reserved. |
| */ |
| |
| import java.util.Collection; |
| |
| import org.eclipse.core.resources.IFile; |
| import org.eclipse.jface.dialogs.IDialogConstants; |
| import org.eclipse.jface.resource.ImageDescriptor; |
| import org.eclipse.jface.viewers.IStructuredContentProvider; |
| import org.eclipse.jface.viewers.LabelProvider; |
| import org.eclipse.jface.viewers.ListViewer; |
| import org.eclipse.jface.viewers.Viewer; |
| import org.eclipse.jface.wizard.WizardPage; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.layout.GridData; |
| import org.eclipse.swt.layout.GridLayout; |
| import org.eclipse.swt.widgets.Button; |
| import org.eclipse.swt.widgets.Combo; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.swt.widgets.Label; |
| import org.eclipse.swt.widgets.Text; |
| import org.eclipse.ui.model.WorkbenchLabelProvider; |
| import org.eclipse.ui.model.WorkbenchViewerSorter; |
| |
| /** |
| * Common superclass for CVS wizard pages. Provides convenience methods |
| * for widget creation. |
| */ |
| public abstract class CVSWizardPage extends WizardPage { |
| protected static final int LABEL_WIDTH_HINT = 400; |
| protected static final int LABEL_INDENT_WIDTH = 32; |
| protected static final int LIST_HEIGHT_HINT = 100; |
| protected static final int SPACER_HEIGHT = 8; |
| |
| /** |
| * CVSWizardPage constructor comment. |
| * @param pageName the name of the page |
| */ |
| public CVSWizardPage(String pageName) { |
| super(pageName); |
| } |
| /** |
| * CVSWizardPage constructor comment. |
| * @param pageName the name of the page |
| * @param title the title of the page |
| * @param titleImage the image for the page |
| */ |
| public CVSWizardPage(String pageName, String title, ImageDescriptor titleImage) { |
| super(pageName, title, titleImage); |
| } |
| /** |
| * Creates a new checkbox instance and sets the default layout data. |
| * |
| * @param group the composite in which to create the checkbox |
| * @param label the string to set into the checkbox |
| * @return the new checkbox |
| */ |
| protected Button createCheckBox(Composite group, String label) { |
| Button button = new Button(group, SWT.CHECK | SWT.LEFT); |
| button.setText(label); |
| GridData data = new GridData(); |
| data.horizontalSpan = 2; |
| button.setLayoutData(data); |
| return button; |
| } |
| /** |
| * Utility method that creates a combo box |
| * |
| * @param parent the parent for the new label |
| * @return the new widget |
| */ |
| protected Combo createCombo(Composite parent) { |
| Combo combo = new Combo(parent, SWT.READ_ONLY); |
| GridData data = new GridData(GridData.FILL_HORIZONTAL); |
| data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH; |
| combo.setLayoutData(data); |
| return combo; |
| } |
| /** |
| * Creates composite control and sets the default layout data. |
| * |
| * @param parent the parent of the new composite |
| * @param numColumns the number of columns for the new composite |
| * @return the newly-created coposite |
| */ |
| protected Composite createComposite(Composite parent, int numColumns) { |
| Composite composite = new Composite(parent, SWT.NULL); |
| |
| // GridLayout |
| GridLayout layout = new GridLayout(); |
| layout.numColumns = numColumns; |
| composite.setLayout(layout); |
| |
| // GridData |
| GridData data = new GridData(); |
| data.verticalAlignment = GridData.FILL; |
| data.horizontalAlignment = GridData.FILL; |
| composite.setLayoutData(data); |
| return composite; |
| } |
| /** |
| * Utility method that creates a label instance |
| * and sets the default layout data. |
| * |
| * @param parent the parent for the new label |
| * @param text the text for the new label |
| * @return the new label |
| */ |
| public static Label createLabel(Composite parent, String text) { |
| return createIndentedLabel(parent, text, 0); |
| } |
| /** |
| * Utility method that creates a label instance indented by the specified |
| * number of pixels and sets the default layout data. |
| * |
| * @param parent the parent for the new label |
| * @param text the text for the new label |
| * @param indent the indent in pixels, or 0 for none |
| * @return the new label |
| */ |
| public static Label createIndentedLabel(Composite parent, String text, int indent) { |
| Label label = new Label(parent, SWT.LEFT); |
| label.setText(text); |
| GridData data = new GridData(); |
| data.horizontalSpan = 1; |
| data.horizontalAlignment = GridData.FILL; |
| data.horizontalIndent = indent; |
| label.setLayoutData(data); |
| return label; |
| } |
| /** |
| * Utility method that creates a label instance with word wrap and sets |
| * the default layout data. |
| * |
| * @param parent the parent for the new label |
| * @param text the text for the new label |
| * @param indent the indent in pixels, or 0 for none |
| * @param widthHint the nominal width of the label |
| * @return the new label |
| */ |
| protected Label createWrappingLabel(Composite parent, String text, int indent, int widthHint) { |
| Label label = new Label(parent, SWT.LEFT | SWT.WRAP); |
| label.setText(text); |
| GridData data = new GridData(); |
| data.horizontalSpan = 1; |
| data.horizontalAlignment = GridData.FILL; |
| data.horizontalIndent = indent; |
| data.grabExcessHorizontalSpace = true; |
| data.widthHint = widthHint; |
| label.setLayoutData(data); |
| return label; |
| } |
| /** |
| * Create a text field specific for this application |
| * |
| * @param parent the parent of the new text field |
| * @return the new text field |
| */ |
| static public Text createTextField(Composite parent) { |
| Text text = new Text(parent, SWT.SINGLE | SWT.BORDER); |
| GridData data = new GridData(GridData.FILL_HORIZONTAL); |
| data.verticalAlignment = GridData.CENTER; |
| data.grabExcessVerticalSpace = false; |
| data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH; |
| text.setLayoutData(data); |
| return text; |
| } |
| /** |
| * Utility method to create a radio button |
| * |
| * @param parent the parent of the radio button |
| * @param label the label of the radio button |
| * @param span the number of columns to span |
| * @return the created radio button |
| */ |
| protected Button createRadioButton(Composite parent, String label, int span) { |
| Button button = new Button(parent, SWT.RADIO); |
| button.setText(label); |
| GridData data = new GridData(); |
| data.horizontalSpan = span; |
| button.setLayoutData(data); |
| return button; |
| } |
| /** |
| * Utility method to create a full width separator preceeded by a blank space |
| * |
| * @param parent the parent of the separator |
| * @param verticalSpace the vertical whitespace to insert before the label |
| */ |
| protected void createSeparator(Composite parent, int verticalSpace) { |
| // space |
| Label label = new Label(parent, SWT.NONE); |
| GridData data = new GridData(); |
| data.heightHint = verticalSpace; |
| label.setLayoutData(data); |
| // separator |
| label = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL); |
| data = new GridData(GridData.FILL_HORIZONTAL); |
| label.setLayoutData(data); |
| } |
| |
| /** |
| * Creates a ListViewer whose input is an array of IFiles. |
| * |
| * @param parent the parent of the viewer |
| * @param title the text for the title label |
| * @param heightHint the nominal height of the list |
| * @return the created list viewer |
| */ |
| public ListViewer createFileListViewer(Composite parent, String title, int heightHint) { |
| createLabel(parent, title); |
| ListViewer listViewer = new ListViewer(parent, SWT.READ_ONLY | SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER); |
| listViewer.setContentProvider(new IStructuredContentProvider() { |
| public Object[] getElements(Object inputElement) { |
| return (Object[]) inputElement; |
| } |
| public void dispose() { |
| } |
| public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { |
| } |
| }); |
| listViewer.setLabelProvider(new LabelProvider() { |
| public String getText(Object element) { |
| return ((IFile) element).getFullPath().toString(); |
| } |
| }); |
| listViewer.setSorter(new WorkbenchViewerSorter()); |
| |
| GridData data = new GridData(GridData.FILL_BOTH); |
| data.heightHint = heightHint; |
| listViewer.getList().setLayoutData(data); |
| return listViewer; |
| } |
| } |