All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.richfaces.cdk.model.RendererModel Maven / Gradle / Ivy

The newest version!
/*
 * $Id$
 *
 * License Agreement.
 *
 * Rich Faces - Natural Ajax for Java Server Faces (JSF)
 *
 * Copyright (C) 2007 Exadel, Inc.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License version 2.1 as published by the Free Software Foundation.
 *
 * This library 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
 */
package org.richfaces.cdk.model;

import org.richfaces.cdk.templatecompiler.model.Template;
import org.richfaces.cdk.util.Strings;

/**
 * 

*

* * @author [email protected] * */ public class RendererModel extends ModelElementBase implements ModelElement, Cacheable { private static final long serialVersionUID = -5802466539382148578L; private FacesId family; private String componentType; private String templatePath; private Template template; private boolean rendersChildren; private boolean changed = true; private boolean changeTracking = true; public RendererModel() { } public RendererModel(FacesId type) { setId(type); } @Merge public Template getTemplate() { return template; } public void setTemplate(Template template) { this.template = template; } @Merge public FacesId getFamily() { return family; } public void setFamily(FacesId family) { this.family = family; } public ClassName getRendererClass() { return getTargetClass(); } public void setRendererClass(ClassName rendererClass) { setTargetClass(rendererClass); } public boolean isRendersChildren() { return this.rendersChildren; } public void setRendersChildren(boolean rendersChildren) { this.rendersChildren = rendersChildren; } public String getTemplatePath() { return templatePath; } public void setTemplatePath(String templatePath) { this.templatePath = templatePath; } public R accept(Visitor visitor, D data) { return visitor.visitRender(this, data); } @Override public void merge(RendererModel other) { if (other == null) { return; } if (this.changeTracking) { this.changed = true; } ComponentLibrary.merge(this, other); // TODO review ClassName targetClass = this.getTargetClass(); if (targetClass == null || Strings.isEmpty(targetClass.getName())) { setTargetClass(other.getTargetClass()); } ClassName baseClass = this.getBaseClass(); if (baseClass == null || Strings.isEmpty(baseClass.getName())) { setTargetClass(other.getBaseClass()); } } @Override public boolean same(RendererModel other) { if (null != getId() && null != other.getId()) { // compare families ? if (null != getFamily() && null != other.getFamily() && !getFamily().equals(other.getFamily())) { return false; } // Both types not null, compare them. return getId().equals(other.getId()); } // one or both types are null, compare classes. if (null != getRendererClass() && getRendererClass().equals(other.getRendererClass())) { return true; } return false; } public String getComponentType() { return componentType; } public void setComponentType(String componentType) { this.componentType = componentType; } @Override protected PropertyBase createAttribute() { return new AttributeModel(); } @Override public String toString() { return "Renderer {type: " + getId() + ", family: " + getFamily() + "}"; } @Override public void markUnchanged() { this.changed = false; } @Override public boolean hasChanged() { return this.changed; } @Override public void stopTrackingChanges() { this.changeTracking = false; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy