| /******************************************************************************* |
| * Copyright (c) 2001, 2008 Oracle 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: |
| * Oracle Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.jst.jsf.common.ui.internal.form; |
| |
| import org.eclipse.jface.viewers.ISelection; |
| import org.eclipse.jface.viewers.IStructuredSelection; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.swt.widgets.Control; |
| import org.eclipse.ui.forms.widgets.FormToolkit; |
| |
| /** |
| * The parent of all detail forms. |
| * |
| * @author cbateman |
| * |
| */ |
| public abstract class AbstractDetailsForm |
| { |
| private FormToolkit _toolkit; |
| |
| /** |
| * |
| */ |
| protected AbstractDetailsForm() |
| { |
| super(); |
| } |
| |
| /** |
| * Called to refresh model if stale |
| */ |
| public void refresh() |
| { |
| // do nothing by default |
| } |
| |
| /** |
| * Called before createContents. |
| * |
| * @param toolkit |
| */ |
| public final void initialize(final FormToolkit toolkit) |
| { |
| _toolkit = toolkit; |
| doInitialize(); |
| } |
| |
| /** |
| * Override to customize initialization. getToolkit() is safe to call |
| * from this method. You should not make other state assumptions. |
| */ |
| protected void doInitialize() |
| { |
| // do nothing by default; |
| } |
| |
| /** |
| * Callled by MasterDetailBlock during it's dispose |
| */ |
| public abstract void dispose(); |
| |
| /** |
| * @param onSave |
| */ |
| public abstract void commit(boolean onSave); |
| |
| /** |
| * Called on this details form before it is shown, when it becomes active |
| * due to a matching selection change in the master form. Implementer |
| * should use newSelection as the new instance of their model and |
| * reinitialize UI as appropriate. |
| * @param newSelection |
| */ |
| protected abstract void doUpdateSelection(final Object newSelection); |
| |
| /** |
| * @return the contents control. Must not be called before createContents. |
| */ |
| public abstract Control getControl(); |
| |
| /** |
| * Fired to indicate that this detail form is now selected based on the |
| * master form selected. |
| * |
| * @param selection |
| */ |
| public void selectionChanged(final ISelection selection) |
| { |
| // by default, get the first element of the selection if there is |
| // one and call doUpdateSelection on it. Sub-classes may change |
| // this behaviour |
| if (selection instanceof IStructuredSelection) |
| { |
| final Object selectionObj = ((IStructuredSelection) selection) |
| .getFirstElement(); |
| doUpdateSelection(selectionObj); |
| } |
| } |
| |
| /** |
| * Create the contents of the detail form using 'parent'. Should not be |
| * called before initialize. |
| * |
| * @param parent |
| */ |
| public abstract void createContents(Composite parent); |
| |
| /** |
| * @return the form toolkit in use. Should not be called before |
| * initialize. |
| */ |
| protected final FormToolkit getToolkit() |
| { |
| return _toolkit; |
| } |
| |
| /** |
| * @return true if the form is dirty |
| */ |
| public boolean isDirty() |
| { |
| // never dirty by default |
| return false; |
| } |
| |
| /** |
| * @return true if form is stale |
| */ |
| public boolean isStale() |
| { |
| // always stale by default |
| return true; |
| } |
| |
| /** |
| * Called to set focus on the detail form's control |
| */ |
| public abstract void setFocus(); |
| } |