001package org.gwtbootstrap3.client.ui; 002 003/* 004 * #%L 005 * GwtBootstrap3 006 * %% 007 * Copyright (C) 2013 GwtBootstrap3 008 * %% 009 * Licensed under the Apache License, Version 2.0 (the "License"); 010 * you may not use this file except in compliance with the License. 011 * You may obtain a copy of the License at 012 * 013 * http://www.apache.org/licenses/LICENSE-2.0 014 * 015 * Unless required by applicable law or agreed to in writing, software 016 * distributed under the License is distributed on an "AS IS" BASIS, 017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 018 * See the License for the specific language governing permissions and 019 * limitations under the License. 020 * #L% 021 */ 022 023import org.gwtbootstrap3.client.ui.base.AbstractTextWidget; 024import org.gwtbootstrap3.client.ui.base.helper.SourceCodeHelper; 025import org.gwtbootstrap3.client.ui.constants.Styles; 026 027import com.google.gwt.dom.client.Document; 028 029/** 030 * Simple {@code <pre>} element for multi-line code blocks. 031 * 032 * @author Sven Jacobs 033 * @see Code 034 */ 035public class Pre extends AbstractTextWidget { 036 037 public Pre() { 038 super(Document.get().createPreElement()); 039 } 040 041 /** 042 * Sets HTML contents. 043 * <p/> 044 * If HTML contains "\n" it will be replaced by a {@code <br>} element 045 * and "\s" will be replaced by a whitespace. 046 * 047 * @param html HTML contents 048 */ 049 @Override 050 public void setHTML(final String html) { 051 getElement().setInnerHTML(SourceCodeHelper.parseCode(html).asString()); 052 } 053 054 /** 055 * Sets a max-height of 350px and provides a y-axis scrollbar 056 * 057 * @param scrollable If true sets a max-height of 350px and provides a y-axis scrollbar 058 */ 059 public void setScrollable(final boolean scrollable) { 060 if (scrollable) { 061 addStyleName(Styles.PRE_SCROLLABLE); 062 } else { 063 removeStyleName(Styles.PRE_SCROLLABLE); 064 } 065 } 066}