/******************************************************************************* * Copyright (c) 2009 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 * Zend Technologies *******************************************************************************/ package org.eclipse.php.internal.ui.wizards; import java.io.File; import java.util.List; import org.eclipse.core.runtime.IStatus; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.php.internal.ui.util.StatusInfo; import org.eclipse.php.internal.ui.util.StatusUtil; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.*; public abstract class BasicPHPWizardPage extends WizardPage { private IStatus fCurrStatus; private boolean fPageVisible; protected BasicPHPWizardPage(String pageName) { super(pageName); } protected Button createButton(Composite composite, int style, String message, GridData gd) { Button button = new Button(composite, style); button.setText(message); button.setLayoutData(gd); return button; } protected GridLayout createGridLayout(int columns) { return new GridLayout(columns, false); } protected GridData createGridData(int flag, int hspan, int vspan, int indent) { GridData gd = new GridData(flag); gd.horizontalIndent = indent; gd.horizontalSpan = hspan; gd.verticalSpan = vspan; return gd; } protected GridData createGridData(int flag, int hspan, int indent) { GridData gd = new GridData(flag); gd.horizontalIndent = indent; gd.horizontalSpan = hspan; return gd; } protected GridData createGridData(int hspan) { GridData gd = new GridData(); gd.horizontalSpan = hspan; return gd; } protected void createSeparator(Composite composite, int horizontalSpan) { Label line = new Label(composite, SWT.SEPARATOR | SWT.HORIZONTAL); GridData gridData = new GridData(GridData.FILL_HORIZONTAL); if (horizontalSpan > 0) gridData.horizontalSpan = horizontalSpan; line.setLayoutData(gridData); } protected Label createLabel(Composite composite, int style, String message, GridData gd) { Label label = new Label(composite, style); label.setText(message); label.setLayoutData(gd); return label; } protected Text createText(Composite composite, int style, String message, GridData gd) { Text text = new Text(composite, style); if (message != null) text.setText(message); text.setLayoutData(gd); return text; } protected Combo createCombo(Composite composite, int style, String message, GridData gd) { Combo combo = new Combo(composite, style); if (message != null) combo.setText(message); combo.setLayoutData(gd); return combo; } protected void handleFileBrowseButtonPressed(Text text, String[] extensions, String title) { FileDialog dialog = new FileDialog(text.getShell()); dialog.setText(title); dialog.setFilterExtensions(extensions); String dirName = text.getText(); if (!dirName.equals("")) { //$NON-NLS-1$ File path = new File(dirName); if (path.exists()) dialog.setFilterPath(dirName); } String selectedDirectory = dialog.open(); if (selectedDirectory != null) text.setText(selectedDirectory); } protected void handleFileBrowseButtonPressed(Combo text, String[] extensions, String title) { FileDialog dialog = new FileDialog(text.getShell()); dialog.setText(title); dialog.setFilterExtensions(extensions); String dirName = text.getText(); if (!dirName.equals("")) { //$NON-NLS-1$ File path = new File(dirName); if (path.exists()) dialog.setFilterPath(dirName); } String selectedDirectory = dialog.open(); if (selectedDirectory != null) { text.add(selectedDirectory); text.select(text.indexOf(selectedDirectory)); text.notifyListeners(SWT.Modify, new Event()); } } protected void handleFileBrowseButtonPressed(Combo text, String[] extensions, String title, String fileName) { FileDialog dialog = new FileDialog(text.getShell(), SWT.SAVE); dialog.setText(title); dialog.setFilterExtensions(extensions); dialog.setFileName(fileName); String dirName = text.getText(); if (!dirName.equals("")) { //$NON-NLS-1$ File path = new File(dirName); if (path.exists()) dialog.setFilterPath(dirName); } String selectedDirectory = dialog.open(); if (selectedDirectory != null) { text.add(selectedDirectory); text.select(text.indexOf(selectedDirectory)); text.notifyListeners(SWT.Modify, new Event()); } } protected String handleFolderBrowseButtonPressed(String dir, String title, String message) { DirectoryDialog dialog = new DirectoryDialog(getShell()); dialog.setFilterPath(dir); dialog.setText(title); dialog.setMessage(message); String res = dialog.open(); if (res != null) { File file = new File(res); if (file.isDirectory()) return res; } return dir; } /** * Updates the status line and the OK button according to the given status * * @param status * status to apply */ protected void updateStatus(IStatus status) { fCurrStatus = status; setPageComplete(!status.matches(IStatus.ERROR)); if (fPageVisible) { StatusUtil.applyToStatusLine(this, status); } } /* * @see WizardPage#becomesVisible */ @Override public void setVisible(boolean visible) { super.setVisible(visible); fPageVisible = visible; // policy: wizards are not allowed to come up with an error message if (visible && fCurrStatus.matches(IStatus.ERROR)) { StatusInfo status = new StatusInfo(); status.setError(""); //$NON-NLS-1$ fCurrStatus = status; } updateStatus(fCurrStatus); } public List<String> setComboItems(Combo combo, List<String> arrItems) { arrItems.clear(); arrItems.add(combo.getText()); // must be first String[] items = combo.getItems(); for (int i = 0; i < items.length; i++) { String curr = items[i]; if (!arrItems.contains(curr)) { arrItems.add(curr); } } return arrItems; } }