İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır
Zafer Teker
tekzaf@yahoo.com

Java Help Sistemi

Programlarda Help menüsündeki yardımları kullanmışsınızdır. Açılan pencerede iki bölme bulunur. Sağ bölmede içerik (genellikle html formatındadır), sol bölmede ise İçindekiler, Dizin ve Arama bölümleri bulunur. İşte Java Help Sistem bu yardım penceresini kolayca yapmanız için geliştirilmiş bir sistem. Java ile yaptığınız bir programa bu sistemi kullanarak kolay bir şekilde yardım ekleyebilirsiz.

Yardım İçin Gerekli Dosyalar

Yardım dosyaları XML dosyalarıdır. Şu dosyalar gerekmektedir.

HelpSet dosyası: .hs uzantılıdır. Tüm sistemin bilgisini saklayan bir XML'dir.

Göster Gizle Kopar Satır Gizle Satır Göster
  1 <?xml>
  2 <!DOCTYPE helpset
  3   PUBLIC "-//Sun Microsystems Inc.//DTD JavaHelp HelpSet Version 1.0//EN"
  4          "http://java.sun.com/products/javahelp/helpset_1_0.dtd">
  5 <helpset version="1.0">
  6   <title>Godoro HelpSet</title>
  7   <maps>
  8      <homeID>godoro</homeID>
  9      <mapref location="godoro.jhm"/>
 10   </maps>
 11   <view>
 12     <name>TOC</name>
 13     <label>Godoro HelpSets</label>
 14     <type>javax.help.TOCView</type>
 15     <data>toc.xml</data>
 16   </view>
 17   <view>
 18     <name>Index</name>
 19     <label>Index</label>
 20     <type>javax.help.IndexView</type>
 21     <data>index.xml</data>
 22   </view>
 23 </helpset>

Map dosyası: .jhm uzantılıdır. Bu dosyada .html uzatılı dosyalara bir id verilmektedir. Diğer XML dosyalarında html dosyasının adı yerine bu id'i kullanılacaktır.

Göster Gizle Kopar Satır Gizle Satır Göster
  1 <?xml>
  2 <!DOCTYPE map
  3   PUBLIC "-//Sun Microsystems Inc.//DTD JavaHelp Map Version 1.0//EN"
  4          "http://java.sun.com/products/javahelp/map_1_0.dtd">
  5 <map version="1.0">
  6 	<mapID target="intro" url="intro.html"/>
  7 	<mapID target="muhteva" url="muhteva.html"/>
  8 	<mapID target="mecmua" url="mecmua.html"/>
  9 </map>

İçindekiler (Contents) xml'i: .xml uzantılıdır. Sol bölmedeki içindekiler bölümünün oluşturulması içindir. tocitem element'i ile başlık ve tıklandığında gösterilecek html dosyasının id'si verilir.

Göster Gizle Kopar Satır Gizle Satır Göster
  1 <?xml>
  2 <!DOCTYPE toc
  3   PUBLIC "-//Sun Microsystems Inc.//DTD JavaHelp TOC Version 1.0//EN"
  4          "http://java.sun.com/products/javahelp/toc_1_0.dtd">
  5 <toc version="1.0">
  6   <tocitem text="İçindekiler">
  7     <tocitem text="Giriş" target="intro"/>
  8     <tocitem text="Muhteva İçerik Yöneticisi" target="muhteva"/>
  9     <tocitem text="Mecmua" target="mecmua"/>
 10   </tocitem>
 11 </toc>

