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: ZoomOutActionPlugin.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.KeyStroke;
037    
038    import org.jfree.report.modules.gui.swing.common.AbstractActionPlugin;
039    import org.jfree.report.modules.gui.swing.common.SwingGuiContext;
040    import org.jfree.report.modules.gui.swing.preview.PreviewPane;
041    import org.jfree.report.modules.gui.swing.preview.PreviewPaneUtilities;
042    import org.jfree.report.modules.gui.swing.preview.SwingPreviewModule;
043    import org.jfree.util.ResourceBundleSupport;
044    
045    /**
046     * Creation-Date: 16.11.2006, 18:52:30
047     *
048     * @author Thomas Morgner
049     */
050    public class ZoomOutActionPlugin  extends AbstractActionPlugin
051        implements ControlActionPlugin
052    {
053      private ResourceBundleSupport resources;
054    
055      public ZoomOutActionPlugin()
056      {
057      }
058    
059      public boolean initialize(final SwingGuiContext context)
060      {
061        super.initialize(context);
062        resources = new ResourceBundleSupport(context.getLocale(),
063            SwingPreviewModule.BUNDLE_NAME);
064        return true;
065      }
066    
067      protected String getConfigurationPrefix()
068      {
069        return "org.jfree.report.modules.gui.swing.preview.zoom-out.";
070      }
071    
072      /**
073       * Returns the display name for the export action.
074       *
075       * @return The display name.
076       */
077      public String getDisplayName()
078      {
079        return resources.getString("action.zoomOut.name");
080      }
081    
082      /**
083       * Returns the short description for the export action.
084       *
085       * @return The short description.
086       */
087      public String getShortDescription()
088      {
089        return resources.getString("action.zoomOut.description");
090      }
091    
092      /**
093       * Returns the small icon for the export action.
094       *
095       * @return The icon.
096       */
097      public Icon getSmallIcon()
098      {
099        final Locale locale = getContext().getLocale();
100        return getIconTheme().getSmallIcon(locale, "action.zoomOut.small-icon");
101      }
102    
103      /**
104       * Returns the large icon for the export action.
105       *
106       * @return The icon.
107       */
108      public Icon getLargeIcon()
109      {
110        final Locale locale = getContext().getLocale();
111        return getIconTheme().getLargeIcon(locale, "action.zoomOut.icon");
112      }
113    
114      /**
115       * Returns the accelerator key for the export action.
116       *
117       * @return The accelerator key.
118       */
119      public KeyStroke getAcceleratorKey()
120      {
121        return resources.getOptionalKeyStroke("action.zoomOut.accelerator");
122      }
123    
124      /**
125       * Returns the mnemonic key code.
126       *
127       * @return The code.
128       */
129      public Integer getMnemonicKey()
130      {
131        return resources.getOptionalMnemonic("action.zoomOut.mnemonic");
132      }
133    
134      public boolean configure(final PreviewPane reportPane)
135      {
136        final double nextZoomOut = PreviewPaneUtilities.getNextZoomOut
137            (reportPane.getZoom(), reportPane.getZoomFactors());
138        if (nextZoomOut == 0)
139        {
140          return false;
141        }
142        reportPane.setZoom(nextZoomOut);
143        return true;
144      }
145    
146    }