Skip to content

Commit 004cbc3

Browse files
committed
feat: print the project name in the title bar
1 parent c46c6b0 commit 004cbc3

1 file changed

Lines changed: 65 additions & 1 deletion

File tree

src/main/java/core/packetproxy/gui/GUIMain.java

Lines changed: 65 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,19 @@
2525
import java.awt.event.WindowEvent;
2626
import java.beans.PropertyChangeEvent;
2727
import java.beans.PropertyChangeListener;
28+
import java.nio.file.Path;
2829
import javax.swing.*;
2930
import javax.swing.UIManager.LookAndFeelInfo;
3031
import javax.swing.text.DefaultEditorKit;
3132
import javax.swing.text.JTextComponent;
3233
import javax.swing.text.Keymap;
34+
import org.apache.commons.io.FilenameUtils;
3335
import packetproxy.common.FontManager;
3436
import packetproxy.common.I18nString;
37+
import packetproxy.model.Database;
38+
import packetproxy.model.Database.DatabaseMessage;
3539
import packetproxy.model.InterceptModel;
40+
import packetproxy.model.PropertyChangeEventType;
3641
import packetproxy.util.PacketProxyUtility;
3742

3843
public class GUIMain extends JFrame implements PropertyChangeListener {
@@ -50,6 +55,7 @@ public class GUIMain extends JFrame implements PropertyChangeListener {
5055
private GUIVulCheckHelper gui_vulcheckhelper;
5156
private GUILog gui_log;
5257
private InterceptModel interceptModel;
58+
private String version;
5359

5460
public enum Panes {
5561
HISTORY, INTERCEPT, RESENDER, VULCHECKHELPER, BULKSENDER, EXTENSIONS, OPTIONS, LOG
@@ -99,11 +105,19 @@ private String getPaneString(Panes num) {
99105

100106
private GUIMain(String title) {
101107
try {
108+
// Extract version from title (format: "PacketProxy X.Y.Z")
109+
this.version = title.replace("PacketProxy ", "");
102110

103111
setIcon();
104112
gui_history = initProjectAndHistory();
105113
setLookandFeel();
106-
setTitle(title);
114+
115+
// Register for database events
116+
Database.getInstance().addPropertyChangeListener(this);
117+
118+
// Set initial title with project name
119+
updateTitle();
120+
107121
setBounds(10, 10, 1100, 850);
108122
enableFullScreenForMac(this);
109123

@@ -326,14 +340,64 @@ private void setInterceptDownLight() {
326340
tabbedpane.repaint();
327341
}
328342

343+
private String getProjectDisplayName() {
344+
try {
345+
Database db = Database.getInstance();
346+
Path dbPath = db.getDatabasePath();
347+
348+
if (dbPath == null) {
349+
return "Unknown";
350+
}
351+
352+
String fileName = dbPath.getFileName().toString();
353+
354+
// Handle default database
355+
if (fileName.equals("resources.sqlite3")) {
356+
return "Default";
357+
}
358+
359+
// Handle temporary/loaded databases
360+
if (fileName.equals("resources_temp.sqlite3")) {
361+
return "Temporary";
362+
}
363+
364+
// Handle temporary projects (format: packetproxy-yyyyMMdd-HHmmss.sqlite3)
365+
if (fileName.startsWith("packetproxy-") && fileName.matches("packetproxy-\\d{8}-\\d{6}\\.sqlite3")) {
366+
return "Temporary";
367+
}
368+
369+
// Extract project name from filename (remove .sqlite3 extension)
370+
return FilenameUtils.removeExtension(fileName);
371+
} catch (Exception e) {
372+
return "Unknown";
373+
}
374+
}
375+
376+
public void updateTitle() {
377+
String projectName = getProjectDisplayName();
378+
String titleText = String.format("PacketProxy %s - %s", version, projectName);
379+
setTitle(titleText);
380+
}
381+
329382
@Override
330383
public void propertyChange(PropertyChangeEvent evt) {
384+
// Handle intercept model events
331385
if (interceptModel.getData() == null) {
332386

333387
setInterceptDownLight();
334388
} else {
335389

336390
setInterceptHighLight();
337391
}
392+
393+
// Handle database reconnection events to update title
394+
if (PropertyChangeEventType.DATABASE_MESSAGE.matches(evt)) {
395+
if (evt.getNewValue() instanceof DatabaseMessage) {
396+
DatabaseMessage msg = (DatabaseMessage) evt.getNewValue();
397+
if (msg == DatabaseMessage.RECONNECT) {
398+
SwingUtilities.invokeLater(this::updateTitle);
399+
}
400+
}
401+
}
338402
}
339403
}

0 commit comments

Comments
 (0)