001 /* 002 * Copyright 2002-2004 the original author or authors. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not 005 * use this file except in compliance with the License. You may obtain a copy of 006 * the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 013 * License for the specific language governing permissions and limitations under 014 * the License. 015 */ 016 package org.springframework.richclient.dialog; 017 018 import javax.swing.JComponent; 019 020 import org.springframework.richclient.form.Form; 021 022 /** 023 * An implementation of DialogPage that delegates to a FormPage for its control, 024 * pageComplete status and messages. 025 * 026 * @author Oliver Hutchison 027 */ 028 public class FormBackedDialogPage extends AbstractDialogPage { 029 private Form backingFormPage; 030 031 /** 032 * Creates a new FormBackedDialogPage 033 * 034 * @param backingFormPage 035 * a named form page that will provide the control for this 036 * dialog page 037 */ 038 public FormBackedDialogPage(Form backingFormPage) { 039 this(backingFormPage, true); 040 } 041 042 public FormBackedDialogPage(Form backingFormPage, boolean autoConfigure) { 043 super(backingFormPage.getId(), autoConfigure); 044 this.backingFormPage = backingFormPage; 045 } 046 047 /** 048 * Creates a new FormPageBackedDialogPage. 049 * 050 * @param parentPageId 051 * the id of a containing parent page. This will be used to 052 * configure page titles/description 053 * @param backingFormPage 054 * the FormPage which will provide the control for this page. 055 */ 056 public FormBackedDialogPage(String parentPageId, Form backingFormPage) { 057 super(parentPageId + (backingFormPage.getId() != null ? "." + backingFormPage.getId() : "")); 058 this.backingFormPage = backingFormPage; 059 } 060 061 /** 062 * Get the Form backing this dialog page. 063 * @return form 064 */ 065 public Form getBackingFormPage() { 066 return backingFormPage; 067 } 068 069 public void onAboutToShow() { 070 setEnabled(!backingFormPage.hasErrors()); 071 } 072 073 protected JComponent createControl() { 074 JComponent formControl = backingFormPage.getControl(); 075 initPageValidationReporter(); 076 return formControl; 077 } 078 079 protected void initPageValidationReporter() { 080 backingFormPage.newSingleLineResultsReporter(this); 081 backingFormPage.addGuarded(this); 082 } 083 084 public void setEnabled(boolean enabled) { 085 setPageComplete(enabled); 086 } 087 }