mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-15 10:07:26 -05:00
Merge pull request #1725 from DSheirer/1554-view-logs-file-explorer
#1554 App View Menu Cleanup & File Explorer Location
This commit is contained in:
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@@ -4,7 +4,7 @@
|
|||||||
<component name="FrameworkDetectionExcludesConfiguration">
|
<component name="FrameworkDetectionExcludesConfiguration">
|
||||||
<file type="web" url="file://$PROJECT_DIR$" />
|
<file type="web" url="file://$PROJECT_DIR$" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_20" default="true" project-jdk-name="liberica-20" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_20_PREVIEW" project-jdk-name="liberica-20" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/out" />
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
@@ -97,8 +97,8 @@ public class ControllerPanel extends JPanel
|
|||||||
mTabbedPane.addTab("Map", mMapPanel);
|
mTabbedPane.addTab("Map", mMapPanel);
|
||||||
mTabbedPane.addTab("Tuners", mTunerManagerPanel);
|
mTabbedPane.addTab("Tuners", mTunerManagerPanel);
|
||||||
|
|
||||||
Icon gearIcon = IconFontSwing.buildIcon(FontAwesome.COG, 20, Color.DARK_GRAY);
|
Icon playIcon = IconFontSwing.buildIcon(FontAwesome.PLAY_CIRCLE_O, 20, Color.DARK_GRAY);
|
||||||
mTabbedPane.addTab("Playlist Editor", gearIcon, new JLabel("Show Playlist Manager"));
|
mTabbedPane.addTab("Playlist Editor", playIcon, new JLabel("Show Playlist Manager"));
|
||||||
mSettingsTabIndex = mTabbedPane.getTabCount() - 1;
|
mSettingsTabIndex = mTabbedPane.getTabCount() - 1;
|
||||||
|
|
||||||
//Set preferred size to influence the split between these panels
|
//Set preferred size to influence the split between these panels
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ import io.github.dsheirer.source.tuner.TunerEvent;
|
|||||||
import io.github.dsheirer.source.tuner.manager.DiscoveredTuner;
|
import io.github.dsheirer.source.tuner.manager.DiscoveredTuner;
|
||||||
import io.github.dsheirer.source.tuner.manager.TunerManager;
|
import io.github.dsheirer.source.tuner.manager.TunerManager;
|
||||||
import io.github.dsheirer.source.tuner.ui.TunerSpectralDisplayManager;
|
import io.github.dsheirer.source.tuner.ui.TunerSpectralDisplayManager;
|
||||||
import io.github.dsheirer.spectrum.ClearTunerMenuItem;
|
import io.github.dsheirer.spectrum.DisableSpectrumWaterfallMenuItem;
|
||||||
import io.github.dsheirer.spectrum.ShowTunerMenuItem;
|
import io.github.dsheirer.spectrum.ShowTunerMenuItem;
|
||||||
import io.github.dsheirer.spectrum.SpectralDisplayPanel;
|
import io.github.dsheirer.spectrum.SpectralDisplayPanel;
|
||||||
import io.github.dsheirer.util.ThreadPool;
|
import io.github.dsheirer.util.ThreadPool;
|
||||||
@@ -73,6 +73,7 @@ import java.awt.event.KeyEvent;
|
|||||||
import java.awt.event.WindowAdapter;
|
import java.awt.event.WindowAdapter;
|
||||||
import java.awt.event.WindowEvent;
|
import java.awt.event.WindowEvent;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.FileSystems;
|
import java.nio.file.FileSystems;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
@@ -415,56 +416,119 @@ public class SDRTrunk implements Listener<TunerEvent>
|
|||||||
JMenu viewMenu = new JMenu("View");
|
JMenu viewMenu = new JMenu("View");
|
||||||
|
|
||||||
JMenuItem viewPlaylistItem = new JMenuItem("Playlist Editor");
|
JMenuItem viewPlaylistItem = new JMenuItem("Playlist Editor");
|
||||||
|
viewPlaylistItem.setIcon(IconFontSwing.buildIcon(FontAwesome.PLAY_CIRCLE_O, 12));
|
||||||
viewPlaylistItem.addActionListener(e -> MyEventBus.getGlobalEventBus().post(new ViewPlaylistRequest()));
|
viewPlaylistItem.addActionListener(e -> MyEventBus.getGlobalEventBus().post(new ViewPlaylistRequest()));
|
||||||
viewMenu.add(viewPlaylistItem);
|
viewMenu.add(viewPlaylistItem);
|
||||||
|
|
||||||
viewMenu.add(new JSeparator());
|
viewMenu.add(new JSeparator());
|
||||||
|
|
||||||
|
JMenuItem viewApplicationLogsMenu = new JMenuItem("Application Log Files");
|
||||||
|
viewApplicationLogsMenu.setIcon(IconFontSwing.buildIcon(FontAwesome.FOLDER_OPEN_O, 12));
|
||||||
|
viewApplicationLogsMenu.addActionListener(arg0 -> {
|
||||||
|
File logsDirectory = mUserPreferences.getDirectoryPreference().getDirectoryApplicationLog().toFile();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Desktop.getDesktop().open(logsDirectory);
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
mLog.error("Couldn't open file explorer");
|
||||||
|
|
||||||
|
JOptionPane.showMessageDialog(mMainGui,
|
||||||
|
"Can't launch file explorer - files are located at: " + logsDirectory,
|
||||||
|
"Can't launch file explorer",
|
||||||
|
JOptionPane.ERROR_MESSAGE);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
viewMenu.add(viewApplicationLogsMenu);
|
||||||
|
|
||||||
|
JMenuItem viewRecordingsMenuItem = new JMenuItem("Audio Recordings");
|
||||||
|
viewRecordingsMenuItem.setIcon(IconFontSwing.buildIcon(FontAwesome.FOLDER_OPEN_O, 12));
|
||||||
|
viewRecordingsMenuItem.addActionListener(arg0 -> {
|
||||||
|
File recordingsDirectory = mUserPreferences.getDirectoryPreference().getDirectoryRecording().toFile();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Desktop.getDesktop().open(recordingsDirectory);
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
mLog.error("Couldn't open file explorer");
|
||||||
|
|
||||||
|
JOptionPane.showMessageDialog(mMainGui,
|
||||||
|
"Can't launch file explorer - files are located at: " +
|
||||||
|
recordingsDirectory,
|
||||||
|
"Can't launch file explorer",
|
||||||
|
JOptionPane.ERROR_MESSAGE);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
viewMenu.add(viewRecordingsMenuItem);
|
||||||
|
|
||||||
|
JMenuItem viewEventLogsMenu = new JMenuItem("Channel Event Log Files");
|
||||||
|
viewEventLogsMenu.setIcon(IconFontSwing.buildIcon(FontAwesome.FOLDER_OPEN_O, 12));
|
||||||
|
viewEventLogsMenu.addActionListener(arg0 -> {
|
||||||
|
File eventLogsDirectory = mUserPreferences.getDirectoryPreference().getDirectoryEventLog().toFile();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Desktop.getDesktop().open(eventLogsDirectory);
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
mLog.error("Couldn't open file explorer");
|
||||||
|
|
||||||
|
JOptionPane.showMessageDialog(mMainGui,
|
||||||
|
"Can't launch file explorer - files are located at: " + eventLogsDirectory,
|
||||||
|
"Can't launch file explorer",
|
||||||
|
JOptionPane.ERROR_MESSAGE);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
viewMenu.add(viewEventLogsMenu);
|
||||||
|
|
||||||
|
JMenuItem iconManagerMenu = new JMenuItem("Icon Manager");
|
||||||
|
iconManagerMenu.setIcon(IconFontSwing.buildIcon(FontAwesome.PICTURE_O, 12));
|
||||||
|
iconManagerMenu.addActionListener(arg0 -> MyEventBus.getGlobalEventBus().post(new ViewIconManagerRequest()));
|
||||||
|
viewMenu.add(iconManagerMenu);
|
||||||
|
|
||||||
JMenuItem recordingViewerMenu = new JMenuItem("Message Recording Viewer (.bits)");
|
JMenuItem recordingViewerMenu = new JMenuItem("Message Recording Viewer (.bits)");
|
||||||
|
recordingViewerMenu.setIcon(IconFontSwing.buildIcon(FontAwesome.BRAILLE, 12));
|
||||||
recordingViewerMenu.addActionListener(e -> MyEventBus.getGlobalEventBus().post(new ViewRecordingViewerRequest()));
|
recordingViewerMenu.addActionListener(e -> MyEventBus.getGlobalEventBus().post(new ViewRecordingViewerRequest()));
|
||||||
viewMenu.add(recordingViewerMenu);
|
viewMenu.add(recordingViewerMenu);
|
||||||
|
|
||||||
JMenuItem settingsMenu = new JMenuItem("Icon Manager");
|
JMenuItem viewScreenCapturesMenu = new JMenuItem("Screen Captures");
|
||||||
settingsMenu.addActionListener(arg0 -> MyEventBus.getGlobalEventBus().post(new ViewIconManagerRequest()));
|
viewScreenCapturesMenu.setIcon(IconFontSwing.buildIcon(FontAwesome.FOLDER_OPEN_O, 12));
|
||||||
viewMenu.add(settingsMenu);
|
viewScreenCapturesMenu.addActionListener(arg0 -> {
|
||||||
|
File screenCapturesDirectory = mUserPreferences.getDirectoryPreference().getDirectoryScreenCapture().toFile();
|
||||||
JMenuItem logFilesMenu = new JMenuItem("Logs & Recordings");
|
try
|
||||||
logFilesMenu.addActionListener(new ActionListener()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void actionPerformed(ActionEvent arg0)
|
|
||||||
{
|
{
|
||||||
try
|
Desktop.getDesktop().open(screenCapturesDirectory);
|
||||||
{
|
}
|
||||||
Desktop.getDesktop().open(getHomePath().toFile());
|
catch(Exception e)
|
||||||
}
|
{
|
||||||
catch(Exception e)
|
mLog.error("Couldn't open file explorer");
|
||||||
{
|
|
||||||
mLog.error("Couldn't open file explorer");
|
|
||||||
|
|
||||||
JOptionPane.showMessageDialog(mMainGui,
|
JOptionPane.showMessageDialog(mMainGui,
|
||||||
"Can't launch file explorer - files are located at: " +
|
"Can't launch file explorer - files are located at: " + screenCapturesDirectory,
|
||||||
getHomePath().toString(),
|
"Can't launch file explorer",
|
||||||
"Can't launch file explorer",
|
JOptionPane.ERROR_MESSAGE);
|
||||||
JOptionPane.ERROR_MESSAGE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
viewMenu.add(logFilesMenu);
|
viewMenu.add(viewScreenCapturesMenu);
|
||||||
|
|
||||||
JMenuItem preferencesItem = new JMenuItem("User Preferences");
|
JMenuItem preferencesItem = new JMenuItem("User Preferences");
|
||||||
|
preferencesItem.setIcon(IconFontSwing.buildIcon(FontAwesome.COG, 12));
|
||||||
preferencesItem.addActionListener(e -> MyEventBus.getGlobalEventBus().post(new ViewUserPreferenceEditorRequest()));
|
preferencesItem.addActionListener(e -> MyEventBus.getGlobalEventBus().post(new ViewUserPreferenceEditorRequest()));
|
||||||
viewMenu.add(preferencesItem);
|
viewMenu.add(preferencesItem);
|
||||||
|
|
||||||
viewMenu.add(new JSeparator());
|
viewMenu.add(new JSeparator());
|
||||||
viewMenu.add(new TunersMenu());
|
viewMenu.add(new TunersMenu());
|
||||||
viewMenu.add(new JSeparator());
|
viewMenu.add(new JSeparator());
|
||||||
viewMenu.add(new ClearTunerMenuItem(mSpectralPanel));
|
viewMenu.add(new DisableSpectrumWaterfallMenuItem(mSpectralPanel));
|
||||||
viewMenu.add(new BroadcastStatusVisibleMenuItem(mControllerPanel));
|
viewMenu.add(new BroadcastStatusVisibleMenuItem(mControllerPanel));
|
||||||
|
|
||||||
menuBar.add(viewMenu);
|
menuBar.add(viewMenu);
|
||||||
|
|
||||||
JMenuItem screenCaptureItem = new JMenuItem("Screen Capture");
|
JMenuItem screenCaptureItem = new JMenuItem("Screen Capture");
|
||||||
|
screenCaptureItem.setIcon(IconFontSwing.buildIcon(FontAwesome.CAMERA, 12));
|
||||||
screenCaptureItem.setMnemonic(KeyEvent.VK_C);
|
screenCaptureItem.setMnemonic(KeyEvent.VK_C);
|
||||||
screenCaptureItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.ALT_MASK));
|
screenCaptureItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.ALT_MASK));
|
||||||
screenCaptureItem.setMaximumSize(screenCaptureItem.getPreferredSize());
|
screenCaptureItem.setMaximumSize(screenCaptureItem.getPreferredSize());
|
||||||
|
|||||||
@@ -1,46 +0,0 @@
|
|||||||
/*******************************************************************************
|
|
||||||
* sdr-trunk
|
|
||||||
* Copyright (C) 2014-2018 Dennis Sheirer
|
|
||||||
*
|
|
||||||
* 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 3 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, see <http://www.gnu.org/licenses/>
|
|
||||||
*
|
|
||||||
******************************************************************************/
|
|
||||||
package io.github.dsheirer.spectrum;
|
|
||||||
|
|
||||||
import io.github.dsheirer.properties.SystemProperties;
|
|
||||||
|
|
||||||
import javax.swing.JMenuItem;
|
|
||||||
import java.awt.event.ActionEvent;
|
|
||||||
import java.awt.event.ActionListener;
|
|
||||||
|
|
||||||
public class ClearTunerMenuItem extends JMenuItem
|
|
||||||
{
|
|
||||||
private SpectralDisplayPanel mSpectralDisplayPanel;
|
|
||||||
|
|
||||||
public ClearTunerMenuItem(SpectralDisplayPanel spectralDisplayPanel)
|
|
||||||
{
|
|
||||||
super("Disable Spectrum & Waterfall");
|
|
||||||
|
|
||||||
mSpectralDisplayPanel = spectralDisplayPanel;
|
|
||||||
|
|
||||||
addActionListener(new ActionListener()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void actionPerformed(ActionEvent e)
|
|
||||||
{
|
|
||||||
SystemProperties properties = SystemProperties.getInstance();
|
|
||||||
properties.set(SpectralDisplayPanel.SPECTRAL_DISPLAY_ENABLED, false);
|
|
||||||
mSpectralDisplayPanel.clearTuner();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
* *****************************************************************************
|
||||||
|
* Copyright (C) 2014-2023 Dennis Sheirer
|
||||||
|
*
|
||||||
|
* 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 3 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, see <http://www.gnu.org/licenses/>
|
||||||
|
* ****************************************************************************
|
||||||
|
*/
|
||||||
|
package io.github.dsheirer.spectrum;
|
||||||
|
|
||||||
|
import io.github.dsheirer.properties.SystemProperties;
|
||||||
|
import jiconfont.icons.font_awesome.FontAwesome;
|
||||||
|
import jiconfont.swing.IconFontSwing;
|
||||||
|
|
||||||
|
import javax.swing.JMenuItem;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Menu item to disable the spectrum and waterfall and no longer monitor a tuner.
|
||||||
|
*/
|
||||||
|
public class DisableSpectrumWaterfallMenuItem extends JMenuItem
|
||||||
|
{
|
||||||
|
private SpectralDisplayPanel mSpectralDisplayPanel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct an instance
|
||||||
|
* @param spectralDisplayPanel to disable.
|
||||||
|
*/
|
||||||
|
public DisableSpectrumWaterfallMenuItem(SpectralDisplayPanel spectralDisplayPanel)
|
||||||
|
{
|
||||||
|
super("Disable Spectrum & Waterfall");
|
||||||
|
setIcon(IconFontSwing.buildIcon(FontAwesome.EYE_SLASH, 12));
|
||||||
|
|
||||||
|
mSpectralDisplayPanel = spectralDisplayPanel;
|
||||||
|
|
||||||
|
addActionListener(e -> {
|
||||||
|
SystemProperties properties = SystemProperties.getInstance();
|
||||||
|
properties.set(SpectralDisplayPanel.SPECTRAL_DISPLAY_ENABLED, false);
|
||||||
|
mSpectralDisplayPanel.clearTuner();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -763,7 +763,7 @@ public class SpectralDisplayPanel extends JPanel
|
|||||||
if(mTuner != null)
|
if(mTuner != null)
|
||||||
{
|
{
|
||||||
contextMenu.add(new JSeparator());
|
contextMenu.add(new JSeparator());
|
||||||
contextMenu.add(new ClearTunerMenuItem(SpectralDisplayPanel.this));
|
contextMenu.add(new DisableSpectrumWaterfallMenuItem(SpectralDisplayPanel.this));
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean separatorAdded = false;
|
boolean separatorAdded = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user