Java tutorial
// BlogBridge -- RSS feed reader, manager, and web based service // Copyright (C) 2002-2006 by R. Pito Salas // // 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., 59 Temple Place, // Suite 330, Boston, MA 02111-1307 USA // // Contact: R. Pito Salas // mailto:pitosalas@users.sourceforge.net // More information: about BlogBridge // http://www.blogbridge.com // http://sourceforge.net/projects/blogbridge // // $Id: BBMenuBuilder.java,v 1.71 2008/04/01 08:35:54 spyromus Exp $ // package com.salas.bb.views.mainframe; import com.jgoodies.looks.BorderStyle; import com.jgoodies.looks.HeaderStyle; import com.jgoodies.looks.Options; import com.jgoodies.looks.plastic.PlasticLookAndFeel; import com.jgoodies.looks.windows.WindowsLookAndFeel; import com.jgoodies.uif.action.ActionManager; import com.jgoodies.uif.action.ToggleAction; import com.jgoodies.uif.builder.MenuBuilder; import com.jgoodies.uif.util.SystemUtils; import com.salas.bb.core.ApplicationLauncher; import com.salas.bb.core.actions.ActionsTable; import com.salas.bb.sentiments.SentimentsFeature; import com.salas.bb.utils.i18n.Strings; import javax.swing.*; import java.awt.*; /** * Manages the Creation of the BlogBridge menus. */ public class BBMenuBuilder { /** * <code>MENUBAR_MARGIN</code>- margin to be used for menu bar. (according to Karsten :-) */ private static final Insets MENUBAR_MARGIN = new Insets(0, 4, 0, 0); /** * Build BlogBridge menu bar. * * @return the resulting menu bar. */ public JMenuBar buildMenuBar() { JMenuBar myMenu = new JMenuBar(); myMenu.setMargin(MENUBAR_MARGIN); // Apply some special style hints for JGoodies myMenu.putClientProperty(Options.HEADER_STYLE_KEY, HeaderStyle.BOTH); myMenu.putClientProperty(WindowsLookAndFeel.BORDER_STYLE_KEY, BorderStyle.SEPARATOR); myMenu.putClientProperty(PlasticLookAndFeel.BORDER_STYLE_KEY, BorderStyle.SEPARATOR); myMenu.add(buildGuidesMenu()); myMenu.add(buildFeedsMenu()); myMenu.add(buildArticlesMenu()); myMenu.add(buildToolsMenu()); myMenu.add(buildHelpMenu()); return myMenu; } /** * Create the Guides menu. * * @return the created menu. */ private JMenu buildGuidesMenu() { MenuBuilder bld = createBuilder("guides"); JMenu menu = bld.getMenu(); menu.add(ActionManager.get(ActionsTable.CMD_GUIDE_WHATIS)); bld.addSeparator(); menu.add(buildGuideGetLatestSubmenu()); bld.addSeparator(); menu.add(ActionManager.get(ActionsTable.CMD_GUIDE_ADD)); menu.add(ActionManager.get(ActionsTable.CMD_GUIDE_DELETE)); menu.add(ActionManager.get(ActionsTable.CMD_GUIDE_MERGE)); menu.add(ActionManager.get(ActionsTable.CMD_GUIDE_SUBSCRIBE_READINGLIST)); menu.add(ActionManager.get(ActionsTable.CMD_GUIDE_POST_TO_BLOG)); bld.addSeparator(); menu.add(buildGuideMarkReadSubmenu()); menu.add(buildGuideMarkUnreadSubmenu()); bld.addSeparator(); menu.add(ActionManager.get(ActionsTable.CMD_GUIDE_IMPORT)); menu.add(ActionManager.get(ActionsTable.CMD_GUIDE_EXPORT)); bld.addSeparator(); menu.add(ActionManager.get(ActionsTable.CMD_GUIDE_SORT_BY_TITLE)); menu.add(ActionManager.get(ActionsTable.CMD_GUIDE_PROPERTIES)); if (!SystemUtils.IS_OS_MAC) { bld.addSeparator(); menu.add(ActionManager.get(ActionsTable.CMD_BB_EXIT)); } return bld.getMenu(); } /** * Creates menu builder for a given menu. * * @param menu menu name. * * @return builder. */ private static MenuBuilder createBuilder(String menu) { String title = Strings.message("mainmenu." + menu); char mnemonic = Strings.message("mainmenu." + menu + ".m").charAt(0); return new MenuBuilder(title, mnemonic); } /** * Creates the Get Latest guides submenu. * * @return created menu. */ private JMenu buildGuideGetLatestSubmenu() { MenuBuilder bld = createBuilder("guides.getlatest"); JMenu menu = bld.getMenu(); menu.add(ActionManager.get(ActionsTable.CMD_GUIDE_RELOAD_ALL_SM)); menu.add(ActionManager.get(ActionsTable.CMD_GUIDE_RELOAD_SM)); return bld.getMenu(); } /** * Creates the Mark as Read submenu. * * @return created menu. */ private JMenu buildGuideMarkReadSubmenu() { MenuBuilder bld = createBuilder("guides.markread"); JMenu menu = bld.getMenu(); menu.add(ActionManager.get(ActionsTable.CMD_GUIDE_MARK_ALL_READ)); menu.add(ActionManager.get(ActionsTable.CMD_GUIDE_MARK_READ_SM)); return bld.getMenu(); } /** * Creates the Mark as Unread submenu. * * @return created menu. */ private JMenu buildGuideMarkUnreadSubmenu() { MenuBuilder bld = createBuilder("guides.markunread"); JMenu menu = bld.getMenu(); menu.add(ActionManager.get(ActionsTable.CMD_GUIDE_MARK_ALL_UNREAD)); menu.add(ActionManager.get(ActionsTable.CMD_GUIDE_MARK_UNREAD_SM)); return bld.getMenu(); } /** * Create the Feeds Menu. * * @return the created menu. */ private JMenu buildFeedsMenu() { MenuBuilder bld = createBuilder("feeds"); JMenu menu = bld.getMenu(); menu.add(ActionManager.get(ActionsTable.CMD_FEED_WHATIS)); bld.addSeparator(); menu.add(ActionManager.get(ActionsTable.CMD_FEED_RELOAD)); bld.addSeparator(); menu.add(ActionManager.get(ActionsTable.CMD_FEED_SUBSCRIBE)); menu.add(ActionManager.get(ActionsTable.CMD_FEED_ADD_SMART_FEED)); menu.add(ActionManager.get(ActionsTable.CMD_FEED_DELETE)); menu.add(ActionManager.get(ActionsTable.CMD_FEED_PROPERTIES)); menu.add(ActionManager.get(ActionsTable.CMD_FEED_TAGS)); menu.add(ActionManager.get(ActionsTable.CMD_FEED_POST_TO_BLOG)); menu.add(ActionManager.get(ActionsTable.CMD_FEED_DISCOVER)); bld.addSeparator(); menu.add(ActionManager.get(ActionsTable.CMD_FEED_BROWSE)); bld.addSeparator(); menu.add(ActionManager.get(ActionsTable.CMD_FEED_MARK_READ)); menu.add(ActionManager.get(ActionsTable.CMD_FEED_MARK_UNREAD)); bld.addSeparator(); menu.add(ActionManager.get(ActionsTable.CMD_FEED_RATING_UP)); menu.add(ActionManager.get(ActionsTable.CMD_FEED_RATING_DOWN)); return bld.getMenu(); } /** * Create the Articles Menu. * * @return the created menu. */ private JMenu buildArticlesMenu() { MenuBuilder bld = createBuilder("articles"); JMenu menu = bld.getMenu(); menu.add(ActionManager.get(ActionsTable.CMD_ARTICLE_WHATIS)); bld.addSeparator(); bld.add(ActionManager.get(ActionsTable.CMD_ARTICLE_MARK_READ)); bld.add(ActionManager.get(ActionsTable.CMD_ARTICLE_MARK_UNREAD)); bld.addSeparator(); bld.add(ActionManager.get(ActionsTable.CMD_ARTICLE_BROWSE)); bld.add(ActionManager.get(ActionsTable.CMD_ARTICLE_COPY_LINK)); bld.add(ActionManager.get(ActionsTable.CMD_ARTICLE_SEND_LINK)); bld.add(ActionManager.get(ActionsTable.CMD_ARTICLE_POST_TO_BLOG)); bld.add(ActionManager.get(ActionsTable.CMD_ARTICLE_TWEET_THIS)); bld.addSeparator(); bld.add(ActionManager.get(ActionsTable.CMD_ARTICLE_PROPERTIES)); bld.add(ActionManager.get(ActionsTable.CMD_ARTICLE_TAGS)); bld.add(ActionManager.get(ActionsTable.CMD_ARTICLE_PIN_UNPIN)); bld.add(ActionManager.get(ActionsTable.CMD_ARTICLE_DISCOVER)); bld.addSeparator(); bld.add(ActionManager.get(ActionsTable.CMD_ARTICLE_GOTO_NEXT_UNREAD)); bld.addSeparator(); bld.addToggle((ToggleAction) ActionManager.get(ActionsTable.CMD_ARTICLE_SHOW_ALL)); bld.addToggle((ToggleAction) ActionManager.get(ActionsTable.CMD_ARTICLE_SHOW_UNREAD)); bld.addToggle((ToggleAction) ActionManager.get(ActionsTable.CMD_ARTICLE_SHOW_PINNED)); if (SentimentsFeature.isAvailable()) { bld.addToggle((ToggleAction) ActionManager.get(ActionsTable.CMD_ARTICLE_SHOW_POSITIVE)); bld.addToggle((ToggleAction) ActionManager.get(ActionsTable.CMD_ARTICLE_SHOW_NEGATIVE)); bld.addToggle((ToggleAction) ActionManager.get(ActionsTable.CMD_ARTICLE_SHOW_NON_NEGATIVE)); } bld.addSeparator(); bld.add(buildViewModeSubmenu()); bld.add(buildTextSizeSubmenu()); return bld.getMenu(); } /** * Builds and creates the ViewMode submenu for the Articles menu. * * @return created menu. */ private JMenu buildViewModeSubmenu() { MenuBuilder bld = createBuilder("articles.viewmode"); bld.addToggle((ToggleAction) ActionManager.get(ActionsTable.CMD_ARTICLE_VIEWMODE_MINI_TB)); bld.addToggle((ToggleAction) ActionManager.get(ActionsTable.CMD_ARTICLE_VIEWMODE_BRIEF_TB)); bld.addToggle((ToggleAction) ActionManager.get(ActionsTable.CMD_ARTICLE_VIEWMODE_FULL_TB)); return bld.getMenu(); } /** * Create and populate the Text Size submenuu * @return the created menu. */ private JMenu buildTextSizeSubmenu() { MenuBuilder bld = createBuilder("articles.textsize"); bld.add(ActionManager.get(ActionsTable.CMD_ARTICLE_FONT_BIGGER)); bld.add(ActionManager.get(ActionsTable.CMD_ARTICLE_FONT_SMALLER)); return bld.getMenu(); } /** * Create the BlogBridge menu. * * @return the created menu. */ private JMenu buildToolsMenu() { MenuBuilder bld = createBuilder("tools"); JMenu menu = bld.getMenu(); menu.add(ActionManager.get(ActionsTable.CMD_BB_SEARCH)); menu.add(ActionManager.get(ActionsTable.CMD_BB_WHATS_HOT)); menu.add(ActionManager.get(ActionsTable.CMD_BB_STATISTICS)); menu.addSeparator(); menu.add(ActionManager.get(ActionsTable.CMD_BB_CLEANUP_WIZARD)); menu.add(ActionManager.get(ActionsTable.CMD_SYNC_FULL)); menu.add(ActionManager.get(ActionsTable.CMD_BB_SERVICE)); menu.addSeparator(); menu.add(ActionManager.get(ActionsTable.CMD_BB_ACTIVITY)); menu.add(ActionManager.get(ActionsTable.CMD_BB_ONLINEOFFLINE)); menu.add(ActionManager.get(ActionsTable.CMD_BB_FORGET_PASSWORDS)); // We don't do any updates checks when under JWS if (ApplicationLauncher.isAutoUpdatesEnabled()) { menu.add(ActionManager.get(ActionsTable.CMD_BB_CHECK_FOR_UPDATES)); } menu.add(buildDatabaseSubmenu()); menu.add(buildSettingsSubmenu()); return bld.getMenu(); } /** * Creates the Database submenu. * * @return created menu. */ private JMenu buildDatabaseSubmenu() { MenuBuilder bld = createBuilder("tools.database"); JMenu menu = bld.getMenu(); menu.add(ActionManager.get(ActionsTable.CMD_BB_DATABASE_COMPACT)); menu.add(ActionManager.get(ActionsTable.CMD_BB_DATABASE_BACKUP)); return bld.getMenu(); } /** * Creates the Sesttings submenu. * * @return created menu. */ private JMenu buildSettingsSubmenu() { MenuBuilder bld = createBuilder("tools.settings"); JMenu menu = bld.getMenu(); menu.add(ActionManager.get(ActionsTable.CMD_BB_BLOGSTARZ)); menu.add(ActionManager.get(ActionsTable.CMD_BB_PLUGIN_MANAGER)); menu.add(ActionManager.get(ActionsTable.CMD_BB_IMAGE_BLOCKER)); menu.add(ActionManager.get(ActionsTable.CMD_BB_SENTIMENT_ANALYSIS)); // On a Mac, the Preferences and Exit commands are on the Application // menu not here. if (!SystemUtils.IS_OS_MAC) { menu.add(ActionManager.get(ActionsTable.CMD_BB_PREFERENCES)); } return bld.getMenu(); } /** * Create the Help Menu. * * @return the created menu. */ private JMenu buildHelpMenu() { MenuBuilder bld = createBuilder("help"); JMenu menu = bld.getMenu(); /* menu.add(ActionManager.get(ActionsTable.CMD_OPEN_HELP)); */ menu.add(ActionManager.get(ActionsTable.CMD_BB_FAQ)); menu.add(ActionManager.get(ActionsTable.CMD_BB_HOME)); menu.add(ActionManager.get(ActionsTable.CMD_BB_SEND_FEEDBACK)); menu.add(ActionManager.get(ActionsTable.CMD_BB_TIP_OF_THE_DAY)); menu.add(ActionManager.get(ActionsTable.CMD_BB_KEYBOARD_SHORTCUTS)); if (!SystemUtils.IS_OS_MAC) { menu.add(ActionManager.get(ActionsTable.CMD_BB_ABOUT)); } return bld.getMenu(); } }