removed tray icon
This commit is contained in:
parent
392e70ba01
commit
d0f93b19a9
@ -8,12 +8,8 @@ import java.awt.GridBagConstraints;
|
||||
import java.awt.GridBagLayout;
|
||||
import java.awt.Image;
|
||||
import java.awt.Insets;
|
||||
import java.awt.MenuItem;
|
||||
import java.awt.Point;
|
||||
import java.awt.PopupMenu;
|
||||
import java.awt.SystemTray;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.TrayIcon;
|
||||
import java.awt.datatransfer.StringSelection;
|
||||
import java.awt.event.ComponentAdapter;
|
||||
import java.awt.event.ComponentEvent;
|
||||
@ -86,8 +82,6 @@ public class KeepassApp extends JFrame {
|
||||
private static final int MAX_RECENT_FILES = 5;
|
||||
private File currentFile;
|
||||
private String currentPassword;
|
||||
|
||||
private TrayIcon trayIcon;
|
||||
|
||||
// Menu items that need state management
|
||||
private JMenuItem menuSave;
|
||||
@ -122,11 +116,7 @@ public class KeepassApp extends JFrame {
|
||||
public void windowClosing(WindowEvent e) {
|
||||
saveWindowState();
|
||||
saveComponentState();
|
||||
if (SystemTray.isSupported() && trayIcon != null) {
|
||||
setVisible(false);
|
||||
} else {
|
||||
System.exit(0);
|
||||
}
|
||||
System.exit(0);
|
||||
}
|
||||
});
|
||||
|
||||
@ -148,11 +138,6 @@ public class KeepassApp extends JFrame {
|
||||
|
||||
// Try to load last opened database
|
||||
loadLastDatabase();
|
||||
|
||||
// Small delay to let OS/Window Manager settle before checking tray
|
||||
Timer trayTimer = new Timer(1000, e -> initSystemTray());
|
||||
trayTimer.setRepeats(false);
|
||||
trayTimer.start();
|
||||
}
|
||||
|
||||
private void loadAppIcon() {
|
||||
@ -170,63 +155,6 @@ public class KeepassApp extends JFrame {
|
||||
}
|
||||
}
|
||||
|
||||
private void initSystemTray() {
|
||||
try {
|
||||
if (!SystemTray.isSupported()) {
|
||||
return;
|
||||
}
|
||||
SystemTray tray = SystemTray.getSystemTray();
|
||||
|
||||
java.net.URL iconUrl = getClass().getResource("/icon.png");
|
||||
if (iconUrl == null) return;
|
||||
|
||||
Image image;
|
||||
try {
|
||||
// Read image directly into a BufferedImage for better compatibility with XApp applet
|
||||
image = javax.imageio.ImageIO.read(iconUrl);
|
||||
} catch (Exception e) {
|
||||
image = Toolkit.getDefaultToolkit().getImage(iconUrl);
|
||||
}
|
||||
|
||||
PopupMenu popup = new PopupMenu();
|
||||
MenuItem showItem = new MenuItem("Show JKeepass");
|
||||
MenuItem lockItem = new MenuItem("Lock Database");
|
||||
MenuItem exitItem = new MenuItem("Exit");
|
||||
|
||||
showItem.addActionListener(e -> {
|
||||
setVisible(true);
|
||||
setExtendedState(JFrame.NORMAL);
|
||||
toFront();
|
||||
});
|
||||
lockItem.addActionListener(e -> lockDatabase());
|
||||
exitItem.addActionListener(e -> System.exit(0));
|
||||
|
||||
popup.add(showItem);
|
||||
popup.add(lockItem);
|
||||
popup.addSeparator();
|
||||
popup.add(exitItem);
|
||||
|
||||
trayIcon = new TrayIcon(image, "JKeepass", popup);
|
||||
trayIcon.setToolTip("JKeepass - Password Manager");
|
||||
trayIcon.setImageAutoSize(true);
|
||||
|
||||
trayIcon.addActionListener(e -> {
|
||||
setVisible(true);
|
||||
setExtendedState(JFrame.NORMAL);
|
||||
toFront();
|
||||
});
|
||||
|
||||
tray.add(trayIcon);
|
||||
if (statusLabel != null) {
|
||||
statusLabel.setText(" Ready (SysTray active)");
|
||||
}
|
||||
setupWindowListeners();
|
||||
} catch (Exception e) {
|
||||
// Silently fail if SystemTray is not available
|
||||
trayIcon = null;
|
||||
}
|
||||
}
|
||||
|
||||
private JFrame createRestoreFrame() {
|
||||
JFrame restoreFrame = new JFrame("JKeepass - Click to Restore");
|
||||
restoreFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
|
||||
@ -252,39 +180,9 @@ public class KeepassApp extends JFrame {
|
||||
}
|
||||
|
||||
private void minimizeToCustomTray() {
|
||||
if (SystemTray.isSupported() && trayIcon != null) {
|
||||
setVisible(false);
|
||||
} else {
|
||||
// Linux Mint doesn't support SystemTray - use floating restore button
|
||||
lockDatabase();
|
||||
JFrame restoreFrame = createRestoreFrame();
|
||||
restoreFrame.setVisible(true);
|
||||
setVisible(false);
|
||||
}
|
||||
}
|
||||
|
||||
private void setupWindowListeners() {
|
||||
for (java.awt.event.WindowListener wl : getWindowListeners()) {
|
||||
if (!(wl instanceof WindowAdapter) || wl.getClass().getName().contains("KeepassApp")) {
|
||||
removeWindowListener(wl);
|
||||
}
|
||||
}
|
||||
addWindowListener(new WindowAdapter() {
|
||||
@Override
|
||||
public void windowClosing(WindowEvent e) {
|
||||
if (trayIcon != null) {
|
||||
setVisible(false);
|
||||
} else {
|
||||
System.exit(0);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void windowIconified(WindowEvent e) {
|
||||
if (trayIcon != null) {
|
||||
setVisible(false);
|
||||
}
|
||||
}
|
||||
});
|
||||
// Lock and minimize
|
||||
lockDatabase();
|
||||
setVisible(false);
|
||||
}
|
||||
|
||||
private void initMenuBar() {
|
||||
@ -295,7 +193,7 @@ public class KeepassApp extends JFrame {
|
||||
JMenuItem openItem = new JMenuItem("Open Database...");
|
||||
recentMenu = new JMenu("Open Recent");
|
||||
menuSave = new JMenuItem("Save");
|
||||
JMenuItem minimizeItem = new JMenuItem(SystemTray.isSupported() ? "Minimize to Tray" : "Minimize & Lock");
|
||||
JMenuItem minimizeItem = new JMenuItem("Minimize & Lock");
|
||||
menuLock = new JMenuItem("Lock Database");
|
||||
JMenuItem exitItem = new JMenuItem("Exit");
|
||||
|
||||
@ -541,14 +439,7 @@ public class KeepassApp extends JFrame {
|
||||
statusBar.add(lockBtn, BorderLayout.EAST);
|
||||
add(statusBar, BorderLayout.PAGE_END);
|
||||
|
||||
// Tray diagnostic
|
||||
if (!SystemTray.isSupported()) {
|
||||
statusLabel.setText(" Ready (SysTray not supported - use Lock button)");
|
||||
} else if (trayIcon == null) {
|
||||
statusLabel.setText(" Ready (SysTray icon failed)");
|
||||
} else {
|
||||
statusLabel.setText(" Ready (SysTray active)");
|
||||
}
|
||||
statusLabel.setText(" Ready");
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user