/*
* Sone - PageToadletFactory.java - Copyright © 2010–2016 David Roden
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package net.pterodactylus.sone.web.page;
import net.pterodactylus.util.web.Page;
import freenet.client.HighLevelSimpleClient;
/**
* Factory that creates {@link PageToadlet}s using a given
* {@link HighLevelSimpleClient}.
*
* @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class PageToadletFactory {
/** The client to use when creating the toadlets. */
private final HighLevelSimpleClient highLevelSimpleClient;
/** The prefix for all pages’ paths. */
private final String pathPrefix;
/**
* Creates a new {@link PageToadlet} factory.
*
* @param highLevelSimpleClient
* The client to use when creating the toadlets
* @param pathPrefix
* The path that is prepended to all pages’ paths
*/
public PageToadletFactory(HighLevelSimpleClient highLevelSimpleClient, String pathPrefix) {
this.highLevelSimpleClient = highLevelSimpleClient;
this.pathPrefix = pathPrefix;
}
/**
* Creates a {@link PageToadlet} that wraps the given page and does not
* appear in the node’s menu.
*
* @param page
* The page to wrap
* @return The toadlet wrapped around the page
*/
public PageToadlet createPageToadlet(Page<FreenetRequest> page) {
return createPageToadlet(page, null);
}
/**
* Creates a {@link PageToadlet} that wraps the given page and appears in
* the node’s menu under the given name.
*
* @param page
* The page to wrap
* @param menuName
* The name of the menu item
* @return The toadlet wrapped around the page
*/
public PageToadlet createPageToadlet(Page<FreenetRequest> page, String menuName) {
return new PageToadlet(highLevelSimpleClient, menuName, page, pathPrefix);
}
}