/* Copyright (C) 2003-2011 Raik Nagel
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
(at your option) 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.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
// function : content for the about dialog
//
// modified :
// 28.07.2005
// - hide license button
package net.sf.jabref.about ;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.URL;
import javax.swing.*;
import javax.swing.border.BevelBorder;
import net.sf.jabref.GUIGlobals;
import net.sf.jabref.Globals;
public class ExtendedInfoPanel extends JPanel implements AnimationListener, ActionListener
{
private JEditorPane textPane ;
private JScrollPane scroller ;
private CardLayout cards ;
private JButton close ;
private JButton license ;
private AboutPanel about ;
private JPanel infoPanel ;
private boolean animationIsRunning = true ;
private ActionListener mainListener ;
public ExtendedInfoPanel(ActionListener mainFrame)
{
mainListener = mainFrame ;
// animated area
about = new AboutPanel();
about.addAnimationListener(this);
// scrallable html infos
textPane = new JEditorPane() ;
textPane.setEditable( false ) ;
// URL helpURL = getClass().getResource( "/help/About.html" ) ;
// try to load about.html for the locale language
URL helpURL = getClass().getResource( GUIGlobals.getLocaleHelpPath() + GUIGlobals.aboutPage) ;
// about.html could not detected => try to load the default version
if (helpURL == null)
{
helpURL = getClass().getResource( GUIGlobals.helpPre + GUIGlobals.aboutPage) ;
}
if ( helpURL != null )
{
try
{
textPane.setPage( helpURL ) ;
}
catch ( IOException e )
{
System.err.println( "Attempted to read a bad URL: " + helpURL ) ;
}
}
else
{
System.err.println( "Couldn't find file: About.html" ) ;
}
scroller = new JScrollPane(textPane) ; //, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS) ;
scroller.setPreferredSize( about.getSize());
// overlapped animated/scrollable area
infoPanel = new JPanel() ;
cards = new CardLayout() ;
infoPanel.setLayout( cards);
infoPanel.add(about, "ani") ;
infoPanel.add(scroller, "inf") ;
// Buttons
JPanel buttonPanel = new JPanel() ;
buttonPanel.setBackground( Color.white);
buttonPanel.setLayout( new GridLayout(1, 2, 10, 20) );
buttonPanel.setBorder( BorderFactory.createBevelBorder( BevelBorder.RAISED));
buttonPanel.add( Box.createGlue() ) ;
close = new JButton( Globals.lang("Skip") ) ;
close.addActionListener( this ) ;
close.setActionCommand( "close" ) ;
close.setFocusable( false ) ;
license = new JButton( Globals.lang("License") ) ;
license.addActionListener( this ) ;
license.setActionCommand( "license" ) ;
license.setFocusable( false ) ;
buttonPanel.add( close ) ;
// buttonPanel.add( license ) ;
buttonPanel.add( Box.createGlue() ) ;
// main panel
this.setLayout( new BorderLayout(0, 0));
this.add(infoPanel, BorderLayout.CENTER) ;
this.add(buttonPanel, BorderLayout.SOUTH) ;
// about.startAnimation();
}
public void animationReady()
{
animationIsRunning = false ;
cards.show(infoPanel, "inf");
close.setText(Globals.lang("Close"));
}
public void actionPerformed( ActionEvent e )
{
String cmd = e.getActionCommand() ;
if ( cmd.equals( "close" ) )
{
if (animationIsRunning)
{
about.skipAnimation(); // implicit call of AnimationListener.animationReady()
}
else
{
setVisible( false ) ;
mainListener.actionPerformed(e);
}
}
else if ( cmd.equals( "license" ) )
{
// showLicense() ;
mainListener.actionPerformed(e);
}
}
}