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: GoToActionPlugin.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.util.Locale;
035    import javax.swing.Icon;
036    import javax.swing.JOptionPane;
037    import javax.swing.KeyStroke;
038    
039    import org.jfree.report.modules.gui.swing.common.AbstractActionPlugin;
040    import org.jfree.report.modules.gui.swing.common.SwingGuiContext;
041    import org.jfree.report.modules.gui.swing.preview.PreviewPane;
042    import org.jfree.report.modules.gui.swing.preview.SwingPreviewModule;
043    import org.jfree.util.Log;
044    import org.jfree.util.ResourceBundleSupport;
045    
046    /**
047     * Creation-Date: 16.11.2006, 16:34:55
048     *
049     * @author Thomas Morgner
050     */
051    public class GoToActionPlugin extends AbstractActionPlugin
052        implements ControlActionPlugin
053    {
054      private ResourceBundleSupport resources;
055    
056      public GoToActionPlugin()
057      {
058      }
059    
060      public boolean initialize(final SwingGuiContext context)
061      {
062        super.initialize(context);
063        resources = new ResourceBundleSupport(context.getLocale(),
064            SwingPreviewModule.BUNDLE_NAME);
065        return true;
066      }
067    
068      protected String getConfigurationPrefix()
069      {
070        return "org.jfree.report.modules.gui.swing.preview.go-to.";
071      }
072    
073      /**
074       * Returns the display name for the export action.
075       *
076       * @return The display name.
077       */
078      public String getDisplayName()
079      {
080        return resources.getString("action.gotopage.name");
081      }
082    
083      /**
084       * Returns the short description for the export action.
085       *
086       * @return The short description.
087       */
088      public String getShortDescription()
089      {
090        return resources.getString("action.gotopage.description");
091      }
092    
093      /**
094       * Returns the small icon for the export action.
095       *
096       * @return The icon.
097       */
098      public Icon getSmallIcon()
099      {
100        final Locale locale = getContext().getLocale();
101        return getIconTheme().getSmallIcon(locale, "action.gotopage.small-icon");
102      }
103    
104      /**
105       * Returns the large icon for the export action.
106       *
107       * @return The icon.
108       */
109      public Icon getLargeIcon()
110      {
111        final Locale locale = getContext().getLocale();
112        return getIconTheme().getLargeIcon(locale, "action.gotopage.icon");
113      }
114    
115      /**
116       * Returns the accelerator key for the export action.
117       *
118       * @return The accelerator key.
119       */
120      public KeyStroke getAcceleratorKey()
121      {
122        return resources.getKeyStroke("action.gotopage.accelerator");
123      }
124    
125      /**
126       * Returns the mnemonic key code.
127       *
128       * @return The code.
129       */
130      public Integer getMnemonicKey()
131      {
132        return resources.getMnemonic("action.gotopage.mnemonic");
133      }
134    
135      public boolean configure(final PreviewPane reportPane)
136      {
137        final String result = JOptionPane.showInputDialog(getContext().getWindow(),
138                resources.getString("dialog.gotopage.title"),
139                resources.getString("dialog.gotopage.message"),
140                JOptionPane.OK_CANCEL_OPTION);
141        if (result == null)
142        {
143          return false;
144        }
145        try
146        {
147          final int page = Integer.parseInt(result);
148    
149          if (page > 0 && page <= reportPane.getNumberOfPages())
150          {
151            reportPane.setPageNumber(page);
152          }
153        }
154        catch (Exception ex)
155        {
156          Log.info("DefaultGotoAction: swallowed an exception");
157        }
158        return false;
159      }
160    
161    }