Package org.analyse.core.gui.panel

Source Code of org.analyse.core.gui.panel.HelpPanel$ActionHandler

/*
* 05/23/2003 - 10:18:41
*
* HelpPanel.java - Copyright (C) 2003 Dreux Loic dreuxl@free.fr
*
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 59 Temple
* Place - Suite 330, Boston, MA 02111-1307, USA.
*/

package org.analyse.core.gui.panel;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Deque;
import java.util.LinkedList;

import javax.swing.BorderFactory;
import javax.swing.JEditorPane;
import javax.swing.JLabel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JViewport;
import javax.swing.SwingUtilities;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import javax.swing.text.Document;

import org.analyse.core.gui.action.BasicAction;
import org.analyse.core.gui.menu.ClipboardPopupMenu;
import org.analyse.core.modules.AnalysePanel;
import org.analyse.core.modules.ClipboardInterface;
import org.analyse.core.util.Constantes;
import org.analyse.core.util.GUIUtilities;
import org.analyse.core.util.Utilities;
import org.analyse.main.Main;

public class HelpPanel extends AnalysePanel implements HyperlinkListener,
        ClipboardInterface
{
    /**
   *
   */
  private static final long serialVersionUID = 6619857514551235043L;

  private BasicAction goback, home;

    private JEditorPane editor;

    private JPopupMenu popup;

    private ActionHandler actionHandler;

    private Deque<URL> history;

    public HelpPanel()
    {

        super(Constantes.HELP);
       
        try {
            editor = new JEditorPane(Main.class
                    .getResource("help/whatsnew.html"));
            editor.setEditable(false);
            editor.addHyperlinkListener(this);

            popup = new ClipboardPopupMenu(false, true, false);
            editor.addMouseListener(new MouseHandler());
            actionHandler = new ActionHandler();
            history = new LinkedList<URL>();
            initAction();
            //initToolbar();

            this.setLayout(new BorderLayout());
            this.setBorder(BorderFactory.createEmptyBorder(3, 3, 0, 3));

            this.add(BorderLayout.CENTER, new JScrollPane(editor) {
                /**
         *
         */
        private static final long serialVersionUID = 6256786451390655839L;

        {
                    JViewport vp = this.getViewport();
                    vp.add(editor);
                }
            });
            //this.add(BorderLayout.NORTH, toolbar);
        } catch (MalformedURLException e) {
            this.add(new JLabel( Utilities.getLangueMessage( Constantes.MESSAGE_CHARGEMENT_AIDE_ECHEC ) )  );
        } catch (IOException e) {
            this.add ( new JLabel( Utilities.getLangueMessage( Constantes.MESSAGE_CHARGEMENT_AIDE_ECHEC ) ) )
            ;
        }
    }


    private void initAction() {
     
        goback = new BasicAction(
            Utilities.getLangueMessage( Constantes.MESSAGE_PRECEDENT ) ,
            Utilities.getLangueMessage( Constantes.MESSAGE_RETOUR_PAGE_PRECEDENTE) ,
                Constantes.BACK, GUIUtilities.getImageIcon(Constantes.FILE_PNG_LEFT), 0, null);
       
        goback.addActionListener(actionHandler);
       
        home = new BasicAction(
            Utilities.getLangueMessage( Constantes.MESSAGE_HOME ) ,
            Utilities.getLangueMessage( Constantes.MESSAGE_RETOUR_PAGE_PRINCIPALE ) ,
            Constantes.HOME,
                GUIUtilities.getImageIcon(Constantes.FILE_PNG_HOME), 0, null);
       
        home.addActionListener(actionHandler);
    }

    public boolean undoEnabled() {
        return false;
    }

    public boolean redoEnabled()
    {
        return false;
    }

    public boolean copyEnabled()
    {
        return false;
    }

    public boolean pasteEnabled()
    {
        return false;
    }

    public void cut()
    {
        //System.out.println("Cut");
    }

    public void copy()
    {
        editor.copy();
    }

    public void paste()
    {
        //System.out.println("Paste");
    }

    public void hyperlinkUpdate(HyperlinkEvent e)
    {
     
        if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
            history.addFirst(editor.getPage());
            Cursor c = editor.getCursor();
            Cursor waitCursor = Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR);
            editor.setCursor(waitCursor);
            SwingUtilities.invokeLater(new PageLoader(e.getURL(), c));
        }
    }

    private class MouseHandler extends MouseAdapter
    {
        public void mouseReleased(MouseEvent e)
        {
            if (e.isPopupTrigger())
                popup.show(e.getComponent(), e.getX(), e.getY());
        }
    }

    private class PageLoader implements Runnable
    {
        private URL url;

        private Cursor cursor;

        public PageLoader(URL url, Cursor cursor)
        {
            this.url = url;
            this.cursor = cursor;
        }

        public void run()
        {
            if (url == null) {
                editor.setCursor(cursor);
                Container parent = editor.getParent();
                parent.repaint();
                return;
            }

            Document doc = editor.getDocument();
            try {
                editor.setPage(url);
            } catch (IOException e) {
                editor.setDocument(doc);
                getToolkit().beep();
            } finally {
                url = null;
                SwingUtilities.invokeLater(this);
            }
        }
    }

    private class ActionHandler implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            String action = e.getActionCommand();

            try {
                if (action.equals(Constantes.BACK)) {
                    if (!history.isEmpty())
                        editor.setPage(history.removeFirst());
                }
                if (action.equals(Constantes.HOME))
                    editor.setPage(Main.class
                            .getResource("help/whatsnew.html"));
            } catch (IOException exp) {
            }
        }
    }
}
TOP

Related Classes of org.analyse.core.gui.panel.HelpPanel$ActionHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.