FileDocCategorySizeDatePackage
SampleNewWizardPage.javaAPI DocExample4405Tue Mar 23 11:42:40 GMT 2004org.cookbook.ch13.EditorPlugIn.wizards

SampleNewWizardPage

public class SampleNewWizardPage extends org.eclipse.jface.wizard.WizardPage
The "New" wizard page allows setting the container for the new file as well as the file name. The page will only accept file name without the extension OR with the extension that matches the expected one (new).

Fields Summary
private Text
containerText
private Text
fileText
private ISelection
selection
Constructors Summary
public SampleNewWizardPage(ISelection selection)
Constructor for SampleNewWizardPage.

param
pageName

		super("wizardPage");
		setTitle("Multi-page Editor File");
		setDescription("This wizard creates a new file with *.new extension that can be opened by a multi-page editor.");
		this.selection = selection;
	
Methods Summary
public voidcreateControl(Composite parent)

see
IDialogPage#createControl(Composite)

		Composite container = new Composite(parent, SWT.NULL);
		GridLayout layout = new GridLayout();
		container.setLayout(layout);
		layout.numColumns = 3;
		layout.verticalSpacing = 9;
		Label label = new Label(container, SWT.NULL);
		label.setText("&Container:");

		containerText = new Text(container, SWT.BORDER | SWT.SINGLE);
		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
		containerText.setLayoutData(gd);
		containerText.addModifyListener(new ModifyListener() {
			public void modifyText(ModifyEvent e) {
				dialogChanged();
			}
		});

		Button button = new Button(container, SWT.PUSH);
		button.setText("Browse...");
		button.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent e) {
				handleBrowse();
			}
		});
		label = new Label(container, SWT.NULL);
		label.setText("&File name:");

		fileText = new Text(container, SWT.BORDER | SWT.SINGLE);
		gd = new GridData(GridData.FILL_HORIZONTAL);
		fileText.setLayoutData(gd);
		fileText.addModifyListener(new ModifyListener() {
			public void modifyText(ModifyEvent e) {
				dialogChanged();
			}
		});
		initialize();
		dialogChanged();
		setControl(container);
	
private voiddialogChanged()
Ensures that both text fields are set.

		String container = getContainerName();
		String fileName = getFileName();

		if (container.length() == 0) {
			updateStatus("File container must be specified");
			return;
		}
		if (fileName.length() == 0) {
			updateStatus("File name must be specified");
			return;
		}
		int dotLoc = fileName.indexOf('.");
		if (dotLoc != -1) {
			String ext = fileName.substring(dotLoc + 1);
			if (ext.equalsIgnoreCase("new") == false) {
				updateStatus("File extension must be \"new\"");
				return;
			}
		}
		updateStatus(null);
	
public java.lang.StringgetContainerName()

		return containerText.getText();
	
public java.lang.StringgetFileName()

		return fileText.getText();
	
private voidhandleBrowse()
Uses the standard container selection dialog to choose the new value for the container field.

		ContainerSelectionDialog dialog =
			new ContainerSelectionDialog(
				getShell(),
				ResourcesPlugin.getWorkspace().getRoot(),
				false,
				"Select new file container");
		if (dialog.open() == ContainerSelectionDialog.OK) {
			Object[] result = dialog.getResult();
			if (result.length == 1) {
				containerText.setText(((Path)result[0]).toOSString());
			}
		}
	
private voidinitialize()
Tests if the current workbench selection is a suitable container to use.

		if (selection!=null && selection.isEmpty()==false && selection instanceof IStructuredSelection) {
			IStructuredSelection ssel = (IStructuredSelection)selection;
			if (ssel.size()>1) return;
			Object obj = ssel.getFirstElement();
			if (obj instanceof IResource) {
				IContainer container;
				if (obj instanceof IContainer)
					container = (IContainer)obj;
				else
					container = ((IResource)obj).getParent();
				containerText.setText(container.getFullPath().toString());
			}
		}
		fileText.setText("document.new");
	
private voidupdateStatus(java.lang.String message)

		setErrorMessage(message);
		setPageComplete(message == null);