EMMA Coverage Report (generated Sun Apr 20 22:38:01 CEST 2008)
[all classes][net.sf.jomic.ui]

COVERAGE SUMMARY FOR SOURCE FILE [JomicMenuBar.java]

nameclass, %method, %block, %line, %
JomicMenuBar.java100% (1/1)96%  (24/25)88%  (1294/1464)91%  (253.4/279)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class JomicMenuBar100% (1/1)96%  (24/25)88%  (1294/1464)91%  (253.4/279)
clearFileOpenRecent (): void 0%   (0/1)0%   (0/6)0%   (0/3)
addItem (JMenu, JMenuItem, String, int): void 100% (1/1)66%  (23/35)75%  (4.5/6)
<static initializer> 100% (1/1)68%  (17/25)70%  (1.4/2)
addItem (JMenuItem, String, int, boolean): void 100% (1/1)68%  (41/60)75%  (9/12)
actionPerformed (ActionEvent): void 100% (1/1)69%  (9/13)83%  (2.5/3)
addPropertyItem (JMenu, JMenuItem, int, int): void 100% (1/1)69%  (18/26)80%  (4/5)
addGoToURIItem (JMenu, JMenuItem, String): void 100% (1/1)76%  (37/49)83%  (7.5/9)
addItem (JMenu, JMenuItem, String, int, int): void 100% (1/1)76%  (37/49)83%  (7.5/9)
setKeyAndMask (JMenuItem, int, int): void 100% (1/1)81%  (17/21)90%  (4.5/5)
setUIState (String): void 100% (1/1)85%  (103/121)95%  (25.6/27)
createHelpMenu (): JMenu 100% (1/1)89%  (123/138)92%  (22/24)
createViewMenu (): JMenu 100% (1/1)90%  (313/347)89%  (51/57)
createFileMenu (): JMenu 100% (1/1)91%  (181/198)91%  (29/32)
setEnabledGoMenu (boolean, boolean): void 100% (1/1)98%  (42/43)99%  (5.9/6)
JomicMenuBar (): void 100% (1/1)100% (78/78)100% (21/21)
addActionListener (ActionListener): void 100% (1/1)100% (5/5)100% (2/2)
addPropertyItem (JMenu, JMenuItem): void 100% (1/1)100% (6/6)100% (2/2)
addPropertyItem (JMenu, JMenuItem, int): void 100% (1/1)100% (7/7)100% (2/2)
createEditMenu (): JMenu 100% (1/1)100% (82/82)100% (14/14)
createGoMenu (): JMenu 100% (1/1)100% (79/79)100% (13/13)
dispose (): void 100% (1/1)100% (49/49)100% (15/15)
ifNotNullRemove (JMenu): void 100% (1/1)100% (6/6)100% (3/3)
removeActionListener (ActionListener): void 100% (1/1)100% (5/5)100% (2/2)
setEnabledOpenPreviousAndNext (boolean, boolean): void 100% (1/1)100% (9/9)100% (3/3)
updateFileOpenRecent (): void 100% (1/1)100% (7/7)100% (2/2)

