/*******************************************************************************
* Copyright (c) 1998, 2015 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Oracle - initial API and implementation from Oracle TopLink
******************************************************************************/
package org.eclipse.persistence.tools.workbench.framework.ui.view;
import java.awt.Component;
import org.eclipse.persistence.tools.workbench.uitools.app.PropertyValueModel;
/**
* This interface describes how a <code>Component</code> should be built based upon the
* given <code>ApplicationNode</code>. Typically, implementing classes of this interface
* are used in conjunction with <code>TabbedPropertiesPage</code> to create
* the necessary <code>AbstractPropertiesPage</code> or other <code>Component</code>
* type instance. In this particular situation, creation of the <code>Component</code>
* necessary to populate the tabbed page needs to be done on demand. Thus, the need for
* a class that knows how to build this component based upon the <code>ApplicationNode</code>.
*
* @version 10.0.3
*/
public interface ComponentBuilder
{
/**
* Builds and returns the associated UI <code>Component</code> based upon the
* given <code>PropertyValueModel</code> node holder. If caching this built <code>Component</code>
* is necessary, it is the responsibility of the implementor of this method to
* handle this case in the implementing class.
*/
public Component buildComponent(PropertyValueModel nodeHolder);
}