KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > edu > rice > cs > drjava > ui > HelpFrame


1 /*BEGIN_COPYRIGHT_BLOCK
2  *
3  * This file is part of DrJava. Download the current version of this project from http://www.drjava.org/
4  * or http://sourceforge.net/projects/drjava/
5  *
6  * DrJava Open Source License
7  *
8  * Copyright (C) 2001-2005 JavaPLT group at Rice University (javaplt@rice.edu). All rights reserved.
9  *
10  * Developed by: Java Programming Languages Team, Rice University, http://www.cs.rice.edu/~javaplt/
11  *
12  * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
13  * documentation files (the "Software"), to deal with the Software without restriction, including without limitation
14  * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and
15  * to permit persons to whom the Software is furnished to do so, subject to the following conditions:
16  *
17  * - Redistributions of source code must retain the above copyright notice, this list of conditions and the
18  * following disclaimers.
19  * - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
20  * following disclaimers in the documentation and/or other materials provided with the distribution.
21  * - Neither the names of DrJava, the JavaPLT, Rice University, nor the names of its contributors may be used to
22  * endorse or promote products derived from this Software without specific prior written permission.
23  * - Products derived from this software may not be called "DrJava" nor use the term "DrJava" as part of their
24  * names without prior written permission from the JavaPLT group. For permission, write to javaplt@rice.edu.
25  *
26  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
27  * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28  * CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
29  * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
30  * WITH THE SOFTWARE.
31  *
32 END_COPYRIGHT_BLOCK*/

33
34 package edu.rice.cs.drjava.ui;
35
36 import edu.rice.cs.drjava.CodeStatus;
37 import edu.rice.cs.drjava.platform.PlatformFactory;
38
39 import javax.swing.event.HyperlinkListener JavaDoc;
40 import javax.swing.event.HyperlinkEvent JavaDoc;
41 import java.net.URL JavaDoc;
42 import java.net.MalformedURLException JavaDoc;
43
44 /**
45  * The frame for displaying the HTML help files.
46  * @version $Id: HelpFrame.java 3197 2005-05-23 13:58:00Z rcartwright $
47  */

48 public class HelpFrame extends HTMLFrame {
49   private static final String JavaDoc HELP_PATH = "/edu/rice/cs/drjava/docs/user/";
50   protected static final String JavaDoc CONTENTS_PAGE = "index.html";
51   protected static final String JavaDoc HOME_PAGE = "intro.html";
52   private static final URL JavaDoc INTRO_URL =
53     HTMLFrame.class.getResource(HELP_PATH + HOME_PAGE);
54   protected static final String JavaDoc ICON = "DrJavaHelp.png";
55
56   public HelpFrame() {
57     super("Help on using DrJava", INTRO_URL, HelpFrame.class.getResource(HELP_PATH + CONTENTS_PAGE), ICON);
58     addHyperlinkListener(_linkListener);
59
60   }
61   
62   /**
63    * Used by subclass QuickStartFrame to instantiate fields of frame.
64    */

65   public HelpFrame(String JavaDoc frameName, URL JavaDoc introUrl, URL JavaDoc indexUrl, String JavaDoc iconString) {
66     super(frameName, introUrl, indexUrl, iconString);
67   }
68   
69
70   protected String JavaDoc getErrorText(URL JavaDoc url) {
71     // The help files are made available by running "ant docs"
72
String JavaDoc errorText = "The Help files are currently unavailable.";
73     if (CodeStatus.DEVELOPMENT) { // don't show this message in stable
74
errorText += "\n\nTo generate the help files, run the \"ant docs\" target" +
75         " after compiling DrJava.";
76     }
77     return errorText;
78   }
79
80   /** Shows the page selected by the hyperlink event. Changed to anonymous inner class for
81    * encapsulation purposes */

82   private HyperlinkListener JavaDoc _linkListener = new HyperlinkListener JavaDoc() {
83     public void hyperlinkUpdate(HyperlinkEvent JavaDoc event) {
84       if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
85         // Only follow links within the documentation
86
URL JavaDoc url = event.getURL();
87         String JavaDoc protocol = url.getProtocol();
88
89         if (!"file".equals(protocol) && !"jar".equals(protocol)) {
90           // try to open in the platform's web browser, since we can't
91
// view it effectively here if it isn't in the jar
92
// (we only handle file/jar protocols)
93
PlatformFactory.ONLY.openURL(url);
94           return;
95         }
96
97         // perform path testing
98
String JavaDoc path = url.getPath();
99
100         if (path.indexOf(HELP_PATH+CONTENTS_PAGE) >= 0) {
101           try { url = new URL JavaDoc(url,HOME_PAGE); } // redirect to home, not content
102
catch(MalformedURLException JavaDoc murle) {
103             /* do nothing */
104           }
105         }
106         else if (path.indexOf(HELP_PATH) < 0) return; // not anywhere in the help section
107

108         if (url.sameFile(_history.contents)) return; // we're already here!
109
jumpTo(url);
110       }
111     }
112   };
113 }
114
Popular Tags