İndex (Dizin xml'i): .xml uzantılıdır. Sol bölmede index bölümünün oluşturulması içindir. indexitem element'i ile bir text ve text tıklandığında gösterilecek html dosyasının id'si verilir.

Göster Gizle Kopar Satır Gizle Satır Göster
  1 <?xml>
  2 <!DOCTYPE index
  3   PUBLIC "-//Sun Microsystems Inc.//DTD JavaHelp Index Version 1.0//EN"
  4          "http://java.sun.com/products/javahelp/index_1_0.dtd">
  5 <index version="1.0">
  6     <indexitem text="Giriş" target="intro"/>
  7     <indexitem text="Muhteva" target="muhteva"/>
  8     <indexitem text="Mecmua" target="mecmua"/>
  9 </index>

Bu dosyalar hazırlandığı zaman artık help'iniz gözükebilir demektir.

Help Pencerenin Görüntülenmesi

Önce Sun'ın sitesinden javahelp-2_0'ı download edip bir klasöre açın. jh2.0\demos\bin klasörünün içinde hsviewer.jar bulunmaktadır. Bu jar bir help set'ini gösterebilir.

c:\jdk\bin\java -jar D:\jh2.0\demos\bin\hsviewer.jar -helpset E:\Zafer\Godoro\HelpProject\godoro.hs

şeklinde çalıştırabilirsiniz. -helpset ile hs dosyasının path'i verilmelidir. Siz yukarıdaki satırı size göre ayarlamanız gerekir. Aşağıdaki pencere gözükmesi gerekir.

Java Programın İçinden Help Penceresini Göstermek

Sizin yaptığınız bir java programı ile bir help set gösterilebilir. Aşağıdaki örnekte bir JFrame yapıyoruz. Bu frame'e bir menu ekliyoruz. Bu menu içindeki "Content..." tıklandığı zaman yardım penceresiniz görüntülüyoruz

Göster Gizle Kopar Satır Gizle Satır Göster
  1 package com.godoro.help;
  2 import javax.help.*;
  3 import javax.swing.*;
  4 import javax.swing.event.*;
  5 import java.awt.*;
  6 import java.awt.event.*;
  7 import java.io.*;
  8 import java.net.*;
  9 public class HelpTest extends JFrame{
 10   JMenuBar menuBar;
 11   JMenu menu;
 12   JMenuItem item;
 13   HelpBroker hb;
 14   HelpSet hs;
 15   ActionListener helper;
 16   public HelpTest(String helpSet){
 17     super("Help");
 18     setBounds(50,50,400,400);
 19     menuBar=new JMenuBar();
 20     menu=new JMenu("Help");
 21     item=new JMenuItem("Content...");
 22     getContentPane().setLayout(new BorderLayout());
 23     menuBar.add(menu);
 24     menu.add(item);
 25     getContentPane().add(menuBar,BorderLayout.NORTH);
 26     try{
 27       File file=new File(helpSet);
 28       hs=new HelpSet(null,file.toURL());
 29     }catch(Exception e){
 30       System.out.println("HelpSet not found");
 31     }
 32     hb=hs.createHelpBroker();
 33     helper=new CSH.DisplayHelpFromSource(hb);
 34     item.addActionListener(helper);
 35     setVisible(true);
 36   }
 37   public static void main(String[] args){
 38     String hsPath="E:\\Zafer\\Godoro\\HelpProject\\godoro.hs";
 39     new HelpTest(hsPath);
 40   }
 41 }

String hsPath="E:\\Zafer\\Godoro\\HelpProject\\godoro.hs";

help set xml'in path'idir. Bu path'i alarak

File file=new File(helpSet);
hs=new HelpSet(null,file.toURL());

ile bir HelpSet nesnesi yaratıyoruz.

hb=hs.createHelpBroker();
helper=new CSH.DisplayHelpFromSource(hb);

ile bir helper ActionListener yaratıyoruz. Bu listener'ı menu item'a verdiğimiz zaman menu tıklandığında yardım penceresi görünür hale geliyor.

Doğrudan yardım penceresinin açılmasını sağlayabiliriz. Aşağıdaki örnekte godoro.hs dosyasını bir pencerede gösteriyor. Bu programda .hs dosyasını parametre olarak alırsanız başka helpset'leri de gösterebilirsiniz.

Göster Gizle Kopar Satır Gizle Satır Göster
  1 package com.godoro.help;
  2 import javax.help.*;
  3 import java.awt.*;
  4 import javax.swing.*;
  5 import java.net.*;
  6 import java.io.*;
  7 public class HelpFrame extends JFrame{
  8   public HelpFrame(){
  9     setBounds(0,0,500,500);
 10     HelpSet hs=getSet();
 11     JHelp help=new JHelp(hs);
 12     getContentPane().setLayout(new BorderLayout());
 13     getContentPane().add(help,BorderLayout.CENTER);
 14     setVisible(true);
 15   }
 16   private HelpSet getSet(){
 17     String helpHS="E:\\Zafer\\Godoro\\HelpProject\\godoro.hs";
 18     File file=new File(helpHS);
 19     try{
 20       URL hsURL = HelpSet.findHelpSet(null,helpHS);
 21       return new HelpSet(null,file.toURL());
 22     }catch(Exception ee){
 23       System.out.println("HelpSet "+ helpHS +" not found");
 24       return null;
 25     }
 26   }
 27   public static void main(String[] args) {
 28     new HelpFrame();
 29   }
 30 }

Yukarıdaki örnekten farklı olrak burada JHelp Component'ini kullanıyoruz. Bu component'i bir frame içine koyarak yardımı göstermiş oluyoruz.

Artık yaptığınız java programlarına rahatlıkla yardım ekleyebilirsiniz.

Dosya Listesi

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır