001 /*
002 * Copyright 2002-2004 the original author or authors.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005 * use this file except in compliance with the License. You may obtain a copy of
006 * the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013 * License for the specific language governing permissions and limitations under
014 * the License.
015 */
016 package org.springframework.richclient.application.support;
017
018 import java.awt.Cursor;
019 import java.awt.Frame;
020 import java.awt.Image;
021 import java.awt.Window;
022
023 import javax.help.HelpSet;
024 import javax.help.JHelp;
025 import javax.swing.JFrame;
026
027 import org.springframework.core.io.ClassPathResource;
028 import org.springframework.core.io.Resource;
029 import org.springframework.richclient.application.Application;
030 import org.springframework.richclient.util.WindowUtils;
031
032 /**
033 * A simple implementation of a help contents frame for an application using
034 * javahelp.
035 *
036 * @author Keith Donald
037 */
038 public class HelpContents {
039
040 private Resource helpSetPath = new ClassPathResource("help/helpset.hs");
041
042 private JFrame helpFrame;
043
044 public HelpContents() {
045
046 }
047
048 public void setHelpSetPath(Resource helpSetPath) {
049 this.helpSetPath = helpSetPath;
050 }
051
052 protected String getApplicationName() {
053 return Application.instance().getName();
054 }
055
056 protected Image getApplicationImage() {
057 return Application.instance().getImage();
058 }
059
060 public void display(Window parent) {
061 if (helpFrame == null) {
062 helpFrame = new JFrame();
063 helpFrame.getGlassPane().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
064 try {
065 HelpSet helpSet = new HelpSet(null, helpSetPath.getURL());
066 JHelp jhelp = new JHelp(helpSet);
067 helpFrame = new JFrame("Help - " + getApplicationName());
068 helpFrame.getContentPane().add(jhelp);
069 helpFrame.setIconImage(getApplicationImage());
070 helpFrame.pack();
071 }
072 catch (Exception e) {
073 e.printStackTrace();
074 }
075 helpFrame.getGlassPane().setCursor(Cursor.getDefaultCursor());
076 }
077 if (!helpFrame.isVisible()) {
078 WindowUtils.centerOnParent(helpFrame, parent);
079 helpFrame.setVisible(true);
080 }
081 if ((helpFrame.getExtendedState() & Frame.NORMAL) == 0) {
082 helpFrame.setExtendedState(Frame.NORMAL);
083 }
084 helpFrame.toFront();
085 }
086
087 }