fix: adds a number to the "saved states" and "extra disks" tabs when data is available
This commit is contained in:
parent
3dda927383
commit
963ae7e3a3
2
pom.xml
2
pom.xml
|
@ -2,7 +2,7 @@
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>se.lantz</groupId>
|
<groupId>se.lantz</groupId>
|
||||||
<artifactId>PCUAEManager</artifactId>
|
<artifactId>PCUAEManager</artifactId>
|
||||||
<version>2.16.2</version>
|
<version>2.16.3</version>
|
||||||
<name>PCUAEManager</name>
|
<name>PCUAEManager</name>
|
||||||
<properties>
|
<properties>
|
||||||
<project.build.sourceEncoding>Cp1252</project.build.sourceEncoding>
|
<project.build.sourceEncoding>Cp1252</project.build.sourceEncoding>
|
||||||
|
|
|
@ -10,6 +10,7 @@ import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
|
import java.beans.Beans;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -60,6 +61,8 @@ public class GameDetailsBackgroundPanel extends JPanel
|
||||||
private SystemPanel systemPanel;
|
private SystemPanel systemPanel;
|
||||||
private SaveStateBackgroundPanel savesBackgroundPanel;
|
private SaveStateBackgroundPanel savesBackgroundPanel;
|
||||||
private ExtraDisksPanel extraDisksPanel;
|
private ExtraDisksPanel extraDisksPanel;
|
||||||
|
private SystemTabComponent savedStatesTabComponent;
|
||||||
|
private SystemTabComponent extraDisksTabComponent;
|
||||||
private JPanel buttonPanel;
|
private JPanel buttonPanel;
|
||||||
private JButton saveButton;
|
private JButton saveButton;
|
||||||
private ScraperDialog scraperDialog = null;
|
private ScraperDialog scraperDialog = null;
|
||||||
|
@ -105,6 +108,12 @@ public class GameDetailsBackgroundPanel extends JPanel
|
||||||
saveButton.setEnabled(model.isDataChanged());
|
saveButton.setEnabled(model.isDataChanged());
|
||||||
runButton.setEnabled(!model.getInfoModel().getGamesFile().isEmpty());
|
runButton.setEnabled(!model.getInfoModel().getGamesFile().isEmpty());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (!Beans.isDesignTime())
|
||||||
|
{
|
||||||
|
model.getSavedStatesModel().addPropertyChangeListener(e -> updateSystemTabs());
|
||||||
|
model.getInfoModel().addPropertyChangeListener(e -> updateSystemTabs());
|
||||||
|
}
|
||||||
cursorTimer = new Timer(500, defaultCursorAction);
|
cursorTimer = new Timer(500, defaultCursorAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -192,10 +201,34 @@ public class GameDetailsBackgroundPanel extends JPanel
|
||||||
systemSavesTabbedPane.addTab("System Settings", getSystemPanel());
|
systemSavesTabbedPane.addTab("System Settings", getSystemPanel());
|
||||||
systemSavesTabbedPane.addTab("Saved states", getSavesBackgroundPanel());
|
systemSavesTabbedPane.addTab("Saved states", getSavesBackgroundPanel());
|
||||||
systemSavesTabbedPane.addTab("Extra disks", getExtraDisksPanel());
|
systemSavesTabbedPane.addTab("Extra disks", getExtraDisksPanel());
|
||||||
|
|
||||||
|
systemSavesTabbedPane.setTabComponentAt(1, getSavedStatesTabComponent());
|
||||||
|
systemSavesTabbedPane.setTabComponentAt(2, getExtraDisksTabComponent());
|
||||||
|
|
||||||
updateSavedStatesTabTitle();
|
updateSavedStatesTabTitle();
|
||||||
}
|
}
|
||||||
return systemSavesTabbedPane;
|
return systemSavesTabbedPane;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private SystemTabComponent getSavedStatesTabComponent()
|
||||||
|
{
|
||||||
|
if (savedStatesTabComponent == null)
|
||||||
|
{
|
||||||
|
savedStatesTabComponent = new SystemTabComponent("Saved states");
|
||||||
|
savedStatesTabComponent.setNumber("");
|
||||||
|
}
|
||||||
|
return savedStatesTabComponent;
|
||||||
|
}
|
||||||
|
|
||||||
|
private SystemTabComponent getExtraDisksTabComponent()
|
||||||
|
{
|
||||||
|
if (extraDisksTabComponent == null)
|
||||||
|
{
|
||||||
|
extraDisksTabComponent = new SystemTabComponent("Extra disks");
|
||||||
|
extraDisksTabComponent.setNumber("");
|
||||||
|
}
|
||||||
|
return extraDisksTabComponent;
|
||||||
|
}
|
||||||
|
|
||||||
protected InfoBackgroundPanel getInfoBackgroundPanel()
|
protected InfoBackgroundPanel getInfoBackgroundPanel()
|
||||||
{
|
{
|
||||||
|
@ -528,4 +561,13 @@ public class GameDetailsBackgroundPanel extends JPanel
|
||||||
getSystemSavesTabbedPane().setTitleAt(1, title);
|
getSystemSavesTabbedPane().setTitleAt(1, title);
|
||||||
getSavesBackgroundPanel().resetCurrentGameReference();
|
getSavesBackgroundPanel().resetCurrentGameReference();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateSystemTabs()
|
||||||
|
{
|
||||||
|
int availableSavedStates = model.getSavedStatesModel().getNumberOfAvailableSavedStates();
|
||||||
|
getSavedStatesTabComponent().setNumber(availableSavedStates > 0 ? Integer.toString(availableSavedStates) : "");
|
||||||
|
|
||||||
|
int availableExtraDisks = model.getInfoModel().getNumberOfExtraDisks();
|
||||||
|
getExtraDisksTabComponent().setNumber(availableExtraDisks > 0 ? Integer.toString(availableExtraDisks) : "");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
package se.lantz.gui;
|
||||||
|
|
||||||
|
import java.awt.Font;
|
||||||
|
import java.awt.GridBagConstraints;
|
||||||
|
import java.awt.GridBagLayout;
|
||||||
|
import java.awt.Insets;
|
||||||
|
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
|
public class SystemTabComponent extends JPanel
|
||||||
|
{
|
||||||
|
private JLabel textLabel;
|
||||||
|
private JLabel numberLabel;
|
||||||
|
|
||||||
|
public SystemTabComponent(String text)
|
||||||
|
{
|
||||||
|
GridBagLayout gridBagLayout = new GridBagLayout();
|
||||||
|
gridBagLayout.columnWidths = new int[] { 0, 0, 0 };
|
||||||
|
gridBagLayout.rowHeights = new int[] { 0, 0 };
|
||||||
|
gridBagLayout.columnWeights = new double[] { 0.0, 0.0, Double.MIN_VALUE };
|
||||||
|
gridBagLayout.rowWeights = new double[] { 0.0, Double.MIN_VALUE };
|
||||||
|
setLayout(gridBagLayout);
|
||||||
|
GridBagConstraints gbc_descrLabel = new GridBagConstraints();
|
||||||
|
gbc_descrLabel.insets = new Insets(0, 0, 0, 5);
|
||||||
|
gbc_descrLabel.gridx = 0;
|
||||||
|
gbc_descrLabel.gridy = 0;
|
||||||
|
add(getTextLabel(), gbc_descrLabel);
|
||||||
|
GridBagConstraints gbc_languageLabel = new GridBagConstraints();
|
||||||
|
gbc_languageLabel.gridx = 1;
|
||||||
|
gbc_languageLabel.gridy = 0;
|
||||||
|
add(getNumberLabel(), gbc_languageLabel);
|
||||||
|
getTextLabel().setText(text);
|
||||||
|
this.setOpaque(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private JLabel getTextLabel()
|
||||||
|
{
|
||||||
|
if (textLabel == null)
|
||||||
|
{
|
||||||
|
textLabel = new JLabel("");
|
||||||
|
}
|
||||||
|
return textLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JLabel getNumberLabel()
|
||||||
|
{
|
||||||
|
if (numberLabel == null)
|
||||||
|
{
|
||||||
|
numberLabel = new JLabel("");
|
||||||
|
numberLabel.setFont(getNumberLabel().getFont().deriveFont(Font.BOLD));
|
||||||
|
}
|
||||||
|
return numberLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNumber(String text)
|
||||||
|
{
|
||||||
|
if (text.isBlank())
|
||||||
|
{
|
||||||
|
getNumberLabel().setText("");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
getNumberLabel().setText("(" + text + ")");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -592,6 +592,32 @@ public class InfoModel extends AbstractModel implements CommonInfoModel
|
||||||
notifyChange();
|
notifyChange();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getNumberOfExtraDisks()
|
||||||
|
{
|
||||||
|
int extraDisks = 0;
|
||||||
|
if (!disk2File.isBlank())
|
||||||
|
{
|
||||||
|
extraDisks++;
|
||||||
|
}
|
||||||
|
if (!disk3File.isBlank())
|
||||||
|
{
|
||||||
|
extraDisks++;
|
||||||
|
}
|
||||||
|
if (!disk4File.isBlank())
|
||||||
|
{
|
||||||
|
extraDisks++;
|
||||||
|
}
|
||||||
|
if (!disk5File.isBlank())
|
||||||
|
{
|
||||||
|
extraDisks++;
|
||||||
|
}
|
||||||
|
if (!disk6File.isBlank())
|
||||||
|
{
|
||||||
|
extraDisks++;
|
||||||
|
}
|
||||||
|
return extraDisks;
|
||||||
|
}
|
||||||
|
|
||||||
public void updateFileNames()
|
public void updateFileNames()
|
||||||
{
|
{
|
||||||
|
|
|
@ -359,6 +359,28 @@ public class SavedStatesModel extends AbstractModel
|
||||||
notifyChange();
|
notifyChange();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getNumberOfAvailableSavedStates()
|
||||||
|
{
|
||||||
|
int availableStates = 0;
|
||||||
|
if (!state1File.isBlank())
|
||||||
|
{
|
||||||
|
availableStates++;
|
||||||
|
}
|
||||||
|
if (!state2File.isBlank())
|
||||||
|
{
|
||||||
|
availableStates++;
|
||||||
|
}
|
||||||
|
if (!state3File.isBlank())
|
||||||
|
{
|
||||||
|
availableStates++;
|
||||||
|
}
|
||||||
|
if (!state4File.isBlank())
|
||||||
|
{
|
||||||
|
availableStates++;
|
||||||
|
}
|
||||||
|
return availableStates;
|
||||||
|
}
|
||||||
|
|
||||||
public void resetProperties()
|
public void resetProperties()
|
||||||
{
|
{
|
||||||
state1PngFile = "";
|
state1PngFile = "";
|
||||||
|
|
Loading…
Reference in New Issue