diff --git a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/action/RefreshWatchDog.java b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/action/RefreshWatchDog.java
index b597b880..c6306ec8 100644
--- a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/action/RefreshWatchDog.java
+++ b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/action/RefreshWatchDog.java
@@ -18,60 +18,69 @@
* @author Hendrik Schreiber
*/
public class RefreshWatchDog {
- private static final int RELOAD_DELAY = 1000;
-
- private GCModelLoaderController controller;
- private GCDocument gcDocument;
-
- private java.util.Timer reloadTimer;
-
- public RefreshWatchDog(GCModelLoaderController controller, GCDocument gcDocument) {
- this.controller = controller;
- this.gcDocument = gcDocument;
- }
-
- public void start() {
- reloadTimer = new java.util.Timer(true);
- reloadTimer.schedule(new ModelReloader(), 0, RELOAD_DELAY);
- }
-
- public void stop() {
- if (reloadTimer != null) {
- reloadTimer.cancel();
- }
- }
-
- private class ModelReloader extends TimerTask implements PropertyChangeListener {
-
- private GCModelLoaderGroupTracker tracker;
- /** initial value must be true for the first start */
- private boolean isFinished = true;
-
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- if ("state".equals(evt.getPropertyName())
- && SwingWorker.StateValue.DONE.equals(evt.getNewValue())) {
-
- isFinished = true;
- tracker.removePropertyChangeListener(this);
- }
- }
-
- public void run() {
- if (isFinished) {
- isFinished = false;
- tracker = controller.reload(gcDocument);
-
- // if no reload takes place, the propertyChangeEvent is fired, before the listener is attached
- // => set finished manually to true again.
- if (tracker.size() == 0) {
- isFinished = true;
- }
- else {
- tracker.addPropertyChangeListener(this);
- }
- }
- }
-
- }
+ private static int RELOAD_DELAY = 1000;
+
+ private final GCModelLoaderController controller;
+ private final GCDocument gcDocument;
+
+ private java.util.Timer reloadTimer;
+
+ public RefreshWatchDog(GCModelLoaderController controller, GCDocument gcDocument) {
+ this.controller = controller;
+ this.gcDocument = gcDocument;
+ }
+
+ public void start() {
+ reloadTimer = new java.util.Timer(true);
+ reloadTimer.schedule(new ModelReloader(), 0, RELOAD_DELAY);
+ }
+
+ public void stop() {
+ if (reloadTimer != null) {
+ reloadTimer.cancel();
+ }
+ }
+
+ protected static int getRELOAD_DELAY() {
+ return RELOAD_DELAY;
+ }
+
+ protected static void setRELOAD_DELAY(int rELOAD_DELAY) {
+ RELOAD_DELAY = rELOAD_DELAY;
+ }
+
+ private class ModelReloader extends TimerTask implements PropertyChangeListener {
+
+ private GCModelLoaderGroupTracker tracker;
+ /** initial value must be true for the first start */
+ private boolean isFinished = true;
+
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ if ("state".equals(evt.getPropertyName())
+ && SwingWorker.StateValue.DONE.equals(evt.getNewValue())) {
+
+ isFinished = true;
+ tracker.removePropertyChangeListener(this);
+ }
+ }
+
+ @Override
+ public void run() {
+ if (isFinished) {
+ isFinished = false;
+ tracker = controller.reload(gcDocument);
+
+ // if no reload takes place, the propertyChangeEvent is fired, before the listener is attached
+ // => set finished manually to true again.
+ if (tracker.size() == 0) {
+ isFinished = true;
+ }
+ else {
+ tracker.addPropertyChangeListener(this);
+ }
+ }
+ }
+
+ }
}
diff --git a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/action/Watch.java b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/action/Watch.java
index f977b1f3..6702a6db 100644
--- a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/action/Watch.java
+++ b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/action/Watch.java
@@ -29,103 +29,115 @@
* Time: 1:59:59 PM
*/
public class Watch extends AbstractAction {
- private Logger logger = Logger.getLogger(Watch.class.getCanonicalName());
-
- private static final ImageIcon WATCH_ICON = ImageHelper.loadImageIcon("watch.png");
- private static final ImageIcon CLOCK_ICON = ImageHelper.loadImageIcon("clock.png");
-
- private GCModelLoaderController controller;
- private GCViewerGui gcViewer;
-
- private Map timerMap;
-
- public Watch(GCModelLoaderController controller, GCViewerGui gcViewer) {
- this.controller = controller;
- this.gcViewer = gcViewer;
- this.timerMap = new HashMap();
-
- putValue(NAME, LocalisationHelper.getString("main_frame_menuitem_watch"));
- putValue(SHORT_DESCRIPTION, LocalisationHelper.getString("main_frame_menuitem_hint_watch"));
- putValue(MNEMONIC_KEY, new Integer(LocalisationHelper.getString("main_frame_menuitem_mnemonic_watch").charAt(0)));
- putValue(ACTION_COMMAND_KEY, ActionCommands.WATCH.toString());
- putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke('W', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() ));
- putValue(SMALL_ICON, WATCH_ICON);
-
- setEnabled(false);
- }
-
- public void actionPerformed(final ActionEvent ae) {
- final AbstractButton source = (AbstractButton)ae.getSource();
- if (source.isSelected()) {
- start();
- }
- else {
- stop(gcViewer.getSelectedGCDocument());
- }
- }
-
- private void start() {
- GCDocument gcDocument = gcViewer.getSelectedGCDocument();
- TimerInfo timerInfo = new TimerInfo(
- new RefreshWatchDog(controller, gcDocument),
- new GCDocumentCloseListener(gcDocument));
-
- gcDocument.setWatched(true);
- gcDocument.addInternalFrameListener(timerInfo.closeListener);
- timerMap.put(gcDocument, timerInfo);
-
- timerInfo.refreshWatchDog.start();
- putValue(SMALL_ICON, CLOCK_ICON);
- }
-
- private void stop(GCDocument gcDocument) {
- gcDocument.setWatched(false);
- TimerInfo timerInfo = timerMap.get(gcDocument);
- timerInfo.refreshWatchDog.stop();
-
- gcDocument.removeInternalFrameListener(timerInfo.closeListener);
-
- putValue(SMALL_ICON, WATCH_ICON);
- }
-
- public void setEnabled(final boolean newValue) {
- super.setEnabled(newValue);
- if (!newValue) {
- putValue(SMALL_ICON, WATCH_ICON);
- }
- }
-
- private class TimerInfo {
- RefreshWatchDog refreshWatchDog;
- GCDocumentCloseListener closeListener;
-
- public TimerInfo(RefreshWatchDog refreshWatchDog, GCDocumentCloseListener closeListener) {
- this.refreshWatchDog = refreshWatchDog;
- this.closeListener = closeListener;
- }
- }
-
- private class GCDocumentCloseListener extends InternalFrameAdapter {
- private GCDocument gcDocument;
-
- public GCDocumentCloseListener(GCDocument gcDocument) {
- this.gcDocument = gcDocument;
- }
-
- @Override
- public void internalFrameActivated(InternalFrameEvent e) {
- putValue(SMALL_ICON, CLOCK_ICON);
- }
-
- @Override
- public void internalFrameClosing(InternalFrameEvent e) {
- stop(this.gcDocument);
- }
-
- @Override
- public void internalFrameDeactivated(InternalFrameEvent e) {
- putValue(SMALL_ICON, WATCH_ICON);
- }
-
- }
+ private Logger logger = Logger.getLogger(Watch.class.getCanonicalName());
+
+ private static final ImageIcon WATCH_ICON = ImageHelper.loadImageIcon("watch.png");
+ private static final ImageIcon CLOCK_ICON = ImageHelper.loadImageIcon("clock.png");
+
+ private GCModelLoaderController controller;
+ private GCViewerGui gcViewer;
+
+ private Map timerMap;
+
+ public Watch(GCModelLoaderController controller, GCViewerGui gcViewer) {
+ this.controller = controller;
+ this.gcViewer = gcViewer;
+ this.timerMap = new HashMap();
+
+ putValue(NAME, LocalisationHelper.getString("main_frame_menuitem_watch"));
+ putValue(SHORT_DESCRIPTION, LocalisationHelper.getString("main_frame_menuitem_hint_watch"));
+ putValue(MNEMONIC_KEY, new Integer(LocalisationHelper.getString("main_frame_menuitem_mnemonic_watch").charAt(0)));
+ putValue(ACTION_COMMAND_KEY, ActionCommands.WATCH.toString());
+ putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke('W', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() ));
+ putValue(SMALL_ICON, WATCH_ICON);
+
+ setEnabled(false);
+ }
+
+ @Override
+ public void actionPerformed(final ActionEvent ae) {
+ final AbstractButton source = (AbstractButton)ae.getSource();
+ if (source.isSelected()) {
+ start();
+ }
+ else {
+ stop(gcViewer.getSelectedGCDocument());
+ }
+ }
+
+ /**
+ * Added restartIfRunning() method. Sep/11/2016 - Àngel Ollé Bláquez
+ */
+ void restartIfRunning() {
+ if (gcViewer.getSelectedGCDocument().isWatched()) {
+ stop(gcViewer.getSelectedGCDocument());
+ start();
+ }
+ }
+
+ private void start() {
+ GCDocument gcDocument = gcViewer.getSelectedGCDocument();
+ TimerInfo timerInfo = new TimerInfo(
+ new RefreshWatchDog(controller, gcDocument),
+ new GCDocumentCloseListener(gcDocument));
+
+ gcDocument.setWatched(true);
+ gcDocument.addInternalFrameListener(timerInfo.closeListener);
+ timerMap.put(gcDocument, timerInfo);
+
+ timerInfo.refreshWatchDog.start();
+ putValue(SMALL_ICON, CLOCK_ICON);
+ }
+
+ private void stop(GCDocument gcDocument) {
+ gcDocument.setWatched(false);
+ TimerInfo timerInfo = timerMap.get(gcDocument);
+ timerInfo.refreshWatchDog.stop();
+
+ gcDocument.removeInternalFrameListener(timerInfo.closeListener);
+
+ putValue(SMALL_ICON, WATCH_ICON);
+ }
+
+ @Override
+ public void setEnabled(final boolean newValue) {
+ super.setEnabled(newValue);
+ if (!newValue) {
+ putValue(SMALL_ICON, WATCH_ICON);
+ }
+ }
+
+ private class TimerInfo {
+ RefreshWatchDog refreshWatchDog;
+ GCDocumentCloseListener closeListener;
+
+ public TimerInfo(RefreshWatchDog refreshWatchDog, GCDocumentCloseListener closeListener) {
+ this.refreshWatchDog = refreshWatchDog;
+ this.closeListener = closeListener;
+ }
+ }
+
+ private class GCDocumentCloseListener extends InternalFrameAdapter {
+ private final GCDocument gcDocument;
+
+ public GCDocumentCloseListener(GCDocument gcDocument) {
+ this.gcDocument = gcDocument;
+ }
+
+ @Override
+ public void internalFrameActivated(InternalFrameEvent e) {
+ putValue(SMALL_ICON, CLOCK_ICON);
+ }
+
+ @Override
+ public void internalFrameClosing(InternalFrameEvent e) {
+ stop(this.gcDocument);
+ }
+
+ @Override
+ public void internalFrameDeactivated(InternalFrameEvent e) {
+ putValue(SMALL_ICON, WATCH_ICON);
+ }
+
+ }
}
diff --git a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/action/WatchDogReloadDelay.java b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/action/WatchDogReloadDelay.java
new file mode 100644
index 00000000..af6434d7
--- /dev/null
+++ b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/action/WatchDogReloadDelay.java
@@ -0,0 +1,49 @@
+package com.tagtraum.perf.gcviewer.ctrl.action;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+
+import com.tagtraum.perf.gcviewer.util.LocalisationHelper;
+import com.tagtraum.perf.gcviewer.view.ActionCommands;
+import com.tagtraum.perf.gcviewer.view.GCDocument;
+import com.tagtraum.perf.gcviewer.view.GCViewerGui;
+import com.tagtraum.perf.gcviewer.view.WatchDogReloadDelayView;
+
+/**
+ *
+ * @author Àngel Ollé Blázquez
+ *
+ *
+ */
+public class WatchDogReloadDelay extends AbstractAction {
+ private static final long serialVersionUID = -4527644600732531177L;
+ private final WatchDogReloadDelayView view;
+ private final GCViewerGui gui;
+
+ public WatchDogReloadDelay(final GCViewerGui gui) {
+ this.gui = gui;
+ int delay = RefreshWatchDog.getRELOAD_DELAY();
+ this.view = new WatchDogReloadDelayView(gui, delay);
+
+ putValue(NAME, LocalisationHelper.getString("main_frame_menuitem_watchdog"));
+ putValue(SHORT_DESCRIPTION, LocalisationHelper.getString("main_frame_menuitem_hint_watchdog"));
+ putValue(MNEMONIC_KEY,
+ new Integer(LocalisationHelper.getString("main_frame_menuitem_mnemonic_watchdog").charAt(0)));
+ putValue(ACTION_COMMAND_KEY, ActionCommands.ARRANGE.toString());
+ setEnabled(true);
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if (this.view.showDialog()) {
+ int delay = this.view.getReloadDelayValue();
+ RefreshWatchDog.setRELOAD_DELAY(delay);
+ GCDocument gcDocument = gui.getSelectedGCDocument();
+ if (gcDocument != null) {
+ Watch watch = (Watch) this.gui.getActionMap().get(ActionCommands.WATCH.toString());
+ watch.restartIfRunning();
+ }
+ }
+ }
+}
diff --git a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCViewerGuiBuilder.java b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCViewerGuiBuilder.java
index 243e16e1..4e9491d1 100644
--- a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCViewerGuiBuilder.java
+++ b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCViewerGuiBuilder.java
@@ -20,271 +20,275 @@
/**
* This class is responsible for construction of {@link GCViewerGui}, whose construction is
* quite complex. It is a simple implementation of the Builder pattern described in
- * "Design Patterns: Elements of Reusable Object-Oriented Software".
- *
+ * "Design Patterns: Elements of Reusable Object-Oriented Software".
+ *
* @author Joerg Wuethrich
* created on: 07.02.2014
*/
public class GCViewerGuiBuilder {
-
- public void initGCViewerGui(GCViewerGui gui, GCModelLoaderController controller) {
- Image iconImage = ImageHelper.loadImage("gcviewericon.gif");
-
- gui.setIconImage(iconImage);
- Map actionMap = initActionMap(controller, gui, iconImage);
-
- GCViewerGuiMenuBar menuBar = initMenuBar(actionMap, gui, controller);
- GCViewerGuiToolBar toolBar = initToolBar(actionMap);
- JDesktopPane desktopPane = initDesktopPane(gui, controller);
-
- WatchStateController wsListener = new WatchStateController(menuBar.getWatchMenuItem(), toolBar.getWatchToggleButton());
- menuBar.getWatchMenuItem().addActionListener(wsListener);
- toolBar.getWatchToggleButton().addActionListener(wsListener);
-
- gui.setActionMap(actionMap);
- gui.setJMenuBar(menuBar);
- gui.setToolBar(toolBar);
- gui.setDesktopPane(desktopPane);
- }
-
- private Map initActionMap(GCModelLoaderController controller, GCViewerGui gui, Image icon) {
- Map actions = new TreeMap();
-
- actions.put(ActionCommands.EXIT.toString(), new Exit(gui));
- actions.put(ActionCommands.ABOUT.toString(), new About(gui));
- actions.put(ActionCommands.SHOW_README.toString(), new ReadmeAction(gui));
- actions.put(ActionCommands.SHOW_LICENSE.toString(), new LicenseAction(gui));
- actions.put(ActionCommands.OPEN_FILE.toString(), new OpenFile(controller, gui));
- actions.put(ActionCommands.OPEN_SERIES.toString(), new OpenSeries(controller, gui));
- actions.put(ActionCommands.OPEN_URL.toString(), new OpenURL(controller, gui));
- actions.put(ActionCommands.REFRESH.toString(), new Refresh(controller, gui));
- actions.put(ActionCommands.EXPORT.toString(), new Export(gui));
- actions.put(ActionCommands.ZOOM.toString(), new Zoom(gui));
- actions.put(ActionCommands.ARRANGE.toString(), new Arrange(gui));
- actions.put(ActionCommands.WATCH.toString(), new Watch(controller, gui));
-
-
- if (OSXSupport.isOSX()) {
- OSXSupport.initializeMacOSX(actions.get(ActionCommands.ABOUT.toString()),
- actions.get(ActionCommands.EXIT.toString()),
- null,
- icon,
- gui);
-
- if (OSXSupport.hasOSXFullScreenSupport()) {
- actions.put(ActionCommands.OSX_FULLSCREEN.toString(), new OSXFullScreen(gui));
- }
- }
-
- return actions;
- }
-
- private JDesktopPane initDesktopPane(GCViewerGui gui, GCModelLoaderController controller) {
- JDesktopPane desktopPane = new DesktopPane();
- desktopPane.setDropTarget(new DropTarget(gui,
- DnDConstants.ACTION_COPY,
- new FileDropTargetListener(controller, DropFlavor.OPEN)));
-
- return desktopPane;
- }
-
- private GCViewerGuiMenuBar initMenuBar(Map actions,
- GCViewerGui gui,
- GCModelLoaderController controller) {
-
- ViewMenuController viewMenuController = new ViewMenuController(gui);
- GCViewerGuiMenuBar menuBar = new GCViewerGuiMenuBar();
-
- // file menu
- menuBar.addToFileMenu(actions.get(ActionCommands.OPEN_FILE.toString()));
- menuBar.addToFileMenu(actions.get(ActionCommands.OPEN_SERIES.toString()));
- menuBar.addToFileMenu(actions.get(ActionCommands.OPEN_URL.toString()));
- RecentGCResourcesMenu recentResourceNamesMenu = new RecentGCResourcesMenu();
- recentResourceNamesMenu.setIcon(ImageHelper.createEmptyImageIcon(20, 20));
- menuBar.addToFileMenu(recentResourceNamesMenu);
- menuBar.addToFileMenu(actions.get(ActionCommands.EXPORT.toString()));
- menuBar.addToFileMenu(actions.get(ActionCommands.REFRESH.toString()));
- menuBar.addToFileMenu(new JCheckBoxMenuItem(actions.get(ActionCommands.WATCH.toString())));
- if ( ! OSXSupport.isOSX()) {
- menuBar.addToFileMenu(actions.get(ActionCommands.EXIT.toString()));
- }
-
- RecentGCResourcesMenuController recentResourceNamesMenuController
- = new RecentGCResourcesMenuController(controller, recentResourceNamesMenu);
- recentResourceNamesMenu.getRecentResourceNamesModel().addRecentResourceNamesListener(recentResourceNamesMenuController);
-
- // view menu
- StayOpenCheckBoxMenuItem menuItemShowModelMetricsPanel = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_show_data_panel"), true);
- menuItemShowModelMetricsPanel.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_show_data_panel").charAt(0));
- menuItemShowModelMetricsPanel.setIcon(ImageHelper.createEmptyImageIcon(20, 20));
- menuItemShowModelMetricsPanel.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_show_data_panel"));
- menuItemShowModelMetricsPanel.setActionCommand(GCPreferences.SHOW_MODEL_METRICS_PANEL);
- menuItemShowModelMetricsPanel.addActionListener(viewMenuController);
- menuBar.addToViewMenu(GCPreferences.SHOW_MODEL_METRICS_PANEL, menuItemShowModelMetricsPanel);
- menuBar.addSeparatorToViewMenu();
-
- StayOpenCheckBoxMenuItem menuItemShowDateStamp = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_show_date_stamp"), true);
- menuItemShowDateStamp.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_show_date_stamp").charAt(0));
- menuItemShowDateStamp.setIcon(ImageHelper.createEmptyImageIcon(20, 20));
- menuItemShowDateStamp.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_show_date_stamp"));
- menuItemShowDateStamp.setActionCommand(GCPreferences.SHOW_DATE_STAMP);
- menuItemShowDateStamp.addActionListener(viewMenuController);
- menuBar.addToViewMenu(GCPreferences.SHOW_DATE_STAMP, menuItemShowDateStamp);
- menuBar.addSeparatorToViewMenu();
-
- StayOpenCheckBoxMenuItem menuItemAntiAlias = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_antialias"), true);
- menuItemAntiAlias.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_antialias").charAt(0));
- menuItemAntiAlias.setIcon(ImageHelper.createEmptyImageIcon(20, 20));
- menuItemAntiAlias.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_antialias"));
- menuItemAntiAlias.setActionCommand(GCPreferences.ANTI_ALIAS);
- menuItemAntiAlias.addActionListener(viewMenuController);
- menuBar.addToViewMenu(GCPreferences.ANTI_ALIAS, menuItemAntiAlias);
- menuBar.addSeparatorToViewMenu();
-
- StayOpenCheckBoxMenuItem menuItemFullGCLines = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_full_gc_lines"), true);
- menuItemFullGCLines.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_full_gc_lines").charAt(0));
- menuItemFullGCLines.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_full_gc_lines"));
- menuItemFullGCLines.setIcon(ImageHelper.createMonoColoredImageIcon(FullGCLineRenderer.DEFAULT_LINEPAINT, 20, 20));
- menuItemFullGCLines.setActionCommand(GCPreferences.FULL_GC_LINES);
- menuItemFullGCLines.addActionListener(viewMenuController);
- menuBar.addToViewMenu(GCPreferences.FULL_GC_LINES, menuItemFullGCLines);
-
- StayOpenCheckBoxMenuItem menuItemIncGCLines = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_inc_gc_lines"), true);
- menuItemIncGCLines.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_inc_gc_lines").charAt(0));
- menuItemIncGCLines.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_inc_gc_lines"));
- menuItemIncGCLines.setIcon(ImageHelper.createMonoColoredImageIcon(IncLineRenderer.DEFAULT_LINEPAINT, 20, 20));
- menuItemIncGCLines.setActionCommand(GCPreferences.INC_GC_LINES);
- menuItemIncGCLines.addActionListener(viewMenuController);
- menuBar.addToViewMenu(GCPreferences.INC_GC_LINES, menuItemIncGCLines);
-
- StayOpenCheckBoxMenuItem menuItemGcTimesLine = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_gc_times_line"), true);
- menuItemGcTimesLine.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_gc_times_line").charAt(0));
- menuItemGcTimesLine.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_gc_times_line"));
- menuItemGcTimesLine.setIcon(ImageHelper.createMonoColoredImageIcon(GCTimesRenderer.DEFAULT_LINEPAINT, 20, 20));
- menuItemGcTimesLine.setActionCommand(GCPreferences.GC_TIMES_LINE);
- menuItemGcTimesLine.addActionListener(viewMenuController);
- menuBar.addToViewMenu(GCPreferences.GC_TIMES_LINE, menuItemGcTimesLine);
-
- StayOpenCheckBoxMenuItem menuItemGcTimesRectangle = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_gc_times_rectangles"), true);
- menuItemGcTimesRectangle.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_gc_times_rectangles").charAt(0));
- menuItemGcTimesRectangle.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_gc_times_rectangles"));
- menuItemGcTimesRectangle.setIcon(ImageHelper.createMonoColoredImageIcon(GCRectanglesRenderer.DEFAULT_LINEPAINT, 20, 20));
- menuItemGcTimesRectangle.setActionCommand(GCPreferences.GC_TIMES_RECTANGLES);
- menuItemGcTimesRectangle.addActionListener(viewMenuController);
- menuBar.addToViewMenu(GCPreferences.GC_TIMES_RECTANGLES, menuItemGcTimesRectangle);
-
- StayOpenCheckBoxMenuItem menuItemTotalMemory = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_total_memory"), true);
- menuItemTotalMemory.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_total_memory").charAt(0));
- menuItemTotalMemory.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_total_memory"));
- menuItemTotalMemory.setIcon(ImageHelper.createMonoColoredImageIcon(TotalHeapRenderer.DEFAULT_LINEPAINT, 20, 20));
- menuItemTotalMemory.setActionCommand(GCPreferences.TOTAL_MEMORY);
- menuItemTotalMemory.addActionListener(viewMenuController);
- menuBar.addToViewMenu(GCPreferences.TOTAL_MEMORY, menuItemTotalMemory);
-
- StayOpenCheckBoxMenuItem menuItemTenuredMemory = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_tenured_memory"), true);
- menuItemTenuredMemory.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_tenured_memory").charAt(0));
- menuItemTenuredMemory.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_tenured_memory"));
- menuItemTenuredMemory.setIcon(ImageHelper.createMonoColoredImageIcon(TotalTenuredRenderer.DEFAULT_LINEPAINT, 20, 20));
- menuItemTenuredMemory.setActionCommand(GCPreferences.TENURED_MEMORY);
- menuItemTenuredMemory.addActionListener(viewMenuController);
- menuBar.addToViewMenu(GCPreferences.TENURED_MEMORY, menuItemTenuredMemory);
-
- StayOpenCheckBoxMenuItem menuItemYoungMemory = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_young_memory"), true);
- menuItemYoungMemory.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_young_memory").charAt(0));
- menuItemYoungMemory.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_young_memory"));
- menuItemYoungMemory.setIcon(ImageHelper.createMonoColoredImageIcon(TotalYoungRenderer.DEFAULT_LINEPAINT, 20, 20));
- menuItemYoungMemory.setActionCommand(GCPreferences.YOUNG_MEMORY);
- menuItemYoungMemory.addActionListener(viewMenuController);
- menuBar.addToViewMenu(GCPreferences.YOUNG_MEMORY, menuItemYoungMemory);
-
- StayOpenCheckBoxMenuItem menuItemUsedMemory = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_used_memory"), true);
- menuItemUsedMemory.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_used_memory").charAt(0));
- menuItemUsedMemory.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_used_memory"));
- menuItemUsedMemory.setIcon(ImageHelper.createMonoColoredImageIcon(UsedHeapRenderer.DEFAULT_LINEPAINT, 20, 20));
- menuItemUsedMemory.setActionCommand(GCPreferences.USED_MEMORY);
- menuItemUsedMemory.addActionListener(viewMenuController);
- menuBar.addToViewMenu(GCPreferences.USED_MEMORY, menuItemUsedMemory);
-
- StayOpenCheckBoxMenuItem menuItemUsedTenuredMemory = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_used_tenured_memory"), true);
- menuItemUsedTenuredMemory.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_used_tenured_memory").charAt(0));
- menuItemUsedTenuredMemory.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_used_tenured_memory"));
- menuItemUsedTenuredMemory.setIcon(ImageHelper.createMonoColoredImageIcon(UsedTenuredRenderer.DEFAULT_LINEPAINT, 20, 20));
- menuItemUsedTenuredMemory.setActionCommand(GCPreferences.USED_TENURED_MEMORY);
- menuItemUsedTenuredMemory.addActionListener(viewMenuController);
- menuBar.addToViewMenu(GCPreferences.USED_TENURED_MEMORY, menuItemUsedTenuredMemory);
-
- StayOpenCheckBoxMenuItem menuItemUsedYoungMemory = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_used_young_memory"), true);
- menuItemUsedYoungMemory.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_used_young_memory").charAt(0));
- menuItemUsedYoungMemory.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_used_young_memory"));
- menuItemUsedYoungMemory.setIcon(ImageHelper.createMonoColoredImageIcon(UsedYoungRenderer.DEFAULT_LINEPAINT, 20, 20));
- menuItemUsedYoungMemory.setActionCommand(GCPreferences.USED_YOUNG_MEMORY);
- menuItemUsedYoungMemory.addActionListener(viewMenuController);
- menuBar.addToViewMenu(GCPreferences.USED_YOUNG_MEMORY, menuItemUsedYoungMemory);
-
- StayOpenCheckBoxMenuItem menuItemInitialMarkLevel = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_initial_mark_level"), true);
- menuItemInitialMarkLevel.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_initial_mark_level").charAt(0));
- menuItemInitialMarkLevel.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_initial_mark_level"));
- menuItemInitialMarkLevel.setIcon(ImageHelper.createMonoColoredImageIcon(InitialMarkLevelRenderer.DEFAULT_LINEPAINT, 20, 20));
- menuItemInitialMarkLevel.setActionCommand(GCPreferences.INITIAL_MARK_LEVEL);
- menuItemInitialMarkLevel.addActionListener(viewMenuController);
- menuBar.addToViewMenu(GCPreferences.INITIAL_MARK_LEVEL, menuItemInitialMarkLevel);
-
- StayOpenCheckBoxMenuItem menuItemConcurrentGcBeginEnd = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_concurrent_collection_begin_end"), true);
- menuItemConcurrentGcBeginEnd.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_concurrent_collection_begin_end").charAt(0));
- menuItemConcurrentGcBeginEnd.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_concurrent_collection_begin_end"));
- menuItemConcurrentGcBeginEnd.setIcon(ImageHelper.createMonoColoredImageIcon(ConcurrentGcBegionEndRenderer.CONCURRENT_COLLECTION_BEGIN, 20, 20));
- menuItemConcurrentGcBeginEnd.setActionCommand(GCPreferences.CONCURRENT_COLLECTION_BEGIN_END);
- menuItemConcurrentGcBeginEnd.addActionListener(viewMenuController);
- menuBar.addToViewMenu(GCPreferences.CONCURRENT_COLLECTION_BEGIN_END, menuItemConcurrentGcBeginEnd);
-
- if (OSXSupport.hasOSXFullScreenSupport()) {
- // TODO No saving in properties?
- menuBar.addSeparatorToViewMenu();
- menuBar.addToViewMenu(actions.get(ActionCommands.OSX_FULLSCREEN.toString()));
- }
-
- menuBar.addToWindowMenu(actions.get(ActionCommands.ARRANGE.toString()));
- menuBar.addSeparatorToWindowMenu();
-
- if ( ! OSXSupport.isOSX()) {
- // TODO why is the help menu not shown in OSX? -> is there never one?
- menuBar.addToHelpMenu(actions.get(ActionCommands.SHOW_README.toString()));
- menuBar.addToHelpMenu(actions.get(ActionCommands.SHOW_LICENSE.toString()));
- menuBar.addToHelpMenu(actions.get(ActionCommands.ABOUT.toString()));
- }
-
- return menuBar;
- }
-
- private GCViewerGuiToolBar initToolBar(Map actions) {
- GCViewerGuiToolBar toolBar = new GCViewerGuiToolBar();
- toolBar.setFloatable(false);
-
- toolBar.add(actions.get(ActionCommands.OPEN_FILE.toString()));
- toolBar.add(actions.get(ActionCommands.OPEN_SERIES.toString()));
- toolBar.add(actions.get(ActionCommands.OPEN_URL.toString()));
- toolBar.add(actions.get(ActionCommands.EXPORT.toString()));
- toolBar.add(actions.get(ActionCommands.REFRESH.toString()));
-
- JToggleButton watchToggle = new JToggleButton();
- watchToggle.setAction(actions.get(ActionCommands.WATCH.toString()));
- watchToggle.setText("");
- toolBar.addWatchToggleButton(watchToggle);
-
- toolBar.addSeparator();
-
- JComboBox zoomComboBox = new JComboBox(new String[] {"1%", "5%", "10%", "50%", "100%", "200%", "300%", "500%", "1000%", "5000%"});
- zoomComboBox.setSelectedIndex(2);
- zoomComboBox.setAction(actions.get(ActionCommands.ZOOM.toString()));
- zoomComboBox.setEditable(true);
- zoomComboBox.setMaximumSize(zoomComboBox.getPreferredSize());
- toolBar.addZoomComboBox(zoomComboBox);
-
- toolBar.addSeparator();
-
- toolBar.add(actions.get(ActionCommands.ABOUT.toString()));
-
- return toolBar;
- }
+
+ public void initGCViewerGui(GCViewerGui gui, GCModelLoaderController controller) {
+ Image iconImage = ImageHelper.loadImage("gcviewericon.gif");
+
+ gui.setIconImage(iconImage);
+ Map actionMap = initActionMap(controller, gui, iconImage);
+
+ GCViewerGuiMenuBar menuBar = initMenuBar(actionMap, gui, controller);
+ GCViewerGuiToolBar toolBar = initToolBar(actionMap);
+ JDesktopPane desktopPane = initDesktopPane(gui, controller);
+
+ WatchStateController wsListener = new WatchStateController(menuBar.getWatchMenuItem(), toolBar.getWatchToggleButton());
+ menuBar.getWatchMenuItem().addActionListener(wsListener);
+ toolBar.getWatchToggleButton().addActionListener(wsListener);
+
+ gui.setActionMap(actionMap);
+ gui.setJMenuBar(menuBar);
+ gui.setToolBar(toolBar);
+ gui.setDesktopPane(desktopPane);
+ }
+
+ private Map initActionMap(GCModelLoaderController controller, GCViewerGui gui, Image icon) {
+ Map actions = new TreeMap();
+
+ actions.put(ActionCommands.EXIT.toString(), new Exit(gui));
+ actions.put(ActionCommands.ABOUT.toString(), new About(gui));
+ actions.put(ActionCommands.SHOW_README.toString(), new ReadmeAction(gui));
+ actions.put(ActionCommands.SHOW_LICENSE.toString(), new LicenseAction(gui));
+ actions.put(ActionCommands.OPEN_FILE.toString(), new OpenFile(controller, gui));
+ actions.put(ActionCommands.OPEN_SERIES.toString(), new OpenSeries(controller, gui));
+ actions.put(ActionCommands.OPEN_URL.toString(), new OpenURL(controller, gui));
+ actions.put(ActionCommands.REFRESH.toString(), new Refresh(controller, gui));
+ actions.put(ActionCommands.EXPORT.toString(), new Export(gui));
+ actions.put(ActionCommands.ZOOM.toString(), new Zoom(gui));
+ actions.put(ActionCommands.ARRANGE.toString(), new Arrange(gui));
+ actions.put(ActionCommands.WATCH.toString(), new Watch(controller, gui));
+ actions.put(ActionCommands.WATCHDOGRELOADDELAY.toString(), new WatchDogReloadDelay(gui));
+
+
+ if (OSXSupport.isOSX()) {
+ OSXSupport.initializeMacOSX(actions.get(ActionCommands.ABOUT.toString()),
+ actions.get(ActionCommands.EXIT.toString()),
+ null,
+ icon,
+ gui);
+
+ if (OSXSupport.hasOSXFullScreenSupport()) {
+ actions.put(ActionCommands.OSX_FULLSCREEN.toString(), new OSXFullScreen(gui));
+ }
+ }
+
+ return actions;
+ }
+
+ private JDesktopPane initDesktopPane(GCViewerGui gui, GCModelLoaderController controller) {
+ JDesktopPane desktopPane = new DesktopPane();
+ desktopPane.setDropTarget(new DropTarget(gui,
+ DnDConstants.ACTION_COPY,
+ new FileDropTargetListener(controller, DropFlavor.OPEN)));
+
+ return desktopPane;
+ }
+
+ private GCViewerGuiMenuBar initMenuBar(Map actions,
+ GCViewerGui gui,
+ GCModelLoaderController controller) {
+
+ ViewMenuController viewMenuController = new ViewMenuController(gui);
+ GCViewerGuiMenuBar menuBar = new GCViewerGuiMenuBar();
+
+ // file menu
+ menuBar.addToFileMenu(actions.get(ActionCommands.OPEN_FILE.toString()));
+ menuBar.addToFileMenu(actions.get(ActionCommands.OPEN_SERIES.toString()));
+ menuBar.addToFileMenu(actions.get(ActionCommands.OPEN_URL.toString()));
+ RecentGCResourcesMenu recentResourceNamesMenu = new RecentGCResourcesMenu();
+ recentResourceNamesMenu.setIcon(ImageHelper.createEmptyImageIcon(20, 20));
+ menuBar.addToFileMenu(recentResourceNamesMenu);
+ menuBar.addToFileMenu(actions.get(ActionCommands.EXPORT.toString()));
+ menuBar.addToFileMenu(actions.get(ActionCommands.REFRESH.toString()));
+ menuBar.addToFileMenu(new JCheckBoxMenuItem(actions.get(ActionCommands.WATCH.toString())));
+ if ( ! OSXSupport.isOSX()) {
+ menuBar.addToFileMenu(actions.get(ActionCommands.EXIT.toString()));
+ }
+
+ RecentGCResourcesMenuController recentResourceNamesMenuController
+ = new RecentGCResourcesMenuController(controller, recentResourceNamesMenu);
+ recentResourceNamesMenu.getRecentResourceNamesModel().addRecentResourceNamesListener(recentResourceNamesMenuController);
+
+ // view menu
+ StayOpenCheckBoxMenuItem menuItemShowModelMetricsPanel = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_show_data_panel"), true);
+ menuItemShowModelMetricsPanel.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_show_data_panel").charAt(0));
+ menuItemShowModelMetricsPanel.setIcon(ImageHelper.createEmptyImageIcon(20, 20));
+ menuItemShowModelMetricsPanel.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_show_data_panel"));
+ menuItemShowModelMetricsPanel.setActionCommand(GCPreferences.SHOW_MODEL_METRICS_PANEL);
+ menuItemShowModelMetricsPanel.addActionListener(viewMenuController);
+ menuBar.addToViewMenu(GCPreferences.SHOW_MODEL_METRICS_PANEL, menuItemShowModelMetricsPanel);
+ menuBar.addSeparatorToViewMenu();
+
+ StayOpenCheckBoxMenuItem menuItemShowDateStamp = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_show_date_stamp"), true);
+ menuItemShowDateStamp.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_show_date_stamp").charAt(0));
+ menuItemShowDateStamp.setIcon(ImageHelper.createEmptyImageIcon(20, 20));
+ menuItemShowDateStamp.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_show_date_stamp"));
+ menuItemShowDateStamp.setActionCommand(GCPreferences.SHOW_DATE_STAMP);
+ menuItemShowDateStamp.addActionListener(viewMenuController);
+ menuBar.addToViewMenu(GCPreferences.SHOW_DATE_STAMP, menuItemShowDateStamp);
+ menuBar.addSeparatorToViewMenu();
+
+ StayOpenCheckBoxMenuItem menuItemAntiAlias = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_antialias"), true);
+ menuItemAntiAlias.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_antialias").charAt(0));
+ menuItemAntiAlias.setIcon(ImageHelper.createEmptyImageIcon(20, 20));
+ menuItemAntiAlias.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_antialias"));
+ menuItemAntiAlias.setActionCommand(GCPreferences.ANTI_ALIAS);
+ menuItemAntiAlias.addActionListener(viewMenuController);
+ menuBar.addToViewMenu(GCPreferences.ANTI_ALIAS, menuItemAntiAlias);
+ menuBar.addSeparatorToViewMenu();
+
+ StayOpenCheckBoxMenuItem menuItemFullGCLines = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_full_gc_lines"), true);
+ menuItemFullGCLines.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_full_gc_lines").charAt(0));
+ menuItemFullGCLines.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_full_gc_lines"));
+ menuItemFullGCLines.setIcon(ImageHelper.createMonoColoredImageIcon(FullGCLineRenderer.DEFAULT_LINEPAINT, 20, 20));
+ menuItemFullGCLines.setActionCommand(GCPreferences.FULL_GC_LINES);
+ menuItemFullGCLines.addActionListener(viewMenuController);
+ menuBar.addToViewMenu(GCPreferences.FULL_GC_LINES, menuItemFullGCLines);
+
+ StayOpenCheckBoxMenuItem menuItemIncGCLines = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_inc_gc_lines"), true);
+ menuItemIncGCLines.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_inc_gc_lines").charAt(0));
+ menuItemIncGCLines.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_inc_gc_lines"));
+ menuItemIncGCLines.setIcon(ImageHelper.createMonoColoredImageIcon(IncLineRenderer.DEFAULT_LINEPAINT, 20, 20));
+ menuItemIncGCLines.setActionCommand(GCPreferences.INC_GC_LINES);
+ menuItemIncGCLines.addActionListener(viewMenuController);
+ menuBar.addToViewMenu(GCPreferences.INC_GC_LINES, menuItemIncGCLines);
+
+ StayOpenCheckBoxMenuItem menuItemGcTimesLine = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_gc_times_line"), true);
+ menuItemGcTimesLine.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_gc_times_line").charAt(0));
+ menuItemGcTimesLine.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_gc_times_line"));
+ menuItemGcTimesLine.setIcon(ImageHelper.createMonoColoredImageIcon(GCTimesRenderer.DEFAULT_LINEPAINT, 20, 20));
+ menuItemGcTimesLine.setActionCommand(GCPreferences.GC_TIMES_LINE);
+ menuItemGcTimesLine.addActionListener(viewMenuController);
+ menuBar.addToViewMenu(GCPreferences.GC_TIMES_LINE, menuItemGcTimesLine);
+
+ StayOpenCheckBoxMenuItem menuItemGcTimesRectangle = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_gc_times_rectangles"), true);
+ menuItemGcTimesRectangle.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_gc_times_rectangles").charAt(0));
+ menuItemGcTimesRectangle.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_gc_times_rectangles"));
+ menuItemGcTimesRectangle.setIcon(ImageHelper.createMonoColoredImageIcon(GCRectanglesRenderer.DEFAULT_LINEPAINT, 20, 20));
+ menuItemGcTimesRectangle.setActionCommand(GCPreferences.GC_TIMES_RECTANGLES);
+ menuItemGcTimesRectangle.addActionListener(viewMenuController);
+ menuBar.addToViewMenu(GCPreferences.GC_TIMES_RECTANGLES, menuItemGcTimesRectangle);
+
+ StayOpenCheckBoxMenuItem menuItemTotalMemory = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_total_memory"), true);
+ menuItemTotalMemory.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_total_memory").charAt(0));
+ menuItemTotalMemory.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_total_memory"));
+ menuItemTotalMemory.setIcon(ImageHelper.createMonoColoredImageIcon(TotalHeapRenderer.DEFAULT_LINEPAINT, 20, 20));
+ menuItemTotalMemory.setActionCommand(GCPreferences.TOTAL_MEMORY);
+ menuItemTotalMemory.addActionListener(viewMenuController);
+ menuBar.addToViewMenu(GCPreferences.TOTAL_MEMORY, menuItemTotalMemory);
+
+ StayOpenCheckBoxMenuItem menuItemTenuredMemory = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_tenured_memory"), true);
+ menuItemTenuredMemory.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_tenured_memory").charAt(0));
+ menuItemTenuredMemory.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_tenured_memory"));
+ menuItemTenuredMemory.setIcon(ImageHelper.createMonoColoredImageIcon(TotalTenuredRenderer.DEFAULT_LINEPAINT, 20, 20));
+ menuItemTenuredMemory.setActionCommand(GCPreferences.TENURED_MEMORY);
+ menuItemTenuredMemory.addActionListener(viewMenuController);
+ menuBar.addToViewMenu(GCPreferences.TENURED_MEMORY, menuItemTenuredMemory);
+
+ StayOpenCheckBoxMenuItem menuItemYoungMemory = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_young_memory"), true);
+ menuItemYoungMemory.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_young_memory").charAt(0));
+ menuItemYoungMemory.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_young_memory"));
+ menuItemYoungMemory.setIcon(ImageHelper.createMonoColoredImageIcon(TotalYoungRenderer.DEFAULT_LINEPAINT, 20, 20));
+ menuItemYoungMemory.setActionCommand(GCPreferences.YOUNG_MEMORY);
+ menuItemYoungMemory.addActionListener(viewMenuController);
+ menuBar.addToViewMenu(GCPreferences.YOUNG_MEMORY, menuItemYoungMemory);
+
+ StayOpenCheckBoxMenuItem menuItemUsedMemory = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_used_memory"), true);
+ menuItemUsedMemory.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_used_memory").charAt(0));
+ menuItemUsedMemory.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_used_memory"));
+ menuItemUsedMemory.setIcon(ImageHelper.createMonoColoredImageIcon(UsedHeapRenderer.DEFAULT_LINEPAINT, 20, 20));
+ menuItemUsedMemory.setActionCommand(GCPreferences.USED_MEMORY);
+ menuItemUsedMemory.addActionListener(viewMenuController);
+ menuBar.addToViewMenu(GCPreferences.USED_MEMORY, menuItemUsedMemory);
+
+ StayOpenCheckBoxMenuItem menuItemUsedTenuredMemory = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_used_tenured_memory"), true);
+ menuItemUsedTenuredMemory.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_used_tenured_memory").charAt(0));
+ menuItemUsedTenuredMemory.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_used_tenured_memory"));
+ menuItemUsedTenuredMemory.setIcon(ImageHelper.createMonoColoredImageIcon(UsedTenuredRenderer.DEFAULT_LINEPAINT, 20, 20));
+ menuItemUsedTenuredMemory.setActionCommand(GCPreferences.USED_TENURED_MEMORY);
+ menuItemUsedTenuredMemory.addActionListener(viewMenuController);
+ menuBar.addToViewMenu(GCPreferences.USED_TENURED_MEMORY, menuItemUsedTenuredMemory);
+
+ StayOpenCheckBoxMenuItem menuItemUsedYoungMemory = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_used_young_memory"), true);
+ menuItemUsedYoungMemory.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_used_young_memory").charAt(0));
+ menuItemUsedYoungMemory.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_used_young_memory"));
+ menuItemUsedYoungMemory.setIcon(ImageHelper.createMonoColoredImageIcon(UsedYoungRenderer.DEFAULT_LINEPAINT, 20, 20));
+ menuItemUsedYoungMemory.setActionCommand(GCPreferences.USED_YOUNG_MEMORY);
+ menuItemUsedYoungMemory.addActionListener(viewMenuController);
+ menuBar.addToViewMenu(GCPreferences.USED_YOUNG_MEMORY, menuItemUsedYoungMemory);
+
+ StayOpenCheckBoxMenuItem menuItemInitialMarkLevel = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_initial_mark_level"), true);
+ menuItemInitialMarkLevel.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_initial_mark_level").charAt(0));
+ menuItemInitialMarkLevel.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_initial_mark_level"));
+ menuItemInitialMarkLevel.setIcon(ImageHelper.createMonoColoredImageIcon(InitialMarkLevelRenderer.DEFAULT_LINEPAINT, 20, 20));
+ menuItemInitialMarkLevel.setActionCommand(GCPreferences.INITIAL_MARK_LEVEL);
+ menuItemInitialMarkLevel.addActionListener(viewMenuController);
+ menuBar.addToViewMenu(GCPreferences.INITIAL_MARK_LEVEL, menuItemInitialMarkLevel);
+
+ StayOpenCheckBoxMenuItem menuItemConcurrentGcBeginEnd = new StayOpenCheckBoxMenuItem(LocalisationHelper.getString("main_frame_menuitem_concurrent_collection_begin_end"), true);
+ menuItemConcurrentGcBeginEnd.setMnemonic(LocalisationHelper.getString("main_frame_menuitem_mnemonic_concurrent_collection_begin_end").charAt(0));
+ menuItemConcurrentGcBeginEnd.setToolTipText(LocalisationHelper.getString("main_frame_menuitem_hint_concurrent_collection_begin_end"));
+ menuItemConcurrentGcBeginEnd.setIcon(ImageHelper.createMonoColoredImageIcon(ConcurrentGcBegionEndRenderer.CONCURRENT_COLLECTION_BEGIN, 20, 20));
+ menuItemConcurrentGcBeginEnd.setActionCommand(GCPreferences.CONCURRENT_COLLECTION_BEGIN_END);
+ menuItemConcurrentGcBeginEnd.addActionListener(viewMenuController);
+ menuBar.addToViewMenu(GCPreferences.CONCURRENT_COLLECTION_BEGIN_END, menuItemConcurrentGcBeginEnd);
+
+ if (OSXSupport.hasOSXFullScreenSupport()) {
+ // TODO No saving in properties?
+ menuBar.addSeparatorToViewMenu();
+ menuBar.addToViewMenu(actions.get(ActionCommands.OSX_FULLSCREEN.toString()));
+ }
+
+ menuBar.addToWindowMenu(actions.get(ActionCommands.ARRANGE.toString()));
+ menuBar.addSeparatorToWindowMenu();
+
+ if ( ! OSXSupport.isOSX()) {
+ // TODO why is the help menu not shown in OSX? -> is there never one?
+ menuBar.addToHelpMenu(actions.get(ActionCommands.SHOW_README.toString()));
+ menuBar.addToHelpMenu(actions.get(ActionCommands.SHOW_LICENSE.toString()));
+ menuBar.addToHelpMenu(actions.get(ActionCommands.ABOUT.toString()));
+ }
+
+ // Preferences menu
+ menuBar.addToPreferencesMenu(actions.get(ActionCommands.WATCHDOGRELOADDELAY.toString()));
+
+ return menuBar;
+ }
+
+ private GCViewerGuiToolBar initToolBar(Map actions) {
+ GCViewerGuiToolBar toolBar = new GCViewerGuiToolBar();
+ toolBar.setFloatable(false);
+
+ toolBar.add(actions.get(ActionCommands.OPEN_FILE.toString()));
+ toolBar.add(actions.get(ActionCommands.OPEN_SERIES.toString()));
+ toolBar.add(actions.get(ActionCommands.OPEN_URL.toString()));
+ toolBar.add(actions.get(ActionCommands.EXPORT.toString()));
+ toolBar.add(actions.get(ActionCommands.REFRESH.toString()));
+
+ JToggleButton watchToggle = new JToggleButton();
+ watchToggle.setAction(actions.get(ActionCommands.WATCH.toString()));
+ watchToggle.setText("");
+ toolBar.addWatchToggleButton(watchToggle);
+
+ toolBar.addSeparator();
+
+ JComboBox zoomComboBox = new JComboBox(new String[] {"1%", "5%", "10%", "50%", "100%", "200%", "300%", "500%", "1000%", "5000%"});
+ zoomComboBox.setSelectedIndex(2);
+ zoomComboBox.setAction(actions.get(ActionCommands.ZOOM.toString()));
+ zoomComboBox.setEditable(true);
+ zoomComboBox.setMaximumSize(zoomComboBox.getPreferredSize());
+ toolBar.addZoomComboBox(zoomComboBox);
+
+ toolBar.addSeparator();
+
+ toolBar.add(actions.get(ActionCommands.ABOUT.toString()));
+
+ return toolBar;
+ }
}
diff --git a/src/main/java/com/tagtraum/perf/gcviewer/view/ActionCommands.java b/src/main/java/com/tagtraum/perf/gcviewer/view/ActionCommands.java
index 8f7331bf..a7d78a53 100644
--- a/src/main/java/com/tagtraum/perf/gcviewer/view/ActionCommands.java
+++ b/src/main/java/com/tagtraum/perf/gcviewer/view/ActionCommands.java
@@ -2,23 +2,24 @@
/**
* Enumeration of all actions used in GCViewer.
- *
+ *
* @author Joerg Wuethrich
* created on: 07.02.2014
*/
public enum ActionCommands {
- ABOUT,
- ARRANGE,
- EXIT,
- EXPORT,
- SHOW_LICENSE,
- OPEN_FILE,
- OPEN_SERIES,
- OPEN_URL,
- OPEN_RECENT,
- OSX_FULLSCREEN,
- SHOW_README,
- REFRESH,
- WATCH,
- ZOOM
+ ABOUT,
+ ARRANGE,
+ EXIT,
+ EXPORT,
+ SHOW_LICENSE,
+ OPEN_FILE,
+ OPEN_SERIES,
+ OPEN_URL,
+ OPEN_RECENT,
+ OSX_FULLSCREEN,
+ SHOW_README,
+ REFRESH,
+ WATCH,
+ WATCHDOGRELOADDELAY,
+ ZOOM
}
diff --git a/src/main/java/com/tagtraum/perf/gcviewer/view/GCViewerGuiMenuBar.java b/src/main/java/com/tagtraum/perf/gcviewer/view/GCViewerGuiMenuBar.java
index 8d6ac43d..b9ddebb9 100644
--- a/src/main/java/com/tagtraum/perf/gcviewer/view/GCViewerGuiMenuBar.java
+++ b/src/main/java/com/tagtraum/perf/gcviewer/view/GCViewerGuiMenuBar.java
@@ -16,152 +16,161 @@
import com.tagtraum.perf.gcviewer.view.util.OSXSupport;
/**
- * MenuBar for GCViewerGui.
- *
+ * MenuBar for GCViewerGui.
+ *
* @author Joerg Wuethrich
* created on: 07.02.2014
*/
public class GCViewerGuiMenuBar extends JMenuBar {
- private Map viewMenuItemMap;
- private JMenu fileMenu;
- private RecentGCResourcesModel recentResourceNamesModel;
- private JMenu viewMenu;
- private JMenu windowMenu;
- /** control that only one checkbox menuitem inside the window menu can be active at a time */
- private ButtonGroup windowMenuCheckBoxGroup;
- private JMenu helpMenu;
-
- public GCViewerGuiMenuBar() {
- super();
-
- viewMenuItemMap = new HashMap<>();
-
- fileMenu = new JMenu(LocalisationHelper.getString("main_frame_menu_file"));
- fileMenu.setMnemonic(LocalisationHelper.getString("main_frame_menu_mnemonic_file").charAt(0));
- add(fileMenu);
-
- viewMenu = new JMenu(LocalisationHelper.getString("main_frame_menu_view"));
- viewMenu.setMnemonic(LocalisationHelper.getString("main_frame_menu_mnemonic_view").charAt(0));
- add(viewMenu);
-
- windowMenu = new JMenu(LocalisationHelper.getString("main_frame_menu_window"));
- windowMenu.setMnemonic(LocalisationHelper.getString("main_frame_menu_mnemonic_window").charAt(0));
- add(windowMenu);
- windowMenuCheckBoxGroup = new ButtonGroup();
-
- helpMenu = new JMenu(LocalisationHelper.getString("main_frame_menu_help"));
- helpMenu.setMnemonic(LocalisationHelper.getString("main_frame_menu_mnemonic_help").charAt(0));
- if ( ! OSXSupport.isOSX()) {
- add(helpMenu);
- }
- }
-
- public void addSeparatorToViewMenu() {
- viewMenu.addSeparator();
- }
-
- public void addSeparatorToWindowMenu() {
- windowMenu.addSeparator();
- }
-
- public void addToFileMenu(JMenuItem menuItem) {
- fileMenu.add(menuItem);
- }
-
- public void addToFileMenu(RecentGCResourcesMenu recentResourceNamesMenu) {
- addToFileMenu((JMenuItem) recentResourceNamesMenu);
- this.recentResourceNamesModel = recentResourceNamesMenu.getRecentResourceNamesModel();
- }
-
- public void addToFileMenu(Action action) {
- fileMenu.add(action);
- }
-
- public void addToHelpMenu(Action action) {
- helpMenu.add(action);
- }
-
- public void addToViewMenu(String key, JCheckBoxMenuItem menuItem) {
- viewMenu.add(menuItem);
- viewMenuItemMap.put(key, menuItem);
- }
-
- public void addToViewMenu(Action action) {
- viewMenu.add(action);
- }
-
- /**
- * Adds menuItem
to the internal list of view menu items, but doesn't display
- * this item.
- *
- * @param key unique key for storage of this menuItem
in the internal map
- * @param menuItem item to be stored in the map
- */
- public void addToViewMenuInvisible(String key, JCheckBoxMenuItem menuItem) {
- viewMenuItemMap.put(key, menuItem);
- }
-
- /**
- * Add action to "window" menu.
- * @param action action to be added
- */
- public void addToWindowMenu(Action action) {
- windowMenu.add(action);
- }
-
- /**
- * Add checkbox item to window menu group (only one of these items can be active at a time).
- * @param menuItem checkbox item to be added
- */
- public void addToWindowMenuGroup(JCheckBoxMenuItem menuItem) {
- windowMenu.add(menuItem);
- windowMenuCheckBoxGroup.add(menuItem);
- }
-
- /**
- * Remove a menuItem from the window menu including removal of the group.
- * @param menuItem
- */
- public void removeFromWindowMenuGroup(JMenuItem menuItem) {
- windowMenu.remove(menuItem);
- windowMenuCheckBoxGroup.remove(menuItem);
- }
-
- public JMenu getFileMenu() {
- return fileMenu;
- }
-
- public RecentGCResourcesModel getRecentGCResourcesModel() {
- assert recentResourceNamesModel != null : "recentResourceNamesModel is not initialized";
- return recentResourceNamesModel;
- }
-
- public JMenu getViewMenu() {
- return viewMenu;
- }
-
- public Map getViewMenuItems() {
- return Collections.unmodifiableMap(viewMenuItemMap);
- }
-
- public JMenu getWindowMenu() {
- return windowMenu;
- }
-
- /**
- * Returns MenuItem, which is associated with "WATCH" action command.
- *
- * @return "WATCH" menu item
- */
- public JCheckBoxMenuItem getWatchMenuItem() {
- for (Component component : fileMenu.getMenuComponents()) {
- if (component instanceof JCheckBoxMenuItem
- && ((JCheckBoxMenuItem) component).getActionCommand().equals(ActionCommands.WATCH.toString())) {
-
- return (JCheckBoxMenuItem) component;
- }
- }
-
- throw new IllegalStateException("StayOpenCheckBoxMenuItem with actionCommand '" + ActionCommands.WATCH + "' not found");
- }
+ private Map viewMenuItemMap;
+ private JMenu fileMenu;
+ private RecentGCResourcesModel recentResourceNamesModel;
+ private JMenu viewMenu;
+ private JMenu windowMenu;
+ /** control that only one checkbox menuitem inside the window menu can be active at a time */
+ private ButtonGroup windowMenuCheckBoxGroup;
+ private JMenu helpMenu;
+ private final JMenu preferencesMenu;
+
+ public GCViewerGuiMenuBar() {
+ super();
+
+ viewMenuItemMap = new HashMap<>();
+
+ fileMenu = new JMenu(LocalisationHelper.getString("main_frame_menu_file"));
+ fileMenu.setMnemonic(LocalisationHelper.getString("main_frame_menu_mnemonic_file").charAt(0));
+ add(fileMenu);
+
+ preferencesMenu = new JMenu(LocalisationHelper.getString("main_frame_menu_preferences"));
+ preferencesMenu.setMnemonic(LocalisationHelper.getString("main_frame_menu_mnemonic_preferences").charAt(0));
+ add(preferencesMenu);
+
+ viewMenu = new JMenu(LocalisationHelper.getString("main_frame_menu_view"));
+ viewMenu.setMnemonic(LocalisationHelper.getString("main_frame_menu_mnemonic_view").charAt(0));
+ add(viewMenu);
+
+ windowMenu = new JMenu(LocalisationHelper.getString("main_frame_menu_window"));
+ windowMenu.setMnemonic(LocalisationHelper.getString("main_frame_menu_mnemonic_window").charAt(0));
+ add(windowMenu);
+ windowMenuCheckBoxGroup = new ButtonGroup();
+
+ helpMenu = new JMenu(LocalisationHelper.getString("main_frame_menu_help"));
+ helpMenu.setMnemonic(LocalisationHelper.getString("main_frame_menu_mnemonic_help").charAt(0));
+ if ( ! OSXSupport.isOSX()) {
+ add(helpMenu);
+ }
+ }
+
+ public void addSeparatorToViewMenu() {
+ viewMenu.addSeparator();
+ }
+
+ public void addSeparatorToWindowMenu() {
+ windowMenu.addSeparator();
+ }
+
+ public void addToFileMenu(Action action) {
+ fileMenu.add(action);
+ }
+
+ public void addToFileMenu(JMenuItem menuItem) {
+ fileMenu.add(menuItem);
+ }
+
+ public void addToFileMenu(RecentGCResourcesMenu recentResourceNamesMenu) {
+ addToFileMenu((JMenuItem) recentResourceNamesMenu);
+ this.recentResourceNamesModel = recentResourceNamesMenu.getRecentResourceNamesModel();
+ }
+
+ public void addToHelpMenu(Action action) {
+ helpMenu.add(action);
+ }
+
+ public void addToViewMenu(Action action) {
+ viewMenu.add(action);
+ }
+
+ public void addToViewMenu(String key, JCheckBoxMenuItem menuItem) {
+ viewMenu.add(menuItem);
+ viewMenuItemMap.put(key, menuItem);
+ }
+
+ /**
+ * Adds menuItem
to the internal list of view menu items, but doesn't display
+ * this item.
+ *
+ * @param key unique key for storage of this menuItem
in the internal map
+ * @param menuItem item to be stored in the map
+ */
+ public void addToViewMenuInvisible(String key, JCheckBoxMenuItem menuItem) {
+ viewMenuItemMap.put(key, menuItem);
+ }
+
+ /**
+ * Add action to "window" menu.
+ * @param action action to be added
+ */
+ public void addToWindowMenu(Action action) {
+ windowMenu.add(action);
+ }
+
+ /**
+ * Add checkbox item to window menu group (only one of these items can be active at a time).
+ * @param menuItem checkbox item to be added
+ */
+ public void addToWindowMenuGroup(JCheckBoxMenuItem menuItem) {
+ windowMenu.add(menuItem);
+ windowMenuCheckBoxGroup.add(menuItem);
+ }
+
+ public JMenu getFileMenu() {
+ return fileMenu;
+ }
+
+ public RecentGCResourcesModel getRecentGCResourcesModel() {
+ assert recentResourceNamesModel != null : "recentResourceNamesModel is not initialized";
+ return recentResourceNamesModel;
+ }
+
+ public JMenu getViewMenu() {
+ return viewMenu;
+ }
+
+ public Map getViewMenuItems() {
+ return Collections.unmodifiableMap(viewMenuItemMap);
+ }
+
+ /**
+ * Returns MenuItem, which is associated with "WATCH" action command.
+ *
+ * @return "WATCH" menu item
+ */
+ public JCheckBoxMenuItem getWatchMenuItem() {
+ for (Component component : fileMenu.getMenuComponents()) {
+ if (component instanceof JCheckBoxMenuItem
+ && ((JCheckBoxMenuItem) component).getActionCommand().equals(ActionCommands.WATCH.toString())) {
+
+ return (JCheckBoxMenuItem) component;
+ }
+ }
+
+ throw new IllegalStateException("StayOpenCheckBoxMenuItem with actionCommand '" + ActionCommands.WATCH + "' not found");
+ }
+
+ public JMenu getWindowMenu() {
+ return windowMenu;
+ }
+
+ /**
+ * Remove a menuItem from the window menu including removal of the group.
+ * @param menuItem
+ */
+ public void removeFromWindowMenuGroup(JMenuItem menuItem) {
+ windowMenu.remove(menuItem);
+ windowMenuCheckBoxGroup.remove(menuItem);
+ }
+
+ public void addToPreferencesMenu(Action action) {
+ preferencesMenu.add(action);
+ }
}
diff --git a/src/main/java/com/tagtraum/perf/gcviewer/view/WatchDogReloadDelayView.java b/src/main/java/com/tagtraum/perf/gcviewer/view/WatchDogReloadDelayView.java
new file mode 100644
index 00000000..166326c1
--- /dev/null
+++ b/src/main/java/com/tagtraum/perf/gcviewer/view/WatchDogReloadDelayView.java
@@ -0,0 +1,59 @@
+package com.tagtraum.perf.gcviewer.view;
+
+import java.awt.Dimension;
+import java.awt.GridBagLayout;
+import java.text.NumberFormat;
+
+import javax.swing.JFormattedTextField;
+import javax.swing.JFormattedTextField.AbstractFormatter;
+import javax.swing.JFormattedTextField.AbstractFormatterFactory;
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.text.InternationalFormatter;
+
+import com.tagtraum.perf.gcviewer.util.LocalisationHelper;
+
+/**
+ *
+ * @author Àngel Ollé Blázquez
+ *
+ */
+public class WatchDogReloadDelayView {
+ private final JFrame parent;
+ private final JPanel panel;
+ private final JFormattedTextField reloadDelayField;
+
+ public WatchDogReloadDelayView(JFrame parent, int delay) {
+ this.parent = parent;
+ panel = new JPanel(new GridBagLayout());
+
+ reloadDelayField = new JFormattedTextField(delay);
+ reloadDelayField.setFormatterFactory(new AbstractFormatterFactory() {
+ @Override
+ public AbstractFormatter getFormatter(JFormattedTextField tf) {
+ NumberFormat format = NumberFormat.getInstance();
+ InternationalFormatter formatter = new InternationalFormatter(format);
+ formatter.setAllowsInvalid(false);
+ formatter.setMinimum(1);
+ formatter.setMaximum(Integer.MAX_VALUE);
+ return formatter;
+ }
+ });
+
+ reloadDelayField.setPreferredSize(new Dimension(50, 25));
+ panel.add(reloadDelayField);
+
+ }
+
+ public int getReloadDelayValue() {
+ return (int) reloadDelayField.getValue();
+ }
+
+ public boolean showDialog() {
+ return JOptionPane.OK_OPTION == JOptionPane.showConfirmDialog(parent, panel,
+ LocalisationHelper.getString("watchreloaddelay_dialog_title"), JOptionPane.OK_CANCEL_OPTION,
+ JOptionPane.PLAIN_MESSAGE);
+ }
+
+}
diff --git a/src/main/resources/localStrings.properties b/src/main/resources/localStrings.properties
index 17741d51..11d64933 100644
--- a/src/main/resources/localStrings.properties
+++ b/src/main/resources/localStrings.properties
@@ -183,10 +183,14 @@ main_frame_menu_mnemonic_file = F
main_frame_menu_mnemonic_help = H
+main_frame_menu_mnemonic_preferences = P
+
main_frame_menu_mnemonic_view = V
main_frame_menu_mnemonic_window = W
+main_frame_menu_preferences = Preferences
+
main_frame_menu_view = View
main_frame_menu_window = Window
@@ -271,6 +275,8 @@ main_frame_menuitem_hint_used_young_memory = Part of the young heap that is actu
main_frame_menuitem_hint_watch = Watches and reloads the current file, if it changes
+main_frame_menuitem_hint_watchdog = Change the watch reload delay value
+
main_frame_menuitem_hint_young_memory = Part of the heap that constitutes the young generation
main_frame_menuitem_inc_gc_lines = Inc GC Lines
@@ -335,6 +341,8 @@ main_frame_menuitem_mnemonic_used_young_memory = U
main_frame_menuitem_mnemonic_watch = W
+main_frame_menuitem_mnemonic_watchdog = W
+
main_frame_menuitem_mnemonic_young_memory = Y
main_frame_menuitem_open_file = Open File
@@ -365,6 +373,8 @@ main_frame_menuitem_used_young_memory = Used young Heap
main_frame_menuitem_watch = Watch
+main_frame_menuitem_watchdog = Watch Reload Delay
+
main_frame_menuitem_young_memory = Young Generation
timeoffset_prompt = Log start time:
@@ -374,3 +384,5 @@ urlopen_dialog_add_checkbox = Add URL to current window.
urlopen_dialog_hint_add_checkbox = When checked, the new document will be added to
the current window, instead of opened in a new window.
urlopen_dialog_title = Open GC URL
+
+watchreloaddelay_dialog_title = Watch Reload Delay
diff --git a/src/main/resources/localStrings_de.properties b/src/main/resources/localStrings_de.properties
index 7c372dab..8acdc478 100644
--- a/src/main/resources/localStrings_de.properties
+++ b/src/main/resources/localStrings_de.properties
@@ -179,10 +179,14 @@ main_frame_menu_mnemonic_file = D
main_frame_menu_mnemonic_help = H
+main_frame_menu_mnemonic_preferences = N
+
main_frame_menu_mnemonic_view = A
main_frame_menu_mnemonic_window = F
+main_frame_menu_preferences = Voreinstellungen
+
main_frame_menu_view = Ansicht
main_frame_menu_window = Fenster
@@ -267,6 +271,8 @@ main_frame_menuitem_hint_used_young_memory = Gr\u00F6\u00DFe des benutzten Speic
main_frame_menuitem_hint_watch = Beobachtet und aktualisiert die aktuelle Datei, falls sie sich \u00E4ndert
+main_frame_menuitem_hint_watchdog = \C4ndern Sie die Uhr neu laden Verz\F6gerungswert
+
main_frame_menuitem_hint_young_memory = Teil des Heaps, der die junge Generation ausmacht
main_frame_menuitem_inc_gc_lines = Inkrementelle GC Linien
@@ -330,6 +336,8 @@ main_frame_menuitem_mnemonic_used_young_memory = B
main_frame_menuitem_mnemonic_watch = B
+main_frame_menuitem_mnemonic_watchdog = B
+
main_frame_menuitem_mnemonic_young_memory = J
main_frame_menuitem_open_file = \u00D6ffne Datei
@@ -360,6 +368,8 @@ main_frame_menuitem_used_young_memory = Belegter junger Heap
main_frame_menuitem_watch = Beobachten
+main_frame_menuitem_watchdog = beobachten reload Verz\F6gerung
+
main_frame_menuitem_young_memory = Junge Generation
timeoffset_prompt = Startzeit des Logs:
@@ -369,3 +379,5 @@ urlopen_dialog_add_checkbox = Datei der aktuellen Ansicht hinzuf\u00FCgen.
urlopen_dialog_hint_add_checkbox = F\u00FCgt die Datei dem aktuell ausgew\u00E4hlten Fenster als neue
GC-Ansicht hinzu, anstatt ein neues Fenster zu \u00F6ffnen.
urlopen_dialog_title = \u00D6ffne GC URL
+
+watchreloaddelay_dialog_title = beobachten reload Verz\F6gerung
diff --git a/src/main/resources/localStrings_fr.properties b/src/main/resources/localStrings_fr.properties
index d7958386..4c53c54c 100644
--- a/src/main/resources/localStrings_fr.properties
+++ b/src/main/resources/localStrings_fr.properties
@@ -179,10 +179,14 @@ main_frame_menu_mnemonic_file = F
main_frame_menu_mnemonic_help = A
+main_frame_menu_mnemonic_preferences = P
+
main_frame_menu_mnemonic_view = V
main_frame_menu_mnemonic_window = F
+main_frame_menu_preferences = Pr�f�rences
+
main_frame_menu_view = Voir
main_frame_menu_window = Fen\u00EAtre
@@ -265,6 +269,8 @@ main_frame_menuitem_hint_used_young_memory = Quantit\u00E9 de m\u00E9moire effec
main_frame_menuitem_hint_watch = Surveille et recharge le fichier courant si ce dernier subit des modifications
+main_frame_menuitem_hint_watchdog = Modifiez la valeur de retard de rechargement de la montre
+
main_frame_menuitem_hint_young_memory = Par de la m\u00E9moire allou\u00E9e r\u00E9serv\u00E9e pour la nouvelle g\u00E9n\u00E9ration
main_frame_menuitem_inc_gc_lines = Rep\u00E8res des GC incr\u00E9mentaux
@@ -328,6 +334,8 @@ main_frame_menuitem_mnemonic_used_young_memory = U
main_frame_menuitem_mnemonic_watch = S
+main_frame_menuitem_mnemonic_watchdog = S
+
main_frame_menuitem_mnemonic_young_memory = N
main_frame_menuitem_open_file = Ouvrir un fichier
@@ -356,6 +364,8 @@ main_frame_menuitem_used_young_memory = M\u00E9moire nouvelle utilis\u00E9e
main_frame_menuitem_watch = Surveiller
+main_frame_menuitem_watchdog = D�lai de rechargement de surveiller
+
main_frame_menuitem_young_memory = Nouvelle g\u00E9n\u00E9ration
timeoffset_prompt = Date d\u00E9marrage du journal :
@@ -365,3 +375,5 @@ urlopen_dialog_add_checkbox = Ajouter l''URL \u00E0 la fen\u00EAtre courante.
urlopen_dialog_hint_add_checkbox = Si coch\u00E9, le nouveau journal sera ajout\u00E9
\u00E0 la fen\u00EAtre courante, au lieu d''\u00EAtre ouvert dans une nouvelle fen\u00EAtre.
urlopen_dialog_title = Ouvrir l''URL d''un journal
+
+watchreloaddelay_dialog_title = D�lai de rechargement de surveiller
diff --git a/src/main/resources/localStrings_sv.properties b/src/main/resources/localStrings_sv.properties
index 43410263..f4803aae 100644
--- a/src/main/resources/localStrings_sv.properties
+++ b/src/main/resources/localStrings_sv.properties
@@ -181,8 +181,12 @@ main_frame_menu_mnemonic_help = H
main_frame_menu_mnemonic_view = V
+main_frame_menu_mnemonic_preferences = P
+
main_frame_menu_mnemonic_window = F
+main_frame_menu_preferences = Preferenser
+
main_frame_menu_view = Visa
main_frame_menu_window = F\u00F6nster
@@ -265,6 +269,8 @@ main_frame_menuitem_hint_used_young_memory = Visar hur mycket minne som \u00E4r
main_frame_menuitem_hint_watch = Bevakar och laddar om nuvarande fil vid f\u00F6r\u00E4ndring
+main_frame_menuitem_hint_watchdog = \C4ndra klockan reload f\F6rdr\F6jningsv\E4rdet
+
main_frame_menuitem_hint_young_memory = Del av heapen som utg\u00F6r den unga (young) generationen
main_frame_menuitem_inc_gc_lines = Inkrementell GC (linje)
@@ -328,6 +334,8 @@ main_frame_menuitem_mnemonic_used_young_memory = A
main_frame_menuitem_mnemonic_watch = W
+main_frame_menuitem_mnemonic_watchdog = W
+
main_frame_menuitem_mnemonic_young_memory = Y
main_frame_menuitem_open_file = \u00D6ppna
@@ -356,6 +364,8 @@ main_frame_menuitem_used_young_memory = Anv\u00E4nt yngre (young) minne
main_frame_menuitem_watch = Bevaka
+main_frame_menuitem_watchdog = Bevaka reload f\F6rdr\F6jning
+
main_frame_menuitem_young_memory = Yngre (Young) generationen
timeoffset_prompt = Logg-starttid:
@@ -365,3 +375,5 @@ urlopen_dialog_add_checkbox = L\u00E4gg till URL till aktuellt f\u00F6nster
urlopen_dialog_hint_add_checkbox = Vid markering s\u00E5 kommer det nya dokumentett att l\u00E4ggas
till i aktuellt f\u00F6nster, annars \u00F6ppnas ett nytt
urlopen_dialog_title = \u00D6ppna GC-URL
+
+watchreloaddelay_dialog_title = Bevaka reload f\F6rdr\F6jning