blob: 96983ae569bc8d846d1a95ccc89dfd180be1d359 [file] [log] [blame]
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;
}
}