/* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.motorola.studio.android.wizards; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.ui.PlatformUI; import com.motorola.studio.android.common.utilities.ui.WidgetsFactory; import com.motorola.studio.android.wizards.elements.IBaseBlock; /** * Base class for the wizard pages. */ public abstract class BaseWizardPage extends WizardPage implements Listener { /** * Default wizard page Composite */ private Composite composite; /** * Default wizard page GridLayout */ private GridLayout layout; /** * The block used by this wizard page. */ protected IBaseBlock block; private String helpID = null; /** * Constructs a new instance using a given block. * * @param block Block used to render the screen. * @param title Window title * @param description Window description */ public BaseWizardPage(IBaseBlock block, String title, String description) { this(block, title, description, null); this.block = block; } /** * Constructs a new instance using a given block. * * @param block Block used to render the screen. * @param title Window title * @param description Window description * @param contextHelpID The context help id used to this page */ public BaseWizardPage(IBaseBlock block, String title, String description, String contextHelpID) { super(title); setTitle(title); setDescription(description); this.block = block; helpID = contextHelpID; } /* * (non-Javadoc) * @see * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets * .Composite) */ public void createControl(Composite parent) { getComposite(parent).setLayout(getLayout()); if (this.block != null) { this.block.setShell(getShell()); Composite blockComposite = this.block.createContent(getComposite(parent)); if (helpID != null) { PlatformUI.getWorkbench().getHelpSystem().setHelp(blockComposite, helpID); PlatformUI.getWorkbench().getHelpSystem().setHelp(getComposite(parent), helpID); } } setControl(getComposite(parent)); setErrorMessage(null); getComposite(parent).addListener(SWT.Modify, this); getComposite(parent).addListener(SWT.Selection, this); } /** * Returns the default composite of this wizard page. * * @param parent The parent composite. * @return The composite of this wizard page. */ protected Composite getComposite(Composite parent) { if (this.composite == null) { this.composite = WidgetsFactory.createComposite(parent); } return this.composite; } /** * Returns the default grid layout of this wizard page. * * @return The default grid layout of this wizard page. */ protected GridLayout getLayout() { if (this.layout == null) { this.layout = WidgetsFactory.createGridLayout(); } return this.layout; } /* * (non-Javadoc) * @see * org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets. * Event) */ public void handleEvent(Event event) { String message = this.block.getErrorMessage(); setErrorMessage(message); setPageComplete(message == null); } /* * (non-Javadoc) * @see org.eclipse.jface.wizard.WizardPage#isPageComplete() */ @Override public boolean isPageComplete() { if (this.block == null) { return true; } return this.block.isPageComplete(); } /* * (non-Javadoc) * @see org.eclipse.jface.wizard.WizardPage#canFlipToNextPage() */ @Override public boolean canFlipToNextPage() { if (this.block == null) { return true; } return this.block.canFlipToNextPage() && (getNextPage() != null); } }