001    /**
002     * ========================================
003     * JFreeReport : a free Java report library
004     * ========================================
005     *
006     * Project Info:  http://reporting.pentaho.org/
007     *
008     * (C) Copyright 2000-2007, by Object Refinery Limited, Pentaho Corporation and Contributors.
009     *
010     * This library is free software; you can redistribute it and/or modify it under the terms
011     * of the GNU Lesser General Public License as published by the Free Software Foundation;
012     * either version 2.1 of the License, or (at your option) any later version.
013     *
014     * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
015     * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
016     * See the GNU Lesser General Public License for more details.
017     *
018     * You should have received a copy of the GNU Lesser General Public License along with this
019     * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
020     * Boston, MA 02111-1307, USA.
021     *
022     * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
023     * in the United States and other countries.]
024     *
025     * ------------
026     * $Id: AboutActionPlugin.java 3525 2007-10-16 11:43:48Z tmorgner $
027     * ------------
028     * (C) Copyright 2000-2005, by Object Refinery Limited.
029     * (C) Copyright 2005-2007, by Pentaho Corporation.
030     */
031    
032    package org.jfree.report.modules.gui.swing.preview.actions;
033    
034    import java.awt.Dialog;
035    import java.awt.Frame;
036    import java.awt.Window;
037    import java.util.Locale;
038    import javax.swing.Icon;
039    import javax.swing.KeyStroke;
040    
041    import org.jfree.report.JFreeReportInfo;
042    import org.jfree.report.modules.gui.swing.common.AbstractActionPlugin;
043    import org.jfree.report.modules.gui.swing.common.SwingGuiContext;
044    import org.jfree.report.modules.gui.swing.common.SwingUtil;
045    import org.jfree.report.modules.gui.swing.preview.PreviewPane;
046    import org.jfree.report.modules.gui.swing.preview.SwingPreviewModule;
047    import org.jfree.ui.RefineryUtilities;
048    import org.jfree.ui.about.AboutDialog;
049    import org.jfree.util.ResourceBundleSupport;
050    
051    /**
052     * Creation-Date: 16.11.2006, 16:34:55
053     *
054     * @author Thomas Morgner
055     */
056    public class AboutActionPlugin extends AbstractActionPlugin
057        implements ControlActionPlugin
058    {
059      private ResourceBundleSupport resources;
060      private AboutDialog aboutFrame;
061    
062      public AboutActionPlugin()
063      {
064      }
065    
066      public boolean initialize(final SwingGuiContext context)
067      {
068        super.initialize(context);
069        resources = new ResourceBundleSupport(context.getLocale(),
070            SwingPreviewModule.BUNDLE_NAME);
071        return true;
072      }
073    
074      protected String getConfigurationPrefix()
075      {
076        return "org.jfree.report.modules.gui.swing.preview.about.";
077      }
078    
079      /**
080       * Returns the display name for the export action.
081       *
082       * @return The display name.
083       */
084      public String getDisplayName()
085      {
086        return resources.getString("action.about.name");
087      }
088    
089      /**
090       * Returns the short description for the export action.
091       *
092       * @return The short description.
093       */
094      public String getShortDescription()
095      {
096        return resources.getString("action.about.description");
097      }
098    
099      /**
100       * Returns the small icon for the export action.
101       *
102       * @return The icon.
103       */
104      public Icon getSmallIcon()
105      {
106        final Locale locale = getContext().getLocale();
107        return getIconTheme().getSmallIcon(locale, "action.about.small-icon");
108      }
109    
110      /**
111       * Returns the large icon for the export action.
112       *
113       * @return The icon.
114       */
115      public Icon getLargeIcon()
116      {
117        final Locale locale = getContext().getLocale();
118        return getIconTheme().getLargeIcon(locale, "action.about.icon");
119      }
120    
121      /**
122       * Returns the accelerator key for the export action.
123       *
124       * @return The accelerator key.
125       */
126      public KeyStroke getAcceleratorKey()
127      {
128        return null;
129      }
130    
131      /**
132       * Returns the mnemonic key code.
133       *
134       * @return The code.
135       */
136      public Integer getMnemonicKey()
137      {
138        return resources.getMnemonic("action.about.mnemonic");
139      }
140    
141      public boolean configure(final PreviewPane reportPane)
142      {
143        if (aboutFrame == null)
144        {
145          final String title = getDisplayName();
146          // look where we have been added ...
147          final Window w = SwingUtil.getWindowAncestor(reportPane);
148          if (w instanceof Frame)
149          {
150            aboutFrame = new AboutDialog
151                    ((Frame) w, title, JFreeReportInfo.getInstance());
152          }
153          else if (w instanceof Dialog)
154          {
155            aboutFrame = new AboutDialog
156                    ((Dialog) w, title, JFreeReportInfo.getInstance());
157          }
158          else
159          {
160            aboutFrame = new AboutDialog
161                    (title, JFreeReportInfo.getInstance());
162          }
163          aboutFrame.pack();
164          RefineryUtilities.centerFrameOnScreen(aboutFrame);
165        }
166    
167        aboutFrame.setVisible(true);
168        aboutFrame.requestFocus();
169        return true;
170      }
171    
172    }