1// Jomic - a viewer for comic book archives.
2// Copyright (C) 2004-2008 Thomas Aglassinger
3//
4// This program is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8//
9// This program is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12// GNU General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with this program.  If not, see <http://www.gnu.org/licenses/>.
16package net.sf.jomic.ui;
17 
18import java.awt.Event;
19import java.awt.Toolkit;
20import java.awt.event.ActionEvent;
21import java.awt.event.ActionListener;
22import java.awt.event.KeyEvent;
23import java.util.Iterator;
24import java.util.LinkedList;
25import java.util.List;
26 
27import javax.swing.ButtonGroup;
28import javax.swing.JCheckBoxMenuItem;
29import javax.swing.JMenu;
30import javax.swing.JMenuBar;
31import javax.swing.JMenuItem;
32import javax.swing.JRadioButtonMenuItem;
33import javax.swing.KeyStroke;
34import javax.swing.text.DefaultEditorKit;
35 
36import net.roydesign.app.AboutJMenuItem;
37import net.roydesign.app.Application;
38import net.roydesign.app.QuitJMenuItem;
39import net.sf.jomic.common.ComicSheetRenderSettings;
40import net.sf.jomic.common.PropertyConstants;
41import net.sf.jomic.common.Settings;
42import net.sf.jomic.tools.ActionDelegate;
43import net.sf.jomic.tools.ImageRenderSettings;
44import net.sf.jomic.tools.ImageTools;
45import net.sf.jomic.tools.KeyValuePair;
46import net.sf.jomic.tools.LocaleTools;
47import net.sf.jomic.tools.SystemTools;
48import net.sf.jomic.tools.UiTools;
49import net.sf.wraplog.Logger;
50 
51/**
52 *  Menubar for all comic operations.
53 *
54 * @author    Thomas Aglassinger
55 */
56public class JomicMenuBar extends JMenuBar implements ActionListener
57{
58    private static Logger logger = Logger.getLogger(JomicMenuBar.class);
59    private AboutJMenuItem aboutItem;
60    private List actionListenersToRemoveList;
61    private JMenuItem closeItem;
62    private JMenuItem contactAuthorItem;
63    private JMenuItem convertItem;
64    private JMenuItem copyItem;
65    private JMenuItem cutItem;
66    private ActionDelegate delegate;
67    private JMenu editMenu;
68    private JMenuItem exportAllItem;
69    private JMenuItem exportItem;
70    private JMenu fileMenu;
71    private JRadioButtonMenuItem fitActualSizeItem;
72    private JRadioButtonMenuItem fitAllItem;
73    private JRadioButtonMenuItem fitHeightItem;
74    private JRadioButtonMenuItem fitWidthItem;
75    private JMenuItem fullScreenItem;
76    private JMenuItem goFirstItem;
77    private JMenuItem goLastItem;
78    private JMenu goMenu;
79    private JMenuItem goNextItem;
80    private JMenuItem goPageItem;
81    private JMenuItem goPreviousItem;
82    private JMenuItem helpItem;
83    private JMenu helpMenu;
84    private JMenuItem homePageItem;
85    private JomicApplication jomicApplication;
86    private LocaleTools localeTools;
87    private JMenuItem mailingListPageItem;
88    private JMenuItem newItem;
89    private JMenuItem openItem;
90    private JMenuItem openNextItem;
91    private JMenuItem openPreviousItem;
92    private OpenRecentMenu openRecentMenu;
93    private JMenuItem pasteItem;
94    private QuitJMenuItem quitItem;
95    private JMenuItem reportBugItem;
96    private JMenuItem requestFeatureItem;
97    private JMenuItem revealItem;
98    private JMenuItem rotateLeftItem;
99    private JMenuItem rotateRightItem;
100    private ColorSettingMenuItem setBackgoundColorItem;
101    private Settings settings;
102    private JMenuItem systemInfoItem;
103    private SystemTools systemTools;
104    private BooleanSettingMenuItem toggleRotateOnlySinglePortraitImages;
105    private JCheckBoxMenuItem toggleShowInfoItem;
106    private BooleanSettingMenuItem toggleShowThumbsItem;
107    private BooleanSettingMenuItem toggleShowToolbarItem;
108    private BooleanSettingMenuItem toggleSwapLeftAndRightImageItem;
109    private BooleanSettingMenuItem toggleTwoPagesItem;
110    private UiTools uiTools;
111    private JMenu viewMenu;
112 
113    public JomicMenuBar() {
114        super();
115        settings = Settings.instance();
116        jomicApplication = JomicApplication.instance();
117        localeTools = LocaleTools.instance();
118        systemTools = SystemTools.instance();
119        uiTools = UiTools.instance();
120 
121        delegate = new ActionDelegate(logger);
122        actionListenersToRemoveList = new LinkedList();
123 
124        // Create menus.
125        fileMenu = createFileMenu();
126        editMenu = createEditMenu();
127        viewMenu = createViewMenu();
128        goMenu = createGoMenu();
129        helpMenu = createHelpMenu();
130 
131        // Build menu bar.
132        add(fileMenu);
133        //TODO: add(editMenu);
134        add(viewMenu);
135        add(goMenu);
136        add(helpMenu);
137 
138        uiTools.fillMnemonics(this);
139        updateFileOpenRecent();
140        setUIState(UIStates.EMPTY);
141    }
142 
143    /**
144     *  Enable/disable "Go" menu depending on page.
145     */
146    void setEnabledGoMenu(final boolean isFirst, final boolean isLast) {
147        goFirstItem.setEnabled(!isFirst);
148        goLastItem.setEnabled(!isLast);
149        goNextItem.setEnabled(!isLast);
150        goPreviousItem.setEnabled(!isFirst);
151        goPageItem.setEnabled(!(isFirst && isLast));
152    }
153 
154    /**
155     *  Enable/disable "File > Open next" menu item.
156     */
157    void setEnabledOpenPreviousAndNext(final boolean hasPreviousFile, final boolean hasNextFile) {
158        openPreviousItem.setEnabled(hasPreviousFile);
159        openNextItem.setEnabled(hasNextFile);
160    }
161 
162    void setUIState(String state) {
163        assert UIStates.isValidState(state);
164        if (state.equals(UIStates.EMPTY)) {
165            openItem.setEnabled(true);
166            viewMenu.setEnabled(false);
167            goMenu.setEnabled(false);
168            openRecentMenu.setEnabledUnlessEmpty();
169            setEnabledOpenPreviousAndNext(false, false);
170            revealItem.setEnabled(false);
171            exportItem.setEnabled(false);
172            exportAllItem.setEnabled(false);
173        } else if (state.equals(UIStates.OPENING)) {
174            openItem.setEnabled(false);
175            openRecentMenu.setEnabled(false);
176            setEnabledOpenPreviousAndNext(false, false);
177            revealItem.setEnabled(false);
178            exportItem.setEnabled(false);
179            exportAllItem.setEnabled(false);
180        } else if (state.equals(UIStates.VIEWING)) {
181            openItem.setEnabled(true);
182            viewMenu.setEnabled(true);
183            goMenu.setEnabled(true);
184            openRecentMenu.setEnabledUnlessEmpty();
185            revealItem.setEnabled(true);
186            exportItem.setEnabled(true);
187            exportAllItem.setEnabled(true);
188            // We cannot call setEnabledOpenPreviousAndNext() here because we
189            //do not know if a previous/next file exist.
190        } else {
191            assert false : "state = " + state;
192        }
193    }
194 
195    private void setKeyAndMask(JMenuItem item, int key, int additionalMask) {
196        assert item != null;
197        if (key != 0) {
198            int mask = additionalMask | Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
199 
200            item.setAccelerator(KeyStroke.getKeyStroke(key, mask));
201        }
202    }
203 
204    public final void actionPerformed(ActionEvent event) {
205        assert event != null;
206        delegate.actionPerformed(event);
207    }
208 
209    public final void addActionListener(ActionListener listener) {
210        delegate.addActionListener(listener);
211    }
212 
213    public final void removeActionListener(ActionListener listener) {
214        delegate.removeActionListener(listener);
215    }
216 
217    /**
218     *  Update <i>File &gt; Open recent</i> menu with values currently stored in settings.
219     *
220     * @see    Settings#getRecentFiles()
221     */
222    final void updateFileOpenRecent() {
223        openRecentMenu.updateMenuItems(settings.getRecentFiles());
224    }
225 
226    public void dispose() {
227        if (openRecentMenu != null) {
228            openRecentMenu.dispose();
229        }
230 
231        // Remove all action listeners.
232        Iterator removeListenersRider = actionListenersToRemoveList.iterator();
233 
234        while (removeListenersRider.hasNext()) {
235            KeyValuePair pair = (KeyValuePair) removeListenersRider.next();
236            JMenuItem item = (JMenuItem) pair.getKey();
237            ActionListener listener = (ActionListener) pair.getValue();
238 
239            item.removeActionListener(listener);
240        }
241        actionListenersToRemoveList.clear();
242 
243        ifNotNullRemove(helpMenu);
244        ifNotNullRemove(goMenu);
245        ifNotNullRemove(viewMenu);
246        //TODO: ifNotNullRemove(editMenu);
247        ifNotNullRemove(fileMenu);
248    }
249 
250    void clearFileOpenRecent() {
251        settings.clearRecentFiles();
252        updateFileOpenRecent();
253    }
254 
255    private void addGoToURIItem(JMenu menu, JMenuItem item, String uri) {
256        assert menu != null;
257        assert item != null;
258        assert uri != null;
259 
260        GoToURIActionListener listener = new GoToURIActionListener(uri);
261 
262        item.addActionListener(listener);
263        actionListenersToRemoveList.add(new KeyValuePair(item, listener));
264        item.setActionCommand(Commands.DUMMY_GO_TO_URI);
265        menu.add(item);
266    }
267 
268    private void addItem(JMenuItem item, String command, int key, boolean useShift) {
269        assert item != null;
270        assert command != null;
271 
272        int additionalMask;
273 
274        if (useShift) {
275            additionalMask = Event.SHIFT_MASK;
276        } else {
277            additionalMask = 0;
278        }
279        assert item != null;
280        assert command != null;
281 
282        item.setActionCommand(command);
283        item.addActionListener(this);
284        actionListenersToRemoveList.add(new KeyValuePair(item, this));
285        setKeyAndMask(item, key, additionalMask);
286    }
287 
288    private void addItem(JMenu menu, JMenuItem item, String command, int key) {
289        assert menu != null;
290        assert item != null;
291        assert command != null;
292 
293        addItem(item, command, key, false);
294        menu.add(item);
295    }
296 
297    private void addItem(JMenu menu, JMenuItem item, String command, int key, int additionalMask) {
298        assert menu != null;
299        assert item != null;
300        assert command != null;
301 
302        item.setActionCommand(command);
303        item.addActionListener(this);
304        actionListenersToRemoveList.add(new KeyValuePair(item, this));
305        setKeyAndMask(item, key, additionalMask);
306        menu.add(item);
307    }
308 
309    private void addPropertyItem(JMenu menu, JMenuItem item) {
310        addPropertyItem(menu, item, 0);
311    }
312 
313    private void addPropertyItem(JMenu menu, JMenuItem item, int key) {
314        addPropertyItem(menu, item, key, 0);
315    }
316 
317    private void addPropertyItem(JMenu menu, JMenuItem item, int key, int additonalMask) {
318        assert menu != null;
319        assert item != null;
320        menu.add(item);
321        setKeyAndMask(item, key, additonalMask);
322    }
323 
324    private JMenu createEditMenu() {
325        JMenu result = localeTools.createMenu(LocaleTools.MENU_EDIT);
326 
327        cutItem = new JMenuItem(new DefaultEditorKit.CutAction());
328        cutItem.setText(localeTools.getMenuItemLabel(LocaleTools.MENU_EDIT, "cut"));
329        cutItem.setMnemonic(KeyEvent.VK_T);
330        result.add(cutItem);
331        copyItem = new JMenuItem(new DefaultEditorKit.CopyAction());
332        copyItem.setText(localeTools.getMenuItemLabel(LocaleTools.MENU_EDIT, "copy"));
333        copyItem.setMnemonic(KeyEvent.VK_C);
334        result.add(copyItem);
335        pasteItem = new JMenuItem(new DefaultEditorKit.PasteAction());
336        pasteItem.setText(localeTools.getMenuItemLabel(LocaleTools.MENU_EDIT, "paste"));
337        pasteItem.setMnemonic(KeyEvent.VK_P);
338        result.add(pasteItem);
339        return result;
340    }
341 
342    private JMenu createFileMenu() {
343        JMenu result = localeTools.createMenu(LocaleTools.MENU_FILE);
344        Application application = Application.getInstance();
345 
346        newItem = localeTools.createMenuItem(LocaleTools.MENU_FILE, "newComic");
347        openItem = localeTools.createMenuItem(LocaleTools.MENU_FILE, "open");
348        openRecentMenu = new OpenRecentMenu(delegate);
349        openRecentMenu.setText(localeTools.getMenuItemLabel(LocaleTools.MENU_FILE, "openRecent"));
350        openPreviousItem = localeTools.createMenuItem(LocaleTools.MENU_FILE, "openPrevious");
351        openNextItem = localeTools.createMenuItem(LocaleTools.MENU_FILE, "openNext");
352        closeItem = localeTools.createMenuItem(LocaleTools.MENU_FILE, "close");
353        convertItem = localeTools.createMenuItem(LocaleTools.MENU_FILE, "convert");
354        revealItem = localeTools.createMenuItem(LocaleTools.MENU_FILE, "reveal");
355        exportItem = localeTools.createMenuItem(LocaleTools.MENU_FILE, "exportImage");
356        exportAllItem = localeTools.createMenuItem(LocaleTools.MENU_FILE, "exportAllImages");
357 
358        addItem(result, newItem, Commands.NEW_COMIC, KeyEvent.VK_N);
359        addItem(result, openItem, Commands.OPEN, KeyEvent.VK_O);
360        result.add(openRecentMenu);
361        addItem(result, openPreviousItem, Commands.OPEN_PREVIOUS, KeyEvent.VK_O, Event.ALT_MASK);
362        addItem(result, openNextItem, Commands.OPEN_NEXT, KeyEvent.VK_O, Event.SHIFT_MASK);
363        result.addSeparator();
364        if (systemTools.isMacOSX()) {
365            addItem(result, closeItem, Commands.CLOSE, KeyEvent.VK_W);
366        }
367        addItem(result, convertItem, Commands.CONVERT, KeyEvent.VK_C, Event.SHIFT_MASK);
368        addItem(result, revealItem, Commands.REVEAL, KeyEvent.VK_R, Event.SHIFT_MASK);
369        addItem(result, exportItem, Commands.EXPORT, KeyEvent.VK_E, Event.SHIFT_MASK);
370        addItem(result, exportAllItem, Commands.EXPORT_ALL, KeyEvent.VK_E, Event.SHIFT_MASK | Event.ALT_MASK);
371        quitItem = application.getQuitJMenuItem();
372        if (QuitJMenuItem.isAutomaticallyPresent()) {
373            addItem(quitItem, Commands.QUIT, KeyEvent.VK_Q, false);
374        } else {
375            result.addSeparator();
376            quitItem.setText(localeTools.getMenuItemLabel(LocaleTools.MENU_FILE, "quit"));
377            addItem(result, quitItem, Commands.QUIT, KeyEvent.VK_Q);
378        }
379        return result;
380    }
381 
382    private JMenu createGoMenu() {
383        JMenu result = localeTools.createMenu(LocaleTools.MENU_GO);
384 
385        goFirstItem = localeTools.createMenuItem(LocaleTools.MENU_GO, "first");
386        goLastItem = localeTools.createMenuItem(LocaleTools.MENU_GO, "last");
387        goNextItem = localeTools.createMenuItem(LocaleTools.MENU_GO, "next");
388        goPageItem = localeTools.createMenuItem(LocaleTools.MENU_GO, "toPage");
389        goPreviousItem = localeTools.createMenuItem(LocaleTools.MENU_GO, "previous");
390 
391        addItem(result, goFirstItem, Commands.FIRST_PAGE, 0);
392        addItem(result, goPreviousItem, Commands.GO_PREVIOUS, KeyEvent.VK_LEFT);
393        addItem(result, goNextItem, Commands.GO_NEXT, KeyEvent.VK_RIGHT);
394        addItem(result, goLastItem, Commands.LAST_PAGE, 0);
395        result.addSeparator();
396        addItem(result, goPageItem, Commands.GO_PAGE, KeyEvent.VK_L);
397        return result;
398    }
399 
400    private JMenu createHelpMenu() {
401        Application application = Application.getInstance();
402 
403        JMenu result = localeTools.createMenu(LocaleTools.MENU_HELP);
404 
405        helpItem = localeTools.createMenuItem(LocaleTools.MENU_HELP, "help");
406        systemInfoItem = localeTools.createMenuItem(LocaleTools.MENU_HELP, "systemInformation");
407        homePageItem = localeTools.createMenuItem(LocaleTools.MENU_HELP, "homepage");
408        mailingListPageItem = localeTools.createMenuItem(LocaleTools.MENU_HELP, "mailingList");
409        reportBugItem = localeTools.createMenuItem(LocaleTools.MENU_HELP, "reportBug");
410        requestFeatureItem = localeTools.createMenuItem(LocaleTools.MENU_HELP, "requestFeature");
411        contactAuthorItem = localeTools.createMenuItem(LocaleTools.MENU_HELP, "contactAuthor");
412 
413        aboutItem = application.getAboutJMenuItem();
414        if (AboutJMenuItem.isAutomaticallyPresent()) {
415            addItem(aboutItem, Commands.ABOUT, 0, false);
416        } else {
417            aboutItem.setText(localeTools.getMenuItemLabel(LocaleTools.MENU_HELP, "about"));
418            addItem(result, aboutItem, Commands.ABOUT, 0);
419        }
420        addItem(result, helpItem, Commands.HELP, 0);
421        systemTools.setHelpAccelerato(helpItem);
422        addItem(result, systemInfoItem, Commands.SYSTEM_INFO, 0);
423        result.addSeparator();
424        addGoToURIItem(result, homePageItem, "http://jomic.sourceforge.net/");
425        addGoToURIItem(result, mailingListPageItem, "http://lists.sourceforge.net/lists/listinfo/jomic-users");
426        addGoToURIItem(result, reportBugItem, "http://sourceforge.net/tracker/?group_id=103788&atid=635943");
427        addGoToURIItem(
428                result,
429                requestFeatureItem,
430                "http://sourceforge.net/tracker/?group_id=103788&atid=635946");
431        addGoToURIItem(result, contactAuthorItem, "mailto:roskakori@users.sourceforge.net?subject=Jomic");
432        return result;
433    }
434 
435    private JMenu createViewMenu() {
436        JMenu result = localeTools.createMenu(LocaleTools.MENU_VIEW);
437        ButtonGroup zoomGroup = new ButtonGroup();
438 
439        fitActualSizeItem = localeTools.createRadioButtonMenuItem(LocaleTools.MENU_VIEW, zoomGroup, "actualSize");
440        fitAllItem = localeTools.createRadioButtonMenuItem(LocaleTools.MENU_VIEW, zoomGroup, "zoomToFit");
441        fitHeightItem = localeTools.createRadioButtonMenuItem(LocaleTools.MENU_VIEW, zoomGroup, "zoomToFitHeight");
442        fitWidthItem = localeTools.createRadioButtonMenuItem(LocaleTools.MENU_VIEW, zoomGroup, "zoomToFitWidth");
443 
444        // Select zoom mode radio button according to settings
445        String currentZoomState = settings.getScaleMode();
446        JRadioButtonMenuItem selectedFitItem = null;
447 
448        if (currentZoomState.equals(ImageTools.SCALE_ACTUAL)) {
449            selectedFitItem = fitActualSizeItem;
450        } else if (currentZoomState.equals(ImageTools.SCALE_FIT)) {
451            selectedFitItem = fitAllItem;
452        } else if (currentZoomState.equals(ImageTools.SCALE_HEIGHT)) {
453            selectedFitItem = fitHeightItem;
454        } else if (currentZoomState.equals(ImageTools.SCALE_WIDTH)) {
455            selectedFitItem = fitWidthItem;
456        } else {
457            assert false : "scaleMode=" + currentZoomState;
458        }
459        selectedFitItem.setSelected(true);
460 
461        fullScreenItem = localeTools.createMenuItem(LocaleTools.MENU_VIEW, "fullScreen");
462        rotateLeftItem = localeTools.createMenuItem(LocaleTools.MENU_VIEW, "rotateLeft");
463        rotateRightItem = localeTools.createMenuItem(LocaleTools.MENU_VIEW, "rotateRight");
464 
465        String rotateOnlySinglePortraitImagesLable = localeTools.getMenuItemLabel(
466                LocaleTools.MENU_VIEW, "rotateOnlySinglePortraitImages");
467 
468        toggleRotateOnlySinglePortraitImages = new BooleanSettingMenuItem(
469                rotateOnlySinglePortraitImagesLable, ComicSheetRenderSettings.ROTATE_ONLY_SINGLE_PORTRAIT_IMAGES,
470                Commands.TOGGLE_ROTATE_ONLY_SINGLE_PORTRAIT_IMAGES, delegate);
471 
472        String useBlurLabel = localeTools.getMenuItemLabel(LocaleTools.MENU_VIEW, "useBlur");
473        JMenuItem useBlurItem = new BooleanSettingMenuItem(useBlurLabel, PropertyConstants.USE_BLUR);
474 
475        String showThumbsLabel = localeTools.getMenuItemLabel(LocaleTools.MENU_VIEW, "showThumbs");
476 
477        toggleShowThumbsItem = new BooleanSettingMenuItem(
478                showThumbsLabel, PropertyConstants.SHOW_THUMBS, Commands.TOGGLE_SHOW_THUMBS, delegate);
479 
480        String showToolbarLabel = localeTools.getMenuItemLabel(LocaleTools.MENU_VIEW, "showToolbar");
481 
482        toggleShowToolbarItem = new BooleanSettingMenuItem(
483                showToolbarLabel, PropertyConstants.SHOW_TOOLBAR, Commands.TOGGLE_SHOW_TOOLBAR, delegate);
484 
485        String readFromRightToLeftLabel = localeTools.getMenuItemLabel(LocaleTools.MENU_VIEW, "readFromRightToLeft");
486 
487        toggleSwapLeftAndRightImageItem = new BooleanSettingMenuItem(
488                readFromRightToLeftLabel, ComicSheetRenderSettings.SWAP_LEFT_AND_RIGHT_IMAGE,
489                Commands.TOGGLE_SWAP_LEFT_AND_RIGHT_IMAGE, delegate);
490 
491        String showTwoPagesLabel = localeTools.getMenuItemLabel(LocaleTools.MENU_VIEW, "showTwoPages");
492 
493        toggleTwoPagesItem = new BooleanSettingMenuItem(
494                showTwoPagesLabel, ComicSheetRenderSettings.SHOW_TWO_PAGES, Commands.TOGGLE_SHOW_TWO_PAGES, delegate);
495 
496        String showInformationLabel = localeTools.getMenuItemLabel(LocaleTools.MENU_VIEW, "showInformation");
497 
498        toggleShowInfoItem = new BooleanSettingMenuItem(
499                showInformationLabel, PropertyConstants.SHOW_INFO, Commands.TOGGLE_SHOW_INFO, delegate);
500 
501        JMenuItem changeBlurSettingsItem = new JMenuItem(jomicApplication.getChangeBlurSettingsAction());
502        String setBackgroundColorLabel = localeTools.getMenuItemLabel(LocaleTools.MENU_VIEW, "setBackgroundColor");
503 
504        setBackgoundColorItem = new ColorSettingMenuItem(
505                setBackgroundColorLabel, ImageRenderSettings.FILL_COLOR);
506 
507        addItem(result, fitActualSizeItem, Commands.FIT_ACTUAL_SIZE, KeyEvent.VK_0);
508        addItem(result, fitAllItem, Commands.FIT_WIDTH_AND_HEIGHT, KeyEvent.VK_1);
509        addItem(result, fitHeightItem, Commands.FIT_HEIGHT, KeyEvent.VK_2);
510        addItem(result, fitWidthItem, Commands.FIT_WIDTH, KeyEvent.VK_3);
511        // TODO: Use sensible shortcut key for full screen.
512        addItem(result, fullScreenItem, Commands.FULL_SCREEN, KeyEvent.VK_4);
513        result.addSeparator();
514        addItem(result, rotateLeftItem, Commands.ROTATE_LEFT, KeyEvent.VK_L, Event.ALT_MASK);
515        addItem(result, rotateRightItem, Commands.ROTATE_RIGHT, KeyEvent.VK_R, Event.ALT_MASK);
516        // TODO: addPropertyItem(result, toggleRotateOnlySinglePortraitImages);
517        result.add(useBlurItem);
518        result.addSeparator();
519        // TODO: Use KeyEvent.VK_T and Event.ALT_MASK
520        // Note: I already tried that, but the shortcuts did not show up properly in the menu
521        // if Jomic was launched from finder. Launched from eclipse, it worked. However,
522        // in both cases, the keyboard input was processed properly - even with wrong visual
523        // shortcuts in the menu. Maybe this is a bug in apple's swing implementation.
524        addPropertyItem(result, toggleTwoPagesItem, KeyEvent.VK_T);
525        addPropertyItem(result, toggleSwapLeftAndRightImageItem, KeyEvent.VK_J);
526        addPropertyItem(result, toggleShowToolbarItem, KeyEvent.VK_B);
527        addPropertyItem(result, toggleShowThumbsItem, KeyEvent.VK_U);
528        addPropertyItem(result, toggleShowInfoItem, KeyEvent.VK_I);
529        result.addSeparator();
530        result.add(changeBlurSettingsItem);
531        addPropertyItem(result, setBackgoundColorItem);
532        return result;
533    }
534 
535    private void ifNotNullRemove(JMenu menu) {
536        if (menu != null) {
537            remove(menu);
538        }
539    }
540}

[all classes][net.sf.jomic.ui]
EMMA 2.0.4217 (C) Vladimir Roubtsov