/******************************************************************************* * Copyright (c) 2012 AGETO Service GmbH and others. * All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html. * * Contributors: * Gunnar Wagenknecht - initial API and implementation *******************************************************************************/ package org.eclipse.gyrex.admin.ui.internal.application; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.HashMap; import java.util.Map; import org.eclipse.gyrex.admin.ui.internal.AdminUiActivator; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Path; import org.eclipse.rap.rwt.RWT; import org.eclipse.rap.rwt.application.Application; import org.eclipse.rap.rwt.application.ApplicationConfiguration; import org.eclipse.rap.rwt.client.WebClient; import org.eclipse.rap.rwt.service.ResourceLoader; import org.osgi.framework.Bundle; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.CharEncoding; public class AdminApplicationConfiguration implements ApplicationConfiguration { private static String readBundleResource(final String resourceName, final String charset) { final URL entry = AdminUiActivator.getInstance().getBundle().getEntry(resourceName); if (entry == null) throw new IllegalStateException(String.format("Bundle resource '%s' not available!", resourceName)); InputStream in = null; try { in = entry.openStream(); return IOUtils.toString(in, charset); } catch (final IOException e) { throw new IllegalStateException(String.format("Unable to read bundle resource '%s': %s", resourceName, e.getMessage())); } finally { IOUtils.closeQuietly(in); } } @Override public void configure(final Application application) { final Map<String, String> brandingProps = new HashMap<String, String>(4); brandingProps.put(WebClient.PAGE_TITLE, "Gyrex Admin"); brandingProps.put(WebClient.BODY_HTML, readBundleResource("html/body.html", CharEncoding.UTF_8)); brandingProps.put(WebClient.FAVICON, "img/gyrex/eclipse.ico"); brandingProps.put(WebClient.HEAD_HTML, "<link href='http://fonts.googleapis.com/css?family=Open+Sans:400,800,600' rel='stylesheet' type='text/css'>"); application.addEntryPoint("/admin", AdminApplication.class, brandingProps); application.addStyleSheet(RWT.DEFAULT_THEME_ID, "theme/admin.css"); application.addResource("img/gyrex/eclipse.ico", new ResourceLoader() { @Override public InputStream getResourceAsStream(final String resourceName) throws IOException { return FileLocator.openStream(AdminUiActivator.getInstance().getBundle(), new Path("img/gyrex/eclipse.ico"), false); } }); } Bundle getBundle() { return AdminUiActivator.getInstance().getBundle(); } }