,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001-2004 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
*
* Contributor(s):
*/
package com.silverwrist.venice.ui.sidebox;
import java.io.IOException;
import java.util.*;
import org.w3c.dom.*;
import com.silverwrist.util.*;
import com.silverwrist.venice.core.*;
import com.silverwrist.venice.except.*;
import com.silverwrist.venice.ui.*;
import com.silverwrist.venice.ui.helpers.HTMLRendering;
import com.silverwrist.venice.ui.helpers.ImageHandler;
public class CommunityBox implements SideBoxFactory
{
/*--------------------------------------------------------------------------------
* Internal class that implements the actual sidebox
*--------------------------------------------------------------------------------
*/
private class CommunityBoxImpl implements ContentDirect
{
/*====================================================================
* Attributes
*====================================================================
*/
private UserContext uc;
private List comm_list;
/*====================================================================
* Constructor
*====================================================================
*/
CommunityBoxImpl(UserContext uc) throws DataException
{
this.uc = uc;
this.comm_list = uc.getMemberCommunities();
} // end constructor
/*====================================================================
* Implementations from interface Content
*====================================================================
*/
public boolean needFrame()
{
return false;
} // end needFrame
public int getMenuSelector()
{
return MENU_SELECTOR_NOCHANGE;
} // end getMenuSelector
public String getPageTitle(RequestOutput ro)
{
if (title_image!=null)
{ // return an image rendering
ImageHandler ih = (uc.isLoggedIn() ? title_image : anon_title_image);
return ih.getRendering(ro);
} // end if
else
{ // return a title string
String rc = (uc.isLoggedIn() ? title : anon_title);
return StringUtil.encodeHTML(rc);
} // end else
} // end getPageTitle
public String getPageQID()
{
return null;
} // end getPageQID
/*====================================================================
* Implementations from interface ContentDirect
*====================================================================
*/
public void render(RequestOutput out) throws IOException
{
HTMLRendering html = (HTMLRendering)(out.queryService(HTMLRendering.class));
if (comm_list.size()>0)
{ // load up the rendering data and render the contents of the list
String link_font = html.getFontTag(html.SIDEBOX_CONTENT_LINK,"sidebox");
out.write("\n");
Iterator it = comm_list.iterator();
while (it.hasNext())
{ // write each community out in turn
CommunityContext comm = (CommunityContext)(it.next());
out.write("\n");
bullet.render(out);
out.write(" | \n\n" + link_font + ""
+ StringUtil.encodeHTML(comm.getName()) + "\n");
if (comm.isAdmin())
{ // write the host tag at the end
out.write(" ");
host.render(out);
} // end if
out.write(" | \n
\n");
} // end while
out.write("
\n");
} // end if
else // write the "no communities" message
out.write(html.getFontTag(html.SIDEBOX_CONTENT_FOREGROUND,"sidebox") + ""
+ StringUtil.encodeHTML(null_message) + "\n");
if (uc.isLoggedIn())
{ // write the links at the end
String hilite = html.getFontTag(html.SIDEBOX_CONTENT_LINK,"sidebox-footer");
out.write("" + html.getFontTag(html.SIDEBOX_CONTENT_FOREGROUND,"sidebox-footer")
+ "[ " + hilite + StringUtil.encodeHTML(manage_link) + " ");
if (uc.canCreateCommunity())
out.write("| "
+ hilite + StringUtil.encodeHTML(create_new_link) + " ");
out.write("]");
} // end if
} // end render
} // end class CommunityBoxImpl
/*--------------------------------------------------------------------------------
* Attributes
*--------------------------------------------------------------------------------
*/
private ImageHandler title_image; // title image for sidebox for logged-in users
private ImageHandler anon_title_image; // title image for sidebox for not-logged-in users
private String title; // title of sidebox for logged-in users
private String anon_title; // title of sidebox for not-logged-in users
private String null_message; // message if they're not a member of any communities
private String manage_link; // "Manage" link text
private String create_new_link; // "Create New" link text
private ImageHandler bullet; // bullet image
private ImageHandler host; // host image
/*--------------------------------------------------------------------------------
* Constructor
*--------------------------------------------------------------------------------
*/
public CommunityBox()
{ // do nothing
} // end constructor
/*--------------------------------------------------------------------------------
* Implementations from interface SideBoxFactory
*--------------------------------------------------------------------------------
*/
public void setConfiguration(Element cfg) throws ConfigException
{
DOMElementHelper cfg_h = new DOMElementHelper(cfg);
title_image = new ImageHandler(cfg_h.getSubElement("title-image"));
if (title_image.isDefined())
{ // we're using image titles...
title = anon_title = null;
anon_title_image = new ImageHandler(cfg_h.getSubElement("anon-title-image"));
if (!(anon_title_image.isDefined()))
anon_title_image = title_image;
} // end if
else
{ // standard textual title
title_image = anon_title_image = null;
title = cfg_h.getSubElementText("title");
if (title==null)
throw new ConfigException("no
specified for community list sidebox",cfg);
title += ":";
anon_title = cfg_h.getSubElementText("anon-title");
if (anon_title==null)
anon_title = title;
else
anon_title += ":";
} // end else
null_message = cfg_h.getSubElementText("null-msg");
if (null_message==null)
null_message = "You are not a member of any communities.";
manage_link = cfg_h.getSubElementText("manage-link");
if (manage_link==null)
manage_link = "Manage";
create_new_link = cfg_h.getSubElementText("create-new-link");
if (create_new_link==null)
create_new_link = "Create New";
bullet = new ImageHandler(cfg_h.getSubElement("bullet"),"purple-ball.gif","*",14,14);
host = new ImageHandler(cfg_h.getSubElement("host-image"),"tag_host.gif","Host!",40,20);
} // end setConfiguration
public Content create(RequestInput ri) throws DataException
{
return new CommunityBoxImpl(ri.getUser());
} // end create
} // end class CommunityBox