home *** CD-ROM | disk | FTP | other *** search
/ The Net: Ultimate Internet Guide / WWLCD1.ISO / pc / java / un2maiq4 / pjjava / src / pj / awt / pjnbspec.java < prev    next >
Encoding:
Java Source  |  1996-08-14  |  19.9 KB  |  624 lines

  1. /*---------------------------------------------------------------------------
  2.  
  3.     Written by the Personal Journal developers of Dow Jones & Company, Inc.
  4.  
  5.     Dow Jones makes no representations or warranties about 
  6.     the suitability of this software, either express or 
  7.     implied, including but not limited to the implied warranties 
  8.     of merchantability, fitness for a particular purpose, 
  9.     or non-infringement.  Dow Jones will not be liable for 
  10.     any damages suffered by a user as a result of using, 
  11.     modifying or distributing this software or its derivatives.
  12.  
  13.  
  14.     @(#)PjNbSpec.java   0.00 10-Dec-1995
  15.  
  16.     A specification of the Personal Journal notebook.
  17.  
  18.  
  19.     Authors:
  20.  
  21.     rphall          Rick Hall
  22.     lning           Lindee Ning
  23.  
  24.     Version Ident:
  25.  
  26.     $Header: /PjJavaClient/src/pj/awt/PjNbSpec.java 7     3/22/96 11:53p Jlee $
  27.  
  28.  
  29.     History:
  30.  
  31.     10-dec-1995 rphall     Initial Creation
  32.     09-Mar-1996 lning      Added stuff needed for menu
  33.     27-Mar-1996 jlee       Replaced "&" in menu text with "and"
  34.  
  35. ---------------------------------------------------------------------------*/
  36.  
  37. package pj.awt;
  38.  
  39. import pj.awt.Notebook;
  40. import pj.awt.PjPageSpec;
  41. import pj.awt.TabSpec;
  42. import pj.io.Paper;
  43.  
  44. import collections.Assertable;
  45. import collections.ImplementationCheckable;
  46. import collections.ImplementationError;
  47.  
  48. import java.lang.String;
  49. import java.util.Vector;
  50.  
  51. class PjStr
  52.     {
  53.  
  54.     // --- Class variables
  55.  
  56.     /** Front Page headlines */
  57.     public static final String pageFPHdlines    = "100";
  58.  
  59.     /** Front page Business and Finance */
  60.     public static final String pageFPBusFin     = Paper.idFPBusFin;
  61.  
  62.     /** Front page World-Wide */
  63.     public static final String pageFPWorld      = Paper.idFPWorld;
  64.  
  65.     /** Front page Personal News */
  66.     public static final String pageFPNews       = Paper.idFPNews;
  67.  
  68.     /** Front page News Flash */
  69.     public static final String pageFPFlash      = Paper.idFPFlash;
  70.  
  71.     /** TJI headlines */
  72.     public static final String pageTJIHdlines   = "200";
  73.  
  74.     /** TJI Business and Finance */
  75.     public static final String pageTJIBusFin    = Paper.idTJIBusFin;
  76.  
  77.     /** TJI World-Wide */
  78.     public static final String pageTJIWorld     = Paper.idTJIWorld;
  79.  
  80.     /** TJI Personal News */
  81.     public static final String pageTJINews      = Paper.idTJINews;
  82.  
  83.     /** Markets Stock Indices and Dow Jones IA */
  84.     public static final String pageMrk          = Paper.idMrkStkIdx + Paper.idMrkDjia;
  85.  
  86.     /** Markets Exchange Rates and Markets Treasuries */
  87.     public static final String pageMrkExTrs     = Paper.idMrkExch + Paper.idMrkTreas;
  88.  
  89.     /** Markets Wrapup */
  90.     public static final String pageMrkWrap      = Paper.idMrkWrap;
  91.  
  92.     /** Portfolio page */
  93.     public static final String pagePort         = "300";
  94.  
  95.     /** Sports Highlights */
  96.     public static final String pageSpHilite     = Paper.idSpHilite;
  97.  
  98.     /** Sports Scores and Advertisement */
  99.     public static final String pageSpScoresAd   = Paper.idSpScores + Paper.idSpAd;
  100.  
  101.     /** Weather Map and Advertisement */
  102.     public static final String pageWth          = "600" + Paper.idWthAd;
  103.  
  104.     /** Weather US Northeast */
  105.     public static final String pageWthUSNE      = Paper.idWthUSNE;
  106.  
  107.     /** Weather US Southeast */
  108.     public static final String pageWthUSSE      = Paper.idWthUSSE;
  109.  
  110.     /** Weather US Midwest */
  111.     public static final String pageWthUSMW      = Paper.idWthUSMW;
  112.  
  113.     /** Weather US West */
  114.     public static final String pageWthUSWest    = Paper.idWthUSWest;
  115.  
  116.     /** Weather Canada */
  117.     public static final String pageWthCanada    = Paper.idWthCanada;
  118.  
  119.     /** Weather South America */
  120.     public static final String pageWthSouthA    = Paper.idWthSouthA;
  121.  
  122.     /** Weather Europe */
  123.     public static final String pageWthEurope    = Paper.idWthEurope;
  124.  
  125.     /** Weather Mid-East */
  126.     public static final String pageWthMidE      = Paper.idWthMidE;
  127.  
  128.     /** Weather Africa */
  129.     public static final String pageWthAfrica    = Paper.idWthAfrica;
  130.  
  131.     /** Weather Asia */
  132.     public static final String pageWthAsia      = Paper.idWthAsia;
  133.  
  134.  
  135.     /** Front Page tab */
  136.     public static final String tabFP        = pageFPHdlines;
  137.     public static final String tabstrFP     = "Front Page";
  138.  
  139.     /** TJI tab */
  140.     public static final String tabTJI       = pageTJIHdlines;
  141.     public static final String tabstrTJI    = "This Just In";
  142.  
  143.     /** Portfolio tab */
  144.     public static final String tabPort      = pagePort;
  145.     public static final String tabstrPort   = "Portfolio";
  146.  
  147.     /** Markets tab */
  148.     public static final String tabMrk       = pageMrk;
  149.     public static final String tabstrMrk    = "Markets";
  150.  
  151.     /** Sports tab */
  152.     public static final String tabSp        = pageSpHilite;
  153.     public static final String tabstrSp     = "Sports";
  154.  
  155.     /** Weather tab */
  156.     public static final String tabWth       = pageWth;
  157.     public static final String tabstrWth    = "Weather";
  158.  
  159.  
  160.  
  161.     /** Front Page menuitem */
  162.     public static final String menuFP      = pageFPHdlines;
  163.     public static final String menustrFP   = "Front Page";
  164.  
  165.     /** TJI menuitem */
  166.     public static final String menuTJI     = pageTJIHdlines;
  167.     public static final String menustrTJI  = "This Just In";
  168.  
  169.     /** Portfolio menuitem */
  170.     public static final String menuPort    = pagePort;
  171.     public static final String menustrPort = "Portfolio";
  172.  
  173.     /** Markets menuitem */
  174.     public static final String menuMrk     = pageMrk;
  175.     public static final String menustrMrk  = "Markets";
  176.  
  177.     /** Sports menuitem */
  178.     public static final String menuSp      = pageSpHilite;
  179.     public static final String menustrSp   = "Sports";
  180.  
  181.     /** Weather menuitem */
  182.     public static final String menuWth     = pageWth;
  183.     public static final String menustrWth  = "Weather";
  184.  
  185.  
  186.     /** Front Page submenuitem */
  187.     public static final String submenuFPF    = pageFPHdlines;
  188.     public static final String submenustrFPF = "Front Page";
  189.  
  190.     public static final String submenuFPB    = pageFPBusFin;
  191.     public static final String submenustrFPB = "Business and Finance";
  192.  
  193.     public static final String submenuFPW    = pageFPWorld;
  194.     public static final String submenustrFPW = "World-Wide";
  195.  
  196.     public static final String submenuFPP    = pageFPNews;
  197.     public static final String submenustrFPP = "Personal News";
  198.  
  199.     /** TJI submenuitem */
  200.     public static final String submenuTJIF    = pageTJIHdlines;
  201.     public static final String submenustrTJIF = "Front Page";
  202.  
  203.     public static final String submenuTJIB    = pageTJIBusFin;
  204.     public static final String submenustrTJIB = "Business and Finance";
  205.  
  206.     public static final String submenuTJIW    = pageTJIWorld;
  207.     public static final String submenustrTJIW = "World-Wide";
  208.  
  209.     public static final String submenuTJIP    = pageTJINews;
  210.     public static final String submenustrTJIP = "Personal News";
  211.  
  212.     /** Markets submenuitem */
  213.     public static final String submenuMrkS    = pageMrk;
  214.     public static final String submenustrMrkS = "Stock Indexes";
  215.  
  216.     public static final String submenuMrkC    = pageMrkExTrs;
  217.     public static final String submenustrMrkC = "Currencies and Bonds";
  218.  
  219.     public static final String submenuMrkM    = pageMrkWrap;
  220.     public static final String submenustrMrkM = "Market News";
  221.  
  222.     /** Sports submenuitem */
  223.     public static final String submenuSpS    = pageSpScoresAd;
  224.     public static final String submenustrSpS = "Scoreboard";
  225.     
  226.     public static final String submenuSpH    = pageSpHilite;
  227.     public static final String submenustrSpH = "Highlights";
  228.  
  229.     /** Weather submenuitem */
  230.     public static final String submenuWthP    = pageWth;
  231.     public static final String submenustrWthP = "Map";
  232.  
  233.     public static final String submenuWthF    = pageWthAfrica;
  234.     public static final String submenustrWthF = "Africa";
  235.  
  236.     public static final String submenuWthA    = pageWthAsia;
  237.     public static final String submenustrWthA = "Asia/Australia";
  238.  
  239.     public static final String submenuWthC    = pageWthCanada;
  240.     public static final String submenustrWthC = "canada";
  241.  
  242.     public static final String submenuWthE    = pageWthEurope;
  243.     public static final String submenustrWthE = "Europe";
  244.  
  245.     public static final String submenuWthI    = pageWthMidE;
  246.     public static final String submenustrWthI = "Middle East";
  247.  
  248.     public static final String submenuWthB    = pageWthSouthA;
  249.     public static final String submenustrWthB = "South America/Caribbean";
  250.  
  251.     public static final String submenuWthM    = pageWthUSMW;
  252.     public static final String submenustrWthM = "U.S.Middle";
  253.  
  254.     public static final String submenuWthN    = pageWthUSNE;
  255.     public static final String submenustrWthN = "U.S.Northeast";
  256.  
  257.     public static final String submenuWthS    = pageWthUSSE;
  258.     public static final String submenustrWthS = "U.S.Southeast";
  259.  
  260.     public static final String submenuWthW    = pageWthUSWest;
  261.     public static final String submenustrWthW = "U.S.West";
  262.  
  263.  
  264.     } // PjStr
  265.  
  266. /**
  267.  * A specification of the Personal Journal notebook.
  268.  *
  269.  * @see     pj.io.Paper
  270.  * @see     pj.awt.Notebook
  271.  * @see     pj.awt.PjPageSpec
  272.  * @version 0.00 01-Jan-96
  273.  * @author  rphall
  274. */
  275. public class PjNbSpec implements Assertable, ImplementationCheckable
  276.     {
  277.  
  278.  
  279.     // --- Class variables
  280.  
  281.     /** Front Page headlines */
  282.     public static final int idxFPHdlines    = 0;
  283.  
  284.     /** Front Page Business and Finance */
  285.     public static final int idxFPBusFin     = 1;
  286.  
  287.     /** Front Page World-Wide */
  288.     public static final int idxFPWorld      = 2;
  289.  
  290.     /** Front Page Personal News */
  291.     public static final int idxFPNews       = 3;
  292.  
  293.     /** Front Page News Flash */
  294.     public static final int idxFPFlash      = 4;
  295.  
  296.     /** TJI headlines */
  297.     public static final int idxTJIHdlines   = 5;
  298.  
  299.     /** TJI Business and Finance */
  300.     public static final int idxTJIBusFin    = 6;
  301.  
  302.     /** TJI World-Wide */
  303.     public static final int idxTJIWorld     = 7;
  304.  
  305.     /** TJI Personal News */
  306.     public static final int idxTJINews      = 8;
  307.  
  308.     /** Markets Stock Indices and Dow Jones IA */
  309.     public static final int idxMrk          = 9;
  310.  
  311.     /** Markets Exchange Rates and Markets Treasuries */
  312.     public static final int idxMrkExTrs     = 10;
  313.  
  314.     /** Markets Wrapup */
  315.     public static final int idxMrkWrap      = 11;
  316.  
  317.     /** Portfolio idx */
  318.     public static final int idxPort         = 12;
  319.  
  320.     /** Sports Highlights */
  321.     public static final int idxSpHilite     = 13;
  322.  
  323.     /** Sports Scores and Advertisement */
  324.     public static final int idxSpScoresAd   = 14;
  325.  
  326.  
  327.     /** Weather Map and Advertisement */
  328.     public static final int idxWth          = 15;
  329.  
  330.     /** Weather US Northeast */
  331.     public static final int idxWthUSNE      = 16;
  332.  
  333.     /** Weather US Southeast */
  334.     public static final int idxWthUSSE      = 17;
  335.  
  336.     /** Weather US Midwest */
  337.     public static final int idxWthUSMW      = 18;
  338.  
  339.     /** Weather US West */
  340.     public static final int idxWthUSWest    = 19;
  341.  
  342.     /** Weather Canada */
  343.     public static final int idxWthCanada    = 20;
  344.  
  345.     /** Weather South America */
  346.     public static final int idxWthSouthA    = 21;
  347.  
  348.     /** Weather Europe */
  349.     public static final int idxWthEurope    = 22;
  350.  
  351.     /** Weather Mid-East */
  352.     public static final int idxWthMidE      = 23;
  353.  
  354.     /** Weather Africa */
  355.     public static final int idxWthAfrica    = 24;
  356.  
  357.     /** Weather Asia */
  358.     public static final int idxWthAsia      = 25;
  359.  
  360.     /**
  361.      * An array of page names arranged in the order that the
  362.      * Personal Journal notebook is laid out.
  363.     */
  364.     public static final String[] pagename =
  365.         {
  366.         PjStr.pageFPHdlines, PjStr.pageFPBusFin,  PjStr.pageFPWorld,   PjStr.pageFPNews,
  367.         PjStr.pageFPFlash,   PjStr.pageTJIHdlines,PjStr.pageTJIBusFin, PjStr.pageTJIWorld,
  368.         PjStr.pageTJINews,   PjStr.pageMrk,       PjStr.pageMrkExTrs,
  369.         PjStr.pageMrkWrap,   PjStr.pagePort,      PjStr.pageSpHilite,  PjStr.pageSpScoresAd,PjStr.pageWth,
  370.         PjStr.pageWthUSNE,   PjStr.pageWthUSSE,   PjStr.pageWthUSMW,   PjStr.pageWthUSWest,
  371.         PjStr.pageWthCanada, PjStr.pageWthSouthA, PjStr.pageWthEurope, PjStr.pageWthMidE,
  372.         PjStr.pageWthAfrica, PjStr.pageWthAsia
  373.         };
  374.  
  375.     public static final String[] menuname =
  376.         {
  377.         PjStr.submenuFPF,      PjStr.submenuFPB,  PjStr.submenuFPW,      PjStr.submenuFPP,
  378.         PjStr.submenuTJIF,     PjStr.submenuTJIB, PjStr.submenuTJIW,     PjStr.submenuTJIP,
  379.         PjStr.submenuMrkS,     PjStr.submenuMrkC, PjStr.submenuMrkM,
  380.         PjStr.submenuSpH,      PjStr.submenuSpS,
  381.         PjStr.submenuWthF,     PjStr.submenuWthA,
  382.         PjStr.submenuWthC,     PjStr.submenuWthE, PjStr.submenuWthI,
  383.         PjStr.submenuWthB,     PjStr.submenuWthM, PjStr.submenuWthN,
  384.         PjStr.submenuWthS,     PjStr.submenuWthW
  385.         };
  386.  
  387.  
  388.     public static final String[] menutosection =
  389.         {
  390.         "Headlines",     "Business and Finance",  "World-Wide",  "Personal News",
  391.         "Headlines",     "Business and Finance",  "World-Wide",  "Personal News",
  392.         "Stock Indexes", "Currencies and Bonds",  "Market News",
  393.         "Scores",    "Highlights",    
  394.         "Africa",        "Asia/Australia",       "Canada",
  395.         "Europe",        "Middle East",          "South America/Caribbean",
  396.         "U.S. Middle",   "U.S. Northeast",       "U.S. Southeast",   "U.S. West"
  397.         };
  398.  
  399.  
  400.     public static final String[] mainmenustring =
  401.         {
  402.         PjStr.menustrFP,      PjStr.menustrTJI, PjStr.menustrMrk,
  403.         PjStr.menustrPort,    PjStr.menustrSp,  PjStr.menustrWth
  404.  
  405.         };
  406.  
  407.     public static final String[] mainmenuname =
  408.         {
  409.         PjStr.menuFP,      PjStr.menuTJI, PjStr.menuMrk,
  410.         PjStr.menuPort,    PjStr.menuSp,  PjStr.menuWth
  411.  
  412.         };
  413.  
  414.  
  415.     public String[][] substrings =
  416.         {
  417.         subFPstring,     subTJIstring,  subMKstring,
  418.         null,            subSPstring,   subWTstring
  419.  
  420.         };
  421.  
  422.     public String[][] subnames =
  423.         {
  424.         subFPname,     subTJIname,  subMKname,
  425.         null,          subSPname,   subWTname
  426.  
  427.         };
  428.  
  429.  
  430.     public static final String[] subFPstring =
  431.         {
  432.         PjStr.submenustrFPF,   PjStr.submenustrFPB,
  433.         PjStr.submenustrFPW,   PjStr.submenustrFPP
  434.  
  435.         };
  436.  
  437.     public static final String[] subFPname =
  438.         {
  439.         PjStr.submenuFPF,      PjStr.submenuFPB,
  440.         PjStr.submenuFPW,      PjStr.submenuFPP
  441.  
  442.         };
  443.  
  444.     public static final String[] subTJIstring =
  445.         {
  446.         PjStr.submenustrTJIF,      PjStr.submenustrTJIB,
  447.         PjStr.submenustrTJIW,      PjStr.submenustrTJIP
  448.  
  449.         };
  450.  
  451.     public static final String[] subTJIname =
  452.         {
  453.         PjStr.submenuTJIF,      PjStr.submenuTJIB,
  454.         PjStr.submenuTJIW,      PjStr.submenuTJIP
  455.  
  456.         };
  457.  
  458.     public static final String[] subMKstring =
  459.         {
  460.         PjStr.submenustrMrkS,      PjStr.submenustrMrkC,
  461.         PjStr.submenustrMrkM
  462.  
  463.         };
  464.  
  465.     public static final String[] subMKname =
  466.         {
  467.         PjStr.submenuMrkS,      PjStr.submenuMrkC,
  468.         PjStr.submenuMrkM
  469.  
  470.         };
  471.  
  472.     public static final String[] subSPstring =
  473.         {
  474.         PjStr.submenustrSpS,  PjStr.submenustrSpH   
  475.  
  476.         };
  477.  
  478.     public static final String[] subSPname =
  479.         {
  480.         PjStr.submenuSpH,      PjStr.submenuSpS
  481.  
  482.         };
  483.  
  484.     public static final String[] subWTstring =
  485.         {
  486.         PjStr.submenustrWthP,    PjStr.submenustrWthF, PjStr.submenustrWthA,
  487.         PjStr.submenustrWthC,    PjStr.submenustrWthE, PjStr.submenustrWthI,
  488.         PjStr.submenustrWthB,    PjStr.submenustrWthM, PjStr.submenustrWthN,
  489.         PjStr.submenustrWthS,    PjStr.submenustrWthW
  490.  
  491.         };
  492.     public static final String[] subWTname =
  493.         {
  494.         PjStr.submenuWthP,    PjStr.submenuWthF, PjStr.submenuWthA,
  495.         PjStr.submenuWthC,    PjStr.submenuWthE, PjStr.submenuWthI,
  496.         PjStr.submenuWthB,    PjStr.submenuWthM, PjStr.submenuWthN,
  497.         PjStr.submenuWthS,    PjStr.submenuWthW
  498.  
  499.         };
  500.  
  501.  
  502.  
  503.     private static final String[] tabname =
  504.         {
  505.         PjStr.tabFP, null,          null,         null,
  506.         null,        PjStr.tabTJI,  null,         null,
  507.         null,        PjStr.tabMrk,  null,
  508.         null,        PjStr.tabPort, PjStr.tabSp,  null,         PjStr.tabWth,
  509.         null,        null,          null,         null,
  510.         null,        null,          null,         null,
  511.         null,        null
  512.         };
  513.  
  514.     private static final String[] tabstring =
  515.         {
  516.         PjStr.tabstrFP, null,             null,            null,
  517.         null,           PjStr.tabstrTJI,  null,            null,
  518.         null,           PjStr.tabstrMrk,  null,
  519.         null,           PjStr.tabstrPort, PjStr.tabstrSp,  null,            PjStr.tabstrWth,
  520.         null,           null,             null,            null,
  521.         null,           null,             null,            null,
  522.         null,           null
  523.         };
  524.  
  525.     private static PjPageSpec[] pagespec = null;
  526.  
  527.  
  528.     // --- Public constructors
  529.     /**
  530.      * Constructs a notebook specification.
  531.     */
  532.     public PjNbSpec()
  533.         {
  534.  
  535.         if (pagespec == null)
  536.             {
  537.             // Preconditions
  538.             assert(pagename.length == tabname.length);
  539.             assert(pagename.length == tabstring.length);
  540.  
  541.             for (int i=0; i<tabstring.length; i++)
  542.                 {
  543.                 if (tabstring[i] == null) assert(  tabname[i] == null);
  544.                 if (  tabname[i] == null) assert(tabstring[i] == null);
  545.                 }
  546.  
  547.             StringTabSpec ts;
  548.             PjPageSpec ps;
  549.             Vector v = new Vector();
  550.  
  551.             for (int i=0; i<pagename.length; i++ )
  552.                 {
  553.                 ts = null;
  554.                 if (tabname[i] != null)
  555.                     ts=new StringTabSpec(tabname[i],pagename[i],tabstring[i]);
  556.  
  557.                 ps = new PjPageSpec(pagename[i],ts,null);
  558.                 v.addElement(ps);
  559.                 }
  560.  
  561.             pagespec = new PjPageSpec[pagename.length];
  562.             for (int i=0; i<pagename.length; i++)
  563.                 pagespec[i] = (PjPageSpec)v.elementAt(i);
  564.  
  565.             } // if pagespec null
  566.  
  567.         // Postconditions
  568.         checkImplementation();
  569.  
  570.         System.out.println("Debug-PjNbSpec:constructed");
  571.         } // PjNbSpec()
  572.  
  573.  
  574.  
  575.     // --- Public operations
  576.  
  577.     /**
  578.      * Check the internal consistency of a specification.
  579.      * @exception ImplementationError thrown if there are
  580.      * an incorrect number of page specifications; if any
  581.      * page specification is null; or if any tab specification
  582.      * is inconsistent.
  583.     */
  584.     public void checkImplementation() throws ImplementationError
  585.         {
  586.         assert(pagespec != null);
  587.         assert(pagespec.length == pagename.length);
  588.  
  589.         for (int i=0; i<pagespec.length; i++)
  590.             {
  591.             assert(pagespec[i] != null);
  592.             if (pagespec[i].tabspec != null)
  593.                 {
  594.                 if (pagespec[i].tabspec.strTabName == null)
  595.                     assert( pagespec[i].tabspec.objVisSpec == null);
  596.                 else
  597.                     assert( pagespec[i].tabspec.objVisSpec != null);
  598.                 }
  599.  
  600.             } // for pagespec.length
  601.         assert(pagespec.length == idxWthAsia+1);
  602.  
  603.         } // checkImplementation()
  604.  
  605.     /**
  606.      * Raise an exception if predicate is false.
  607.      * @see collections.Assertable
  608.     */
  609.     public void assert(boolean predicate) throws ImplementationError
  610.         {
  611.         ImplementationError.assert(this, predicate);
  612.         }
  613.  
  614.     /**
  615.      * @return An array of page specifications arranged in the order
  616.      * in which they should appear.
  617.     */
  618.     public PjPageSpec[] pagespecs()
  619.         {
  620.         return pagespec;
  621.         }
  622.  
  623.     } // PjNbSpec
  624.