Title: Message
The help system.
 
Mystifier
 
/*
 * Created on Mar 27, 2005
 */
package mystifier.examples.helpsystem;
 
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.Hashtable;
 
import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.TreeNode;
 
/**
 * @author mystifier
 *
 */
public class HelpSystemExample extends JPanel implements ActionListener  {
 
 private JButton newButton;
 private JButton embedButton;
 private JFrame frame;
 public HelpSystemExample() {
  super(new GridBagLayout());
  
  GridBagConstraints c = new GridBagConstraints();
  
  newButton = new JButton("Show/Hide help in new window");
  newButton.addActionListener(this);
  c.weightx = 0.5;
  c.weighty = 0.01;
  c.anchor = GridBagConstraints.NORTHWEST;
  add(newButton,c);
  
  embedButton = new JButton("Show/Hide help embed in this window");
  embedButton.addActionListener(this);
  c.gridwidth = GridBagConstraints.REMAINDER;
  c.anchor = GridBagConstraints.NORTHEAST;
  add(embedButton,c);
 }
 /* (non-Javadoc)
  * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
  */
 public void actionPerformed(ActionEvent e) {
  if(e.getSource() == newButton)
  {
   if(frame == null)
   {   
    JFrame.setDefaultLookAndFeelDecorated(true);
   
          //Create and set up the window.
          frame = new JFrame("HelpSystem");
 
          //Create and set up the content pane.
          JPanel newContentPane = HelpSystem.getInstance();
          newContentPane.setOpaque(true); //content panes must be opaque
          frame.setContentPane(newContentPane);
 
          //Display the window.
          frame.setPreferredSize(new Dimension(400,400));
          frame.pack();
       frame.setVisible(true); 
   }
   else
   {
    frame.dispose();
    frame = null;
   }
 
  }
 
  if(e.getSource() == embedButton)
  {
   
   if(HelpSystem.getInstance().getParent() == this )
   {
    remove(HelpSystem.getInstance());
    this.updateUI();
   }
   else
   {
    GridBagConstraints c = new GridBagConstraints();
    c.fill = GridBagConstraints.BOTH;
    c.gridwidth = 2;
    c.weightx = 1.0;
    c.weighty = 1.0;
    add(HelpSystem.getInstance(),c);
    HelpSystem.getInstance().updateUI();
    frame.dispose();
    frame = null;
   }
   return;
  }
 }
 /**
     * Create the GUI and show it.  For thread safety,
     * this method should be invoked from the
     * event-dispatching thread.
     */
    private static void createAndShowGUI() {
        //Make sure we have nice window decorations.
        JFrame.setDefaultLookAndFeelDecorated(true);
 
        //Create and set up the window.
        JFrame frame = new JFrame("HelpSystemExample");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        //Create and set up the content pane.
        JPanel newContentPane = new HelpSystemExample();
        newContentPane.setOpaque(true); //content panes must be opaque
        frame.setContentPane(newContentPane);
 
        //Display the window.
        frame.setPreferredSize(new Dimension(400,400));
        frame.pack();
        frame.setVisible(true);
    }
    public static void main(String[] args) {
        //Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
 public static class HelpSystem extends JPanel implements TreeSelectionListener
 {
  private static HelpSystem instance = new HelpSystem();
  private JEditorPane contentPanel;
  private JTabbedPane navigationPanel;
  private Hashtable contextMap;
  private JTree contentTree;
  private JSplitPane splitPanel;
  private JList indexList;
 
  private HelpSystem()  {
   super(new BorderLayout());
   
   contextMap = new Hashtable();
   contextMap.put("google","http://www.google.com");
   contextMap.put("ebay","http://www.ebay.com");
   contextMap.put("sourceforge","http://www.sourceforge.net");
   
   navigationPanel = new JTabbedPane();
   
   contentTree = new JTree(contextMap);
   contentTree.addTreeSelectionListener(this);
   navigationPanel.addTab("Contents",contentTree); 
   
   indexList = new JList(contextMap.keySet().toArray());
   navigationPanel.addTab("Index",indexList); 
   
   contentPanel = new JEditorPane();
   splitPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,navigationPanel,(new JScrollPane(contentPanel)));
   splitPanel.setOneTouchExpandable(true);
   add(splitPanel);
   
  }
  public static HelpSystem getInstance()
  {
   return instance;
  }
  
  public void showHelp(String contextId)
  {
   try {
    contentPanel.setPage((String)contextMap.get(contextId));
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
 
  public void valueChanged(TreeSelectionEvent e) {
   TreeNode node = (TreeNode) contentTree.getLastSelectedPathComponent();
   if(node != null) showHelp(node.toString());
  }
  
 }
 
}
_______________________________________________
Java mailing list
[email protected]
http://mail.jug-delhi.org/mailman/listinfo/java_jug-delhi.org

Reply via email to