/*
* ViewFactory.java 28 oct. 2008
*
* Sweet Home 3D, Copyright (c) 2008 Emmanuel PUYBARET / eTeks <info@eteks.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package com.eteks.sweethome3d.viewcontroller;
import com.eteks.sweethome3d.model.BackgroundImage;
import com.eteks.sweethome3d.model.CatalogPieceOfFurniture;
import com.eteks.sweethome3d.model.CatalogTexture;
import com.eteks.sweethome3d.model.FurnitureCatalog;
import com.eteks.sweethome3d.model.Home;
import com.eteks.sweethome3d.model.UserPreferences;
/**
* A factory that specifies how to create the views displayed in Sweet Home 3D.
* @author Emmanuel Puybaret
*/
public interface ViewFactory {
/**
* Returns a new view that displays furniture <code>catalog</code>.
*/
public abstract View createFurnitureCatalogView(FurnitureCatalog catalog,
UserPreferences preferences,
FurnitureCatalogController furnitureCatalogController);
/**
* Returns a new view that displays <code>home</code> furniture list.
*/
public abstract View createFurnitureView(Home home, UserPreferences preferences,
FurnitureController furnitureController);
/**
* Returns a new view that displays <code>home</code> on a plan.
*/
public abstract PlanView createPlanView(Home home, UserPreferences preferences,
PlanController planController);
/**
* Returns a new view that displays <code>home</code> in 3D.
*/
public abstract View createView3D(Home home, UserPreferences preferences,
HomeController3D homeController3D);
/**
* Returns a new view that displays <code>home</code> and its sub views.
*/
public abstract HomeView createHomeView(Home home, UserPreferences preferences,
HomeController homeController);
/**
* Returns a new view that displays a wizard.
*/
public abstract DialogView createWizardView(UserPreferences preferences,
WizardController wizardController);
/**
* Returns a new view that displays the different steps that helps the user to choose a background image.
*/
public abstract View createBackgroundImageWizardStepsView(
BackgroundImage backgroundImage,
UserPreferences preferences,
BackgroundImageWizardController backgroundImageWizardController);
/**
* Returns a new view that displays the different steps that helps the user to import furniture.
*/
public abstract ImportedFurnitureWizardStepsView createImportedFurnitureWizardStepsView(
CatalogPieceOfFurniture piece,
String modelName, boolean importHomePiece,
UserPreferences preferences,
ImportedFurnitureWizardController importedFurnitureWizardController);
/**
* Returns a new view that displays the different steps that helps the user to import a texture.
*/
public abstract View createImportedTextureWizardStepsView(
CatalogTexture texture, String textureName,
UserPreferences preferences,
ImportedTextureWizardController importedTextureWizardController);
/**
* Returns a new view that displays message for a threaded task.
*/
public abstract ThreadedTaskView createThreadedTaskView(String taskMessage,
UserPreferences userPreferences,
ThreadedTaskController threadedTaskController);
/**
* Returns a new view that edits user preferences.
*/
public abstract DialogView createUserPreferencesView(
UserPreferences preferences,
UserPreferencesController userPreferencesController);
/**
* Returns a new view that edits level values.
*/
public abstract DialogView createLevelView(UserPreferences preferences, LevelController levelController);
/**
* Returns a new view that edits furniture values.
*/
public abstract DialogView createHomeFurnitureView(UserPreferences preferences,
HomeFurnitureController homeFurnitureController);
/**
* Returns a new view that edits wall values.
*/
public abstract DialogView createWallView(UserPreferences preferences,
WallController wallController);
/**
* Returns a new view that edits room values.
*/
public abstract DialogView createRoomView(UserPreferences preferences,
RoomController roomController);
/**
* Returns a new view that edits label values.
*/
public abstract DialogView createLabelView(boolean modification,
UserPreferences preferences,
LabelController labelController);
/**
* Returns a new view that edits compass values.
*/
public abstract DialogView createCompassView(UserPreferences preferences,
CompassController compassController);
/**
* Returns a new view that edits observer camera values.
*/
public abstract DialogView createObserverCameraView(UserPreferences preferences,
ObserverCameraController home3DAttributesController);
/**
* Returns a new view that edits 3D attributes.
*/
public abstract DialogView createHome3DAttributesView(UserPreferences preferences,
Home3DAttributesController home3DAttributesController);
/**
* Returns a new view that edits the texture of its controller.
*/
public abstract TextureChoiceView createTextureChoiceView(UserPreferences preferences,
TextureChoiceController textureChoiceController);
/**
* Returns a new view that edits the materials of its controller.
*/
public abstract View createModelMaterialsView(UserPreferences preferences,
ModelMaterialsController modelMaterialsController);
/**
* Creates a new view that edits page setup.
*/
public abstract DialogView createPageSetupView(UserPreferences preferences,
PageSetupController pageSetupController);
/**
* Returns a new view that displays home print preview.
*/
public abstract DialogView createPrintPreviewView(Home home,
UserPreferences preferences,
HomeController homeController,
PrintPreviewController printPreviewController);
/**
* Returns a new view able to compute a photo realistic image of a home.
*/
public abstract DialogView createPhotoView(Home home, UserPreferences preferences,
PhotoController photoController);
/**
* Returns a new view able to compute a photos of a home from its stored points of view.
*/
public abstract DialogView createPhotosView(Home home, UserPreferences preferences,
PhotosController photosController);
/**
* Returns a new view able to compute a 3D video of a home.
*/
public abstract DialogView createVideoView(Home home, UserPreferences preferences,
VideoController videoController);
/**
* Returns a new view that displays Sweet Home 3D help.
*/
public abstract HelpView createHelpView(UserPreferences preferences,
HelpController helpController);
}