Skip to content

Commit

Permalink
Bug Fix: Fixed a case where the changed theme colors was not applied
Browse files Browse the repository at this point in the history
  • Loading branch information
GoldenGnu committed Nov 3, 2021
1 parent 9994487 commit a130411
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 5 deletions.
29 changes: 29 additions & 0 deletions src/main/java/net/nikr/eve/jeveasset/data/settings/ColorTheme.java
Expand Up @@ -197,5 +197,34 @@ private Color toColor(Colors colors) {
}

}

@Override
public int hashCode() {
int hash = 7;
hash = 17 * hash + Objects.hashCode(this.background);
hash = 17 * hash + Objects.hashCode(this.foreground);
return hash;
}

@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final ColorThemeEntry other = (ColorThemeEntry) obj;
if (!Objects.equals(this.background, other.background)) {
return false;
}
if (!Objects.equals(this.foreground, other.foreground)) {
return false;
}
return true;
}
}
}
Expand Up @@ -40,6 +40,7 @@
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
import java.util.List;
import javax.swing.ButtonGroup;
Expand All @@ -53,10 +54,10 @@
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
import net.nikr.eve.jeveasset.Program;
import net.nikr.eve.jeveasset.data.settings.ColorTheme;
import net.nikr.eve.jeveasset.data.settings.ColorTheme.ColorThemeTypes;
import net.nikr.eve.jeveasset.data.settings.ColorSettings.ColorRow;
import net.nikr.eve.jeveasset.data.settings.ColorSettings.PredefinedLookAndFeel;
import net.nikr.eve.jeveasset.data.settings.ColorTheme.ColorThemeEntry;
import net.nikr.eve.jeveasset.data.settings.Settings;
import net.nikr.eve.jeveasset.gui.images.Images;
import net.nikr.eve.jeveasset.gui.shared.JSimpleColorPicker;
Expand All @@ -78,6 +79,7 @@ public class ColorSettingsPanel extends JSettingsPanel {
private final EventList<ColorRow> eventList;
private final DefaultEventSelectionModel<ColorRow> selectionModel;
private ColorThemeTypes colorThemeTypes;
private Collection<ColorThemeEntry> colors;
private String lookAndFeelClass;
private boolean updateLock = false;
private final List<JThemeMenuItem> jThemeMenuItems = new ArrayList<>();
Expand Down Expand Up @@ -305,11 +307,10 @@ public void actionPerformed(ActionEvent e) {

@Override
public boolean save() {
ColorTheme colorTheme = colorThemeTypes.getInstance();
boolean lookAndfeelChanged = !Settings.get().getColorSettings().getLookAndFeelClass().equals(lookAndFeelClass);
boolean update = !colorTheme.equals(Settings.get().getColorSettings().getColorTheme())
|| lookAndfeelChanged;
Settings.get().getColorSettings().setColorTheme(colorTheme, true); //Later overwritten by table values, but, set uneditable values
boolean colorChanged = !Settings.get().getColorSettings().getColorTheme().getColors().values().equals(colors);
boolean update = lookAndfeelChanged || colorChanged;
Settings.get().getColorSettings().setColorTheme(colorThemeTypes.getInstance(), true); //Later overwritten by table values, but, set uneditable values
Settings.get().getColorSettings().setLookAndFeelClass(lookAndFeelClass);
try {
eventList.getReadWriteLock().readLock().lock();
Expand All @@ -319,6 +320,7 @@ public boolean save() {
} finally {
eventList.getReadWriteLock().readLock().unlock();
}
colors = new ArrayList<>(colorThemeTypes.getInstance().getColors().values()); //Copy to check for changes on save
if (lookAndfeelChanged && !UIManager.getLookAndFeel().getClass().getName().equals(lookAndFeelClass)) {
JOptionPane.showMessageDialog(parent, DialoguesSettings.get().lookAndFeelMsg(), DialoguesSettings.get().lookAndFeelTitle(), JOptionPane.PLAIN_MESSAGE);
}
Expand All @@ -331,6 +333,7 @@ public void load() {
updateTable(Settings.get().getColorSettings().get());
colorThemeTypes = Settings.get().getColorSettings().getColorTheme().getType();
select(colorThemeTypes);
colors = new ArrayList<>(colorThemeTypes.getInstance().getColors().values()); //Copy to check for changes on save
lookAndFeelClass = Settings.get().getColorSettings().getLookAndFeelClass();
select(lookAndFeelClass);
updateLock = false;
Expand Down

0 comments on commit a130411

Please sign in to comment.