PageRenderTime 23ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCViewerGuiBuilder.java

https://gitlab.com/PawelCzarnota/GCViewer
Java | 319 lines | 258 code | 49 blank | 12 comment | 5 complexity | c83978efe56c630f418df5095c6effc4 MD5 | raw file
  1. package com.tagtraum.perf.gcviewer.ctrl.impl;
  2. import java.awt.Image;
  3. import java.awt.dnd.DnDConstants;
  4. import java.awt.dnd.DropTarget;
  5. import java.util.Map;
  6. import java.util.TreeMap;
  7. import javax.swing.Action;
  8. import javax.swing.JCheckBoxMenuItem;
  9. import javax.swing.JComboBox;
  10. import javax.swing.JDesktopPane;
  11. import javax.swing.JToggleButton;
  12. import com.tagtraum.perf.gcviewer.ctrl.GCModelLoaderController;
  13. import com.tagtraum.perf.gcviewer.ctrl.action.About;
  14. import com.tagtraum.perf.gcviewer.ctrl.action.Arrange;
  15. import com.tagtraum.perf.gcviewer.ctrl.action.Exit;
  16. import com.tagtraum.perf.gcviewer.ctrl.action.Export;
  17. import com.tagtraum.perf.gcviewer.ctrl.action.LicenseAction;
  18. import com.tagtraum.perf.gcviewer.ctrl.action.OSXFullScreen;
  19. import com.tagtraum.perf.gcviewer.ctrl.action.OpenFile;
  20. import com.tagtraum.perf.gcviewer.ctrl.action.OpenURL;
  21. import com.tagtraum.perf.gcviewer.ctrl.action.ReadmeAction;
  22. import com.tagtraum.perf.gcviewer.ctrl.action.Refresh;
  23. import com.tagtraum.perf.gcviewer.ctrl.action.Watch;
  24. import com.tagtraum.perf.gcviewer.ctrl.action.Zoom;
  25. import com.tagtraum.perf.gcviewer.ctrl.impl.FileDropTargetListener.DropFlavor;
  26. import com.tagtraum.perf.gcviewer.util.LocalisationHelper;
  27. import com.tagtraum.perf.gcviewer.view.ActionCommands;
  28. import com.tagtraum.perf.gcviewer.view.DesktopPane;
  29. import com.tagtraum.perf.gcviewer.view.GCViewerGui;
  30. import com.tagtraum.perf.gcviewer.view.GCViewerGuiMenuBar;
  31. import com.tagtraum.perf.gcviewer.view.GCViewerGuiToolBar;
  32. import com.tagtraum.perf.gcviewer.view.RecentGCResourcesMenu;
  33. import com.tagtraum.perf.gcviewer.view.model.GCPreferences;
  34. import com.tagtraum.perf.gcviewer.view.renderer.ConcurrentGcBegionEndRenderer;
  35. import com.tagtraum.perf.gcviewer.view.renderer.FullGCLineRenderer;
  36. import com.tagtraum.perf.gcviewer.view.renderer.GCRectanglesRenderer;
  37. import com.tagtraum.perf.gcviewer.view.renderer.GCTimesRenderer;
  38. import com.tagtraum.perf.gcviewer.view.renderer.IncLineRenderer;
  39. import com.tagtraum.perf.gcviewer.view.renderer.InitialMarkLevelRenderer;
  40. import com.tagtraum.perf.gcviewer.view.renderer.TotalHeapRenderer;
  41. import com.tagtraum.perf.gcviewer.view.renderer.TotalTenuredRenderer;
  42. import com.tagtraum.perf.gcviewer.view.renderer.TotalYoungRenderer;
  43. import com.tagtraum.perf.gcviewer.view.renderer.UsedHeapRenderer;
  44. import com.tagtraum.perf.gcviewer.view.renderer.UsedTenuredRenderer;
  45. import com.tagtraum.perf.gcviewer.view.renderer.UsedYoungRenderer;
  46. import com.tagtraum.perf.gcviewer.view.util.ImageHelper;
  47. import com.tagtraum.perf.gcviewer.view.util.OSXSupport;
  48. /**
  49. * This class is responsible for construction of {@link GCViewerGui}, whose construction is
  50. * quite complex. It is a simple implementation of the Builder pattern described in
  51. * "Design Patterns: Elements of Reusable Object-Oriented Software".
  52. *
  53. * @author <a href="mailto:gcviewer@gmx.ch">Joerg Wuethrich</a>
  54. * <p>created on: 07.02.2014</p>
  55. */
  56. public class GCViewerGuiBuilder {
  57. public void initGCViewerGui(GCViewerGui gui, GCModelLoaderController controller) {
  58. Image iconImage = ImageHelper.loadImage("gcviewericon.gif");
  59. gui.setIconImage(iconImage);
  60. Map<String, Action> actionMap = initActionMap(controller, gui, iconImage);
  61. GCViewerGuiMenuBar menuBar = initMenuBar(actionMap, gui, controller);
  62. GCViewerGuiToolBar toolBar = initToolBar(actionMap);
  63. JDesktopPane desktopPane = initDesktopPane(gui, controller);
  64. WatchStateController wsListener = new WatchStateController(menuBar.getWatchMenuItem(), toolBar.getWatchToggleButton());
  65. menuBar.getWatchMenuItem().addActionListener(wsListener);
  66. toolBar.getWatchToggleButton().addActionListener(wsListener);
  67. gui.setActionMap(actionMap);
  68. gui.setJMenuBar(menuBar);
  69. gui.setToolBar(toolBar);
  70. gui.setDesktopPane(desktopPane);
  71. }
  72. private Map<String, Action> initActionMap(GCModelLoaderController controller, GCViewerGui gui, Image icon) {
  73. Map<String, Action> actions = new TreeMap<String, Action>();
  74. actions.put(ActionCommands.EXIT.toString(), new Exit(gui));
  75. actions.put(ActionCommands.ABOUT.toString(), new About(gui));
  76. actions.put(ActionCommands.SHOW_README.toString(), new ReadmeAction(gui));
  77. actions.put(ActionCommands.SHOW_LICENSE.toString(), new LicenseAction(gui));
  78. actions.put(ActionCommands.OPEN_FILE.toString(), new OpenFile(controller, gui));
  79. actions.put(ActionCommands.OPEN_URL.toString(), new OpenURL(controller, gui));
  80. actions.put(ActionCommands.REFRESH.toString(), new Refresh(controller, gui));
  81. actions.put(ActionCommands.EXPORT.toString(), new Export(gui));
  82. actions.put(ActionCommands.ZOOM.toString(), new Zoom(gui));
  83. actions.put(ActionCommands.ARRANGE.toString(), new Arrange(gui));
  84. actions.put(ActionCommands.WATCH.toString(), new Watch(controller, gui));
  85. if (OSXSupport.isOSX()) {
  86. OSXSupport.initializeMacOSX(actions.get(ActionCommands.ABOUT.toString()),
  87. actions.get(ActionCommands.EXIT.toString()),
  88. null,
  89. icon,
  90. gui);
  91. if (OSXSupport.hasOSXFullScreenSupport()) {
  92. actions.put(ActionCommands.OSX_FULLSCREEN.toString(), new OSXFullScreen(gui));
  93. }
  94. }
  95. return actions;
  96. }
  97. private JDesktopPane initDesktopPane(GCViewerGui gui, GCModelLoaderController controller) {
  98. JDesktopPane desktopPane = new DesktopPane();
  99. desktopPane.setDropTarget(new DropTarget(gui,
  100. DnDConstants.ACTION_COPY,
  101. new FileDropTargetListener(controller, DropFlavor.OPEN)));
  102. return desktopPane;
  103. }
  104. private GCViewerGuiMenuBar initMenuBar(Map<String, Action> actions,
  105. GCViewerGui gui,
  106. GCModelLoaderController controller) {
  107. ViewMenuController viewMenuController = new ViewMenuController(gui);
  108. GCViewerGuiMenuBar menuBar = new GCViewerGuiMenuBar();
  109. // file menu
  110. menuBar.addToFileMenu(actions.get(ActionCommands.OPEN_FILE.toString()));
  111. menuBar.addToFileMenu(actions.get(ActionCommands.OPEN_URL.toString()));
  112. RecentGCResourcesMenu recentResourceNamesMenu = new RecentGCResourcesMenu();
  113. recentResourceNamesMenu.setIcon(ImageHelper.createEmptyImageIcon(20, 20));
  114. menuBar.addToFileMenu(recentResourceNamesMenu);
  115. menuBar.addToFileMenu(actions.get(ActionCommands.EXPORT.toString()));
  116. menuBar.addToFileMenu(actions.get(ActionCommands.REFRESH.toString()));
  117. menuBar.addToFileMenu(new JCheckBoxMenuItem(actions.get(ActionCommands.WATCH.toString())));
  118. if ( ! OSXSupport.isOSX()) {
  119. menuBar.addToFileMenu(actions.get(ActionCommands.EXIT.toString()));
  120. }
  121. RecentGCResourcesMenuController recentResourceNamesMenuController
  122. = new RecentGCResourcesMenuController(controller, recentResourceNamesMenu);
  123. recentResourceNamesMenu.getRecentResourceNamesModel().addRecentResourceNamesListener(recentResourceNamesMenuController);
  124. // view menu
  125. JCheckBoxMenuItem menuItemShowModelMetricsPanel = new JCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_show_data_panel"), true);
  126. menuItemShowModelMetricsPanel.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_show_data_panel").charAt(0));
  127. menuItemShowModelMetricsPanel.setIcon(ImageHelper.createEmptyImageIcon(20, 20));
  128. menuItemShowModelMetricsPanel.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_show_data_panel"));
  129. menuItemShowModelMetricsPanel.setActionCommand(GCPreferences.SHOW_MODEL_METRICS_PANEL);
  130. menuItemShowModelMetricsPanel.addActionListener(viewMenuController);
  131. menuBar.addToViewMenu(GCPreferences.SHOW_MODEL_METRICS_PANEL, menuItemShowModelMetricsPanel);
  132. menuBar.addSeparatorToViewMenu();
  133. JCheckBoxMenuItem menuItemShowDateStamp = new JCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_show_date_stamp"), true);
  134. menuItemShowDateStamp.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_show_date_stamp").charAt(0));
  135. menuItemShowDateStamp.setIcon(ImageHelper.createEmptyImageIcon(20, 20));
  136. menuItemShowDateStamp.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_show_date_stamp"));
  137. menuItemShowDateStamp.setActionCommand(GCPreferences.SHOW_DATE_STAMP);
  138. menuItemShowDateStamp.addActionListener(viewMenuController);
  139. menuBar.addToViewMenu(GCPreferences.SHOW_DATE_STAMP, menuItemShowDateStamp);
  140. menuBar.addSeparatorToViewMenu();
  141. JCheckBoxMenuItem menuItemAntiAlias = new JCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_antialias"), true);
  142. menuItemAntiAlias.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_antialias").charAt(0));
  143. menuItemAntiAlias.setIcon(ImageHelper.createEmptyImageIcon(20, 20));
  144. menuItemAntiAlias.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_antialias"));
  145. menuItemAntiAlias.setActionCommand(GCPreferences.ANTI_ALIAS);
  146. menuItemAntiAlias.addActionListener(viewMenuController);
  147. menuBar.addToViewMenu(GCPreferences.ANTI_ALIAS, menuItemAntiAlias);
  148. menuBar.addSeparatorToViewMenu();
  149. JCheckBoxMenuItem menuItemFullGCLines = new JCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_full_gc_lines"), true);
  150. menuItemFullGCLines.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_full_gc_lines").charAt(0));
  151. menuItemFullGCLines.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_full_gc_lines"));
  152. menuItemFullGCLines.setIcon(ImageHelper.createMonoColoredImageIcon(FullGCLineRenderer.DEFAULT_LINEPAINT, 20, 20));
  153. menuItemFullGCLines.setActionCommand(GCPreferences.FULL_GC_LINES);
  154. menuItemFullGCLines.addActionListener(viewMenuController);
  155. menuBar.addToViewMenu(GCPreferences.FULL_GC_LINES, menuItemFullGCLines);
  156. JCheckBoxMenuItem menuItemIncGCLines = new JCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_inc_gc_lines"), true);
  157. menuItemIncGCLines.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_inc_gc_lines").charAt(0));
  158. menuItemIncGCLines.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_inc_gc_lines"));
  159. menuItemIncGCLines.setIcon(ImageHelper.createMonoColoredImageIcon(IncLineRenderer.DEFAULT_LINEPAINT, 20, 20));
  160. menuItemIncGCLines.setActionCommand(GCPreferences.INC_GC_LINES);
  161. menuItemIncGCLines.addActionListener(viewMenuController);
  162. menuBar.addToViewMenu(GCPreferences.INC_GC_LINES, menuItemIncGCLines);
  163. JCheckBoxMenuItem menuItemGcTimesLine = new JCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_gc_times_line"), true);
  164. menuItemGcTimesLine.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_gc_times_line").charAt(0));
  165. menuItemGcTimesLine.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_gc_times_line"));
  166. menuItemGcTimesLine.setIcon(ImageHelper.createMonoColoredImageIcon(GCTimesRenderer.DEFAULT_LINEPAINT, 20, 20));
  167. menuItemGcTimesLine.setActionCommand(GCPreferences.GC_TIMES_LINE);
  168. menuItemGcTimesLine.addActionListener(viewMenuController);
  169. menuBar.addToViewMenu(GCPreferences.GC_TIMES_LINE, menuItemGcTimesLine);
  170. JCheckBoxMenuItem menuItemGcTimesRectangle = new JCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_gc_times_rectangles"), true);
  171. menuItemGcTimesRectangle.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_gc_times_rectangles").charAt(0));
  172. menuItemGcTimesRectangle.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_gc_times_rectangles"));
  173. menuItemGcTimesRectangle.setIcon(ImageHelper.createMonoColoredImageIcon(GCRectanglesRenderer.DEFAULT_LINEPAINT, 20, 20));
  174. menuItemGcTimesRectangle.setActionCommand(GCPreferences.GC_TIMES_RECTANGLES);
  175. menuItemGcTimesRectangle.addActionListener(viewMenuController);
  176. menuBar.addToViewMenu(GCPreferences.GC_TIMES_RECTANGLES, menuItemGcTimesRectangle);
  177. JCheckBoxMenuItem menuItemTotalMemory = new JCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_total_memory"), true);
  178. menuItemTotalMemory.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_total_memory").charAt(0));
  179. menuItemTotalMemory.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_total_memory"));
  180. menuItemTotalMemory.setIcon(ImageHelper.createMonoColoredImageIcon(TotalHeapRenderer.DEFAULT_LINEPAINT, 20, 20));
  181. menuItemTotalMemory.setActionCommand(GCPreferences.TOTAL_MEMORY);
  182. menuItemTotalMemory.addActionListener(viewMenuController);
  183. menuBar.addToViewMenu(GCPreferences.TOTAL_MEMORY, menuItemTotalMemory);
  184. JCheckBoxMenuItem menuItemTenuredMemory = new JCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_tenured_memory"), true);
  185. menuItemTenuredMemory.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_tenured_memory").charAt(0));
  186. menuItemTenuredMemory.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_tenured_memory"));
  187. menuItemTenuredMemory.setIcon(ImageHelper.createMonoColoredImageIcon(TotalTenuredRenderer.DEFAULT_LINEPAINT, 20, 20));
  188. menuItemTenuredMemory.setActionCommand(GCPreferences.TENURED_MEMORY);
  189. menuItemTenuredMemory.addActionListener(viewMenuController);
  190. menuBar.addToViewMenu(GCPreferences.TENURED_MEMORY, menuItemTenuredMemory);
  191. JCheckBoxMenuItem menuItemYoungMemory = new JCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_young_memory"), true);
  192. menuItemYoungMemory.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_young_memory").charAt(0));
  193. menuItemYoungMemory.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_young_memory"));
  194. menuItemYoungMemory.setIcon(ImageHelper.createMonoColoredImageIcon(TotalYoungRenderer.DEFAULT_LINEPAINT, 20, 20));
  195. menuItemYoungMemory.setActionCommand(GCPreferences.YOUNG_MEMORY);
  196. menuItemYoungMemory.addActionListener(viewMenuController);
  197. menuBar.addToViewMenu(GCPreferences.YOUNG_MEMORY, menuItemYoungMemory);
  198. JCheckBoxMenuItem menuItemUsedMemory = new JCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_used_memory"), true);
  199. menuItemUsedMemory.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_used_memory").charAt(0));
  200. menuItemUsedMemory.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_used_memory"));
  201. menuItemUsedMemory.setIcon(ImageHelper.createMonoColoredImageIcon(UsedHeapRenderer.DEFAULT_LINEPAINT, 20, 20));
  202. menuItemUsedMemory.setActionCommand(GCPreferences.USED_MEMORY);
  203. menuItemUsedMemory.addActionListener(viewMenuController);
  204. menuBar.addToViewMenu(GCPreferences.USED_MEMORY, menuItemUsedMemory);
  205. JCheckBoxMenuItem menuItemUsedTenuredMemory = new JCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_used_tenured_memory"), true);
  206. menuItemUsedTenuredMemory.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_used_tenured_memory").charAt(0));
  207. menuItemUsedTenuredMemory.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_used_tenured_memory"));
  208. menuItemUsedTenuredMemory.setIcon(ImageHelper.createMonoColoredImageIcon(UsedTenuredRenderer.DEFAULT_LINEPAINT, 20, 20));
  209. menuItemUsedTenuredMemory.setActionCommand(GCPreferences.USED_TENURED_MEMORY);
  210. menuItemUsedTenuredMemory.addActionListener(viewMenuController);
  211. menuBar.addToViewMenu(GCPreferences.USED_TENURED_MEMORY, menuItemUsedTenuredMemory);
  212. JCheckBoxMenuItem menuItemUsedYoungMemory = new JCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_used_young_memory"), true);
  213. menuItemUsedYoungMemory.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_used_young_memory").charAt(0));
  214. menuItemUsedYoungMemory.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_used_young_memory"));
  215. menuItemUsedYoungMemory.setIcon(ImageHelper.createMonoColoredImageIcon(UsedYoungRenderer.DEFAULT_LINEPAINT, 20, 20));
  216. menuItemUsedYoungMemory.setActionCommand(GCPreferences.USED_YOUNG_MEMORY);
  217. menuItemUsedYoungMemory.addActionListener(viewMenuController);
  218. menuBar.addToViewMenu(GCPreferences.USED_YOUNG_MEMORY, menuItemUsedYoungMemory);
  219. JCheckBoxMenuItem menuItemInitialMarkLevel = new JCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_initial_mark_level"), true);
  220. menuItemInitialMarkLevel.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_initial_mark_level").charAt(0));
  221. menuItemInitialMarkLevel.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_initial_mark_level"));
  222. menuItemInitialMarkLevel.setIcon(ImageHelper.createMonoColoredImageIcon(InitialMarkLevelRenderer.DEFAULT_LINEPAINT, 20, 20));
  223. menuItemInitialMarkLevel.setActionCommand(GCPreferences.INITIAL_MARK_LEVEL);
  224. menuItemInitialMarkLevel.addActionListener(viewMenuController);
  225. menuBar.addToViewMenu(GCPreferences.INITIAL_MARK_LEVEL, menuItemInitialMarkLevel);
  226. JCheckBoxMenuItem menuItemConcurrentGcBeginEnd = new JCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_concurrent_collection_begin_end"), true);
  227. menuItemConcurrentGcBeginEnd.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_concurrent_collection_begin_end").charAt(0));
  228. menuItemConcurrentGcBeginEnd.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_concurrent_collection_begin_end"));
  229. menuItemConcurrentGcBeginEnd.setIcon(ImageHelper.createMonoColoredImageIcon(ConcurrentGcBegionEndRenderer.CONCURRENT_COLLECTION_BEGIN, 20, 20));
  230. menuItemConcurrentGcBeginEnd.setActionCommand(GCPreferences.CONCURRENT_COLLECTION_BEGIN_END);
  231. menuItemConcurrentGcBeginEnd.addActionListener(viewMenuController);
  232. menuBar.addToViewMenu(GCPreferences.CONCURRENT_COLLECTION_BEGIN_END, menuItemConcurrentGcBeginEnd);
  233. if (OSXSupport.hasOSXFullScreenSupport()) {
  234. // TODO No saving in properties?
  235. menuBar.addSeparatorToViewMenu();
  236. menuBar.addToViewMenu(actions.get(ActionCommands.OSX_FULLSCREEN.toString()));
  237. }
  238. menuBar.addToWindowMenu(actions.get(ActionCommands.ARRANGE.toString()));
  239. menuBar.addSeparatorToWindowMenu();
  240. if ( ! OSXSupport.isOSX()) {
  241. // TODO why is the help menu not shown in OSX? -> is there never one?
  242. menuBar.addToHelpMenu(actions.get(ActionCommands.SHOW_README.toString()));
  243. menuBar.addToHelpMenu(actions.get(ActionCommands.SHOW_LICENSE.toString()));
  244. menuBar.addToHelpMenu(actions.get(ActionCommands.ABOUT.toString()));
  245. }
  246. return menuBar;
  247. }
  248. private GCViewerGuiToolBar initToolBar(Map<String, Action> actions) {
  249. GCViewerGuiToolBar toolBar = new GCViewerGuiToolBar();
  250. toolBar.setFloatable(false);
  251. toolBar.add(actions.get(ActionCommands.OPEN_FILE.toString()));
  252. toolBar.add(actions.get(ActionCommands.OPEN_URL.toString()));
  253. toolBar.add(actions.get(ActionCommands.EXPORT.toString()));
  254. toolBar.add(actions.get(ActionCommands.REFRESH.toString()));
  255. JToggleButton watchToggle = new JToggleButton();
  256. watchToggle.setAction(actions.get(ActionCommands.WATCH.toString()));
  257. watchToggle.setText("");
  258. toolBar.addWatchToggleButton(watchToggle);
  259. toolBar.addSeparator();
  260. JComboBox<String> zoomComboBox = new JComboBox<String>(new String[] {"1%", "5%", "10%", "50%", "100%", "200%", "300%", "500%", "1000%", "5000%"});
  261. zoomComboBox.setSelectedIndex(2);
  262. zoomComboBox.setAction(actions.get(ActionCommands.ZOOM.toString()));
  263. zoomComboBox.setEditable(true);
  264. zoomComboBox.setMaximumSize(zoomComboBox.getPreferredSize());
  265. toolBar.addZoomComboBox(zoomComboBox);
  266. toolBar.addSeparator();
  267. toolBar.add(actions.get(ActionCommands.ABOUT.toString()));
  268. return toolBar;
  269. }
  270. }