/*
** Luxor - XML User Interface Language (XUL) Toolkit
** Copyright (c) 2001, 2002 by Gerald Bauer
**
** This program is free software.
**
** You may redistribute it and/or modify it under the terms of the GNU
** General Public License as published by the Free Software Foundation.
** Version 2 of the license should be included with this distribution in
** the file LICENSE, as well as License.html. If the license is not
** included with this distribution, you may find a copy at the FSF web
** site at 'www.gnu.org' or 'www.fsf.org', or you may write to the
** Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139 USA.
**
** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,
** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR
** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY
** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR
** REDISTRIBUTION OF THIS SOFTWARE.
**
*/

package luxor.core;

import java.util.*;
import javax.swing.*;
import luxor.spi.*;
import luxor.status.*;
import luxor.*;

public class Xul
{

   /**
    *  convenience method; adds html directory to path
    */
   public static String getHTML( Map data, String name )
   {
      return XulManager.getXulManager().getHTML( data, name );
   }

   /**
    *  convenience method
    */
   public static String getHTML( String name )
   {
      return XulManager.getXulManager().getHTML( name );
   }

   public static String getPortal( String id )
   {
      return XulManager.getXulManager().getPortal( id );
   }

   public static String getPortal( Map data, String id )
   {
      return XulManager.getXulManager().getPortal( data, id );
   }

   public static String getTemplate( Map data, String name )
   {
      return XulManager.getXulManager().getTemplate( data, name );
   }

   public static String getTemplate( String name )
   {
      return XulManager.getXulManager().getTemplate( name );
   }

   public static void addAction( String key, XulAction value )
   {
      // todo: rename to registerAction??
      XulManager.getXulManager().addAction( key, value );
   }

   public static void addMenu( String key, JMenu menu )
   {
      // todo: rename to registerMenu??
      XulManager.getXulManager().addMenu( key, menu );
   }

   public static void addServlet( String key, XulServlet value )
   {
      // todo: rename to registerServlet??
      XulManager.getXulManager().addServlet( key, value );
   }

   public static JComponent createJComponentFromBox( String key )
   {
      return XulManager.getXulManager().createJComponentFromBox( key );
   }

   public static String[] createList( String key )
   {
      return XulManager.getXulManager().createList( key );
   }

   public static XulMap createMap( String key )
   {
      return XulManager.getXulManager().createMap( key );
   }


   public static JMenuBar createMenuBar( String key )
   {
      return XulManager.getXulManager().createMenuBar( key );
   }

   public static JToolBar createToolBar( String key )
   {
      return XulManager.getXulManager().createToolBar( key );
   }

   public static void error( String msg )
   {
      Status.error( "*** xul error: " + msg );
   }

   public static XulAction lookupAction( String key )
   {
      return XulManager.getXulManager().lookupAction( key );
   }


   public static ImageIcon[] lookupAnim( String key )
   {
      return XulManager.getXulManager().lookupAnim( key );
   }

   public static ImageIcon lookupIcon( String key )
   {
      return XulManager.getXulManager().lookupIcon( key );
   }

   public static JPopupMenu lookupPopup( String key )
   {
      return XulManager.getXulManager().lookupPopup( key );
   }

   public static XulPortlet lookupPortlet( String id )
   {
      return XulManager.getXulManager().lookupPortlet( id );
   }

   public static void syntax( String msg )
   {
      Status.error( "*** xul syntax error: " + msg );
   }

   public static void warning( String msg )
   {
      Status.warning( "*** xul warning: " + msg );
   }

   public final static class Align implements SwingConstants
   {
      public final static int MAX = 301;
      public final static int MIDDLE = 300;
   }

   public final static class Attribute
   {
      public final static String ACCESSKEY = "accesskey";
      public final static String CHECKED = "checked";
      public final static String CLASS = "class";
      // todo: rename to align?
      public final static String COLLAPSIBLE = "collapsible";
      public final static String COLS = "cols";
      public final static String COLSPAN = "colspan";
      public final static String COMMAND = "command";
      public final static String DATASOURCE = "datasource";
      public final static String DISABLE = "disable";
      public final static String FLEX = "flex";
      public final static String HEADING = "heading";
      public final static String HISTORY = "history";
      public final static String HORZ = "horz";
      // todo: rename to valign?
      public final static String HTEXTPOS = "htextpos";
      public final static String ICON = "icon";
      public final static String ID = "id";
      public final static String IND = "ind";
      public final static String KEY = "key";
      public final static String LABEL = "label";
      public final static String LIST = "list";
      public final static String MAP = "map";
      public final static String MODIFIERS = "modifiers";
      public final static String OFFLINE = "offline";
      public final static String ORIENT = "orient";
      public final static String PREPEND = "prepend";
      public final static String REF = "ref";
      public final static String ROWS = "rows";
      public final static String ROWSPAN = "rowspan";
      public final static String SELECT = "select";
      public final static String SORT = "sort";
      public final static String SRC = "src";
      public final static String STYLE = "style";
      public final static String TARGET = "target";
      public final static String TOOLTIP = "tooltip";
      public final static String TYPE = "type";
      public final static String URL = "url";
      public final static String VALUE = "value";
      public final static String VERT = "vert";
      public final static String VTEXTPOS = "vtextpos";

      public final static String WIDTH = "width";
   }

   public final static class Element
   {

      public final static String ANIM = "anim";

      public final static String BOX = "box";

      public final static String BUTTON = "button";
      public final static String CAPTION = "caption";
      public final static String CHECKBOX = "checkbox";

      public final static String CHOICE = "choice";
      public final static String COL = "col";

      public final static String COLGROUP = "colgroup";
      public final static String COLUMN = "column";
      public final static String COLUMNS = "columns";

      public final static String COMMAND = "command";
      public final static String COMPONENTREF = "componentref";

      public final static String DATAGRID = "datagrid";

      public final static String DISPLAYURL = "displayurl";
      public final static String ENTRY = "entry";
      public final static String GADGET = "gadget";

      public final static String GRID = "grid";
      public final static String GROUPBOX = "groupbox";
      public final static String HBOX = "hbox";

      public final static String ICON = "icon";
      public final static String IFRAME = "iframe";

      public final static String IMAGE = "image";
      public final static String KEY = "key";

      public final static String KEYSET = "keyset";
      // more fancy synomym for componentref
      public final static String LABEL = "label";
      public final static String LIST = "list";
      public final static String MAP = "map";

      public final static String MCHOICE = "mchoice";
      public final static String MENU = "menu";

      public final static String MENUBAR = "menubar";
      public final static String MENUITEM = "menuitem";
      public final static String MENUPOPUP = "menupopup";
      public final static String MENUREF = "menuref";
      public final static String MENUSEPARATOR = "menuseparator";
      public final static String PASSWORD = "password";
      public final static String POPUP = "popup";
      public final static String PORTAL = "portal";
      public final static String PORTLET = "portlet";
      public final static String PRE = "pre";
      public final static String ROW = "row";
      public final static String ROWS = "rows";
      public final static String SEPARATOR = "separator";

      public final static String SPACER = "spacer";

      public final static String STYLESHEET = "stylesheet";
      public final static String TAB = "tab";

      public final static String TABBOX = "tabbox";
      public final static String TABLE = "table";
      public final static String TABPANEL = "tabpanel";
      public final static String TABPANELS = "tabpanels";
      public final static String TABS = "tabs";
      public final static String TD = "td";
      public final static String TEXT = "text";
      public final static String TEXTAREA = "textarea";

      public final static String TOOLBAR = "toolbar";
      public final static String TOOLBARBUTTON = "toolbarbutton";
      public final static String TOOLBARSEPARATOR = "toolbarseparator";
      public final static String TR = "tr";
      public final static String TREE = "tree";
      public final static String VBOX = "vbox";

      public final static String XUL = "xul";
   }

   public final static class Value
   {
      public final static String ANONYMOUS = "anonymous";
      public final static String FALSE = "false";
      public final static String TRUE = "true";
   }
}