Java tutorial
/* * JBoss, Home of Professional Open Source * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors * as indicated by the @author tags. All rights reserved. * See the copyright.txt in the distribution for a * full listing of individual contributors. * * This copyrighted material is made available to anyone wishing to use, * modify, copy, or redistribute it subject to the terms and conditions * of the GNU Lesser General Public License, v. 2.1. * This program is distributed in the hope that it will be useful, but WITHOUT A * 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, * v.2.1 along with this distribution; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. */ package org.jboss.as.console.client.shared.homepage; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.NodeList; import com.google.gwt.event.logical.shared.CloseEvent; import com.google.gwt.event.logical.shared.CloseHandler; import com.google.gwt.event.logical.shared.OpenEvent; import com.google.gwt.event.logical.shared.OpenHandler; import com.google.gwt.safehtml.client.SafeHtmlTemplates; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.DisclosurePanel; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.InlineHyperlink; import com.google.gwt.user.client.ui.Widget; import org.jboss.as.console.client.shared.util.IdHelper; import org.jboss.as.console.client.tools.UUID; /** * A content box on the homepage. * * @author Harald Pehl */ public class ContentBox extends Composite implements OpenHandler<DisclosurePanel>, CloseHandler<DisclosurePanel> { interface Templates extends SafeHtmlTemplates { @Template("<h3 id=\"{0}\" class=\"homepage-content-box-header\">{1}" + "<span class=\"homepage-content-box-icon\"><i class=\"icon-angle-right\"></i></span></h3>") SafeHtml header(String headerId, String title); @Template("{0}<div id=\"{1}\"></div>") SafeHtml body(SafeHtml body, String linkId); } private final static Templates TEMPLATES = GWT.create(Templates.class); private final DisclosurePanel dp; public ContentBox(final String id, final String title, final SafeHtml body, final String linkTitle, final String linkTarget) { dp = new DisclosurePanel(); dp.setHeader(new HTML(TEMPLATES.header(IdHelper.asId(id + "_", getClass(), "_" + "header"), title))); dp.addOpenHandler(this); dp.addCloseHandler(this); dp.setOpen(true); String linkId = IdHelper.asId(id + "_", getClass(), "_" + "link"); HTMLPanel panel = new HTMLPanel(TEMPLATES.body(body, linkId)); panel.addStyleName("homepage-content-box-body"); InlineHyperlink hyperlink = new InlineHyperlink(linkTitle, linkTarget); hyperlink.addStyleName("homepage-link"); panel.add(hyperlink, linkId); dp.add(panel); initWidget(dp); setStyleName("homepage-content-box"); } public ContentBox(final String id, final String title, final SafeHtml body, Widget widget) { dp = new DisclosurePanel(); dp.setHeader(new HTML(TEMPLATES.header(IdHelper.asId(id + "_", getClass(), "_" + "header"), title))); dp.addOpenHandler(this); dp.addCloseHandler(this); dp.setOpen(true); String linkId = HTMLPanel.createUniqueId(); HTMLPanel panel = new HTMLPanel(TEMPLATES.body(body, linkId)); panel.addStyleName("homepage-content-box-body"); panel.add(widget, linkId); dp.add(panel); initWidget(dp); setStyleName("homepage-content-box"); } @Override public void onOpen(final OpenEvent<DisclosurePanel> event) { setIconClassname("icon-angle-down"); } @Override public void onClose(final CloseEvent<DisclosurePanel> event) { setIconClassname("icon-angle-right"); } private void setIconClassname(String styleName) { NodeList<Element> i = dp.getElement().getElementsByTagName("i"); if (i.getLength() == 1) { Element iconElem = i.getItem(0); iconElem.setClassName(styleName); } } }