--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2000, 2003 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package net.sourceforge.phpdt.ui.wizards;
+
+import net.sourceforge.phpdt.externaltools.internal.ui.StatusInfo;
+import net.sourceforge.phpdt.internal.ui.dialogs.StatusUtil;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.wizard.WizardPage;
+
+/**
+ * Base class for wizard page responsible to create PHP elements. The class
+ * provides API to update the wizard's statis line and OK button according to
+ * the value of a <code>IStatus</code> object.
+ *
+ * @since 2.0
+ */
+public abstract class NewElementWizardPage extends WizardPage {
+
+ private IStatus fCurrStatus;
+
+ private boolean fPageVisible;
+
+ /**
+ * Creates a <code>NewElementWizardPage</code>.
+ *
+ * @param name
+ * the wizard page's name
+ */
+ public NewElementWizardPage(String name) {
+ super(name);
+ fPageVisible = false;
+ fCurrStatus = new StatusInfo();
+ }
+
+ // ---- WizardPage ----------------
+
+ /*
+ * @see WizardPage#becomesVisible
+ */
+ 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);
+ }
+
+ /**
+ * 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);
+ }
+ }
+
+ /**
+ * Updates the status line and the ok button according to the status
+ * evaluate from an array of status. The most severe error is taken. In case
+ * that two status with the same severity exists, the status with lower
+ * index is taken.
+ *
+ * @param status
+ * the array of status
+ */
+ protected void updateStatus(IStatus[] status) {
+ updateStatus(StatusUtil.getMostSevere(status));
+ }
+
+}