/*
* JBoss, Home of Professional Open Source
* Copyright , Red Hat, Inc. and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software 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 software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.richfaces.component;
import javax.faces.component.UIComponentBase;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ComponentSystemEvent;
import javax.faces.event.ComponentSystemEventListener;
import javax.faces.event.PreRenderComponentEvent;
import javax.faces.event.PreRenderViewEvent;
import javax.faces.event.SystemEvent;
import javax.faces.event.SystemEventListener;
import javax.faces.render.Renderer;
import org.richfaces.cdk.annotations.Attribute;
import org.richfaces.cdk.annotations.JsfComponent;
import org.richfaces.cdk.annotations.JsfRenderer;
import org.richfaces.cdk.annotations.Tag;
import org.richfaces.cdk.annotations.TagType;
import org.richfaces.renderkit.html.SyntaxHighlighterRenderer;
@JsfComponent(tag = @Tag(name = "syntaxhighlighter", type = TagType.Facelets),
renderer = @JsfRenderer(family = AbstractSyntaxHighlighter.COMPONENT_FAMILY, type = SyntaxHighlighterRenderer.RENDERER_TYPE), attributes = "core-props.xml")
public abstract class AbstractSyntaxHighlighter extends UIComponentBase implements SystemEventListener, ComponentSystemEventListener {
// ------------------------------ FIELDS ------------------------------
public static final String COMPONENT_FAMILY = "org.richfaces.Syntaxhighlighter";
public static final String COMPONENT_TYPE = "org.richfaces.Syntaxhighlighter";
// ------------------------ INTERFACE METHODS ------------------------
// --------------------- Interface ComponentSystemEventListener ---------------------
@Override
public void processEvent(ComponentSystemEvent event) throws AbortProcessingException {
super.processEvent(event);
if (event instanceof PreRenderViewEvent) {
Renderer renderer = getRenderer(getFacesContext());
((ComponentSystemEventListener) renderer).processEvent(new PreRenderComponentEvent(this));
}
}
// --------------------- Interface SystemEventListener ---------------------
@Override
public void processEvent(SystemEvent event) throws AbortProcessingException {
if (event instanceof PreRenderViewEvent) {
Renderer renderer = getRenderer(getFacesContext());
if (renderer instanceof ComponentSystemEventListener) {
((ComponentSystemEventListener) renderer).processEvent(new PreRenderComponentEvent(this));
}
}
}
@Override
public boolean isListenerForSource(Object source) {
return source instanceof UIViewRoot;
}
// -------------------------- OTHER METHODS --------------------------
@Attribute
public abstract String getCopyToClipboardConfirmationLabel();
@Attribute
public abstract String getCopyToClipboardLabel();
@Attribute
public abstract String getExpandSourceLabel();
@Attribute(defaultValue = "1")
public abstract int getFirstLine();
@Attribute
public abstract String getHelpLabel();
@Attribute
public abstract Object getHighlight();
@Attribute(defaultValue = "plain")
public abstract String getLanguage();
@Attribute
public abstract String getPrintLabel();
@Attribute(defaultValue = "4")
public abstract int getTabSize();
@Attribute(defaultValue = "Default")
public abstract String getTheme();
@Attribute
public abstract String getViewSourceLabel();
@Attribute(defaultValue = "true")
public abstract boolean isAutoLinks();
@Attribute(defaultValue = "false")
public abstract boolean isBloggerMode();
@Attribute(defaultValue = "false")
public abstract boolean isCollapsed();
@Attribute(defaultValue = "true")
public abstract boolean isGutter();
@Attribute(defaultValue = "false")
public abstract boolean isHtmlScript();
@Attribute(defaultValue = "true")
public abstract boolean isSmartTabs();
@Attribute(defaultValue = "false")
public abstract boolean isStripBrs();
@Attribute(defaultValue = "true")
public abstract boolean isToolbar();
public void subscribeToPreRenderViewEvent() {
FacesContext.getCurrentInstance().getViewRoot().subscribeToViewEvent(PreRenderViewEvent.class, this);
}
}