Skip to content

Commit 135edb0

Browse files
committed
worked on the TM compatibility sheet
1 parent baa0c08 commit 135edb0

14 files changed

Lines changed: 466 additions & 89 deletions

src/main/java/io/github/turtleisaac/pokeditor/DataManager.java

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,14 @@
3232
import io.github.turtleisaac.pokeditor.gamedata.GameCodeBinaries;
3333
import io.github.turtleisaac.pokeditor.gamedata.GameFiles;
3434
import io.github.turtleisaac.pokeditor.gamedata.Tables;
35+
import io.github.turtleisaac.pokeditor.gamedata.TextFiles;
3536
import io.github.turtleisaac.pokeditor.gui.PokeditorManager;
3637
import io.github.turtleisaac.pokeditor.gui.editors.DefaultEditorPanel;
3738
import io.github.turtleisaac.pokeditor.gui.editors.formats.pokemon_sprite.PokemonSpriteEditor;
3839
import io.github.turtleisaac.pokeditor.gui.sheets.DefaultSheetPanel;
39-
import io.github.turtleisaac.pokeditor.gui.sheets.tables.formats.EvolutionsTable;
40-
import io.github.turtleisaac.pokeditor.gui.sheets.tables.formats.LearnsetsTable;
41-
import io.github.turtleisaac.pokeditor.gui.sheets.tables.formats.MovesTable;
42-
import io.github.turtleisaac.pokeditor.gui.sheets.tables.formats.PersonalTable;
40+
import io.github.turtleisaac.pokeditor.gui.sheets.tables.editors.ComboBoxCellEditor;
41+
import io.github.turtleisaac.pokeditor.gui.sheets.tables.formats.*;
42+
import io.github.turtleisaac.pokeditor.gui.sheets.tables.renderers.ComboBoxHeaderRenderer;
4343

4444
import java.lang.reflect.ParameterizedType;
4545
import java.util.HashMap;
@@ -57,6 +57,16 @@ public class DataManager
5757
return new DefaultSheetPanel<>(manager, new PersonalTable(data, textData));
5858
}
5959

60+
public static DefaultSheetPanel<PersonalData, ?> createTmCompatibilitySheet(PokeditorManager manager, NintendoDsRom rom)
61+
{
62+
List<TextBankData> textData = DataManager.getData(rom, TextBankData.class);
63+
List<PersonalData> data = DataManager.getData(rom, PersonalData.class);
64+
DefaultSheetPanel<PersonalData, ?> sheetPanel = new DefaultSheetPanel<>(manager, new TmCompatibilityTable(data, textData));
65+
// String[] moveNames = textData.get(TextFiles.MOVE_NAMES.getValue()).getStringList().toArray(String[]::new);
66+
// sheetPanel.thing(new ComboBoxCellEditor(moveNames));
67+
return sheetPanel;
68+
}
69+
6070
public static DefaultSheetPanel<EvolutionData, ?> createEvolutionSheet(PokeditorManager manager, NintendoDsRom rom)
6171
{
6272
List<TextBankData> textData = DataManager.getData(rom, TextBankData.class);
@@ -160,7 +170,7 @@ public static void codeBinarySetup(NintendoDsRom rom)
160170

161171
MemBuf.MemBufWriter writer = arm9.getPhysicalAddressBuffer().writer();
162172
int pos = writer.getPosition();
163-
writer.setPosition(0xBB4);
173+
writer.setPosition(0xBB4); //todo account for DP if I ever add back support
164174
writer.writeInt(0);
165175
writer.setPosition(pos);
166176
}
@@ -169,9 +179,16 @@ public static void saveCodeBinaries(NintendoDsRom rom, List<GameCodeBinaries> co
169179
{
170180
for (GameCodeBinaries codeBinary : codeBinaries)
171181
{
172-
if(codeBinary == GameCodeBinaries.ARM9)
173-
{
174-
rom.setArm9(DataManager.codeBinaries.get(codeBinary).getData());
182+
CodeBinary binary = DataManager.codeBinaries.get(codeBinary);
183+
binary.lock();
184+
try {
185+
if(codeBinary == GameCodeBinaries.ARM9)
186+
{
187+
rom.setArm9(binary.getData());
188+
}
189+
}
190+
finally {
191+
binary.unlock();
175192
}
176193
}
177194
}

src/main/java/io/github/turtleisaac/pokeditor/Main.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import javax.swing.*;
44

5+
import com.formdev.flatlaf.extras.FlatUIDefaultsInspector;
56
import com.formdev.flatlaf.intellijthemes.*;
67
import com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatAtomOneLightIJTheme;
78
import com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatLightOwlIJTheme;
@@ -30,6 +31,7 @@ public class Main
3031

3132
public static void main(String[] args) throws IOException
3233
{
34+
FlatUIDefaultsInspector.install( "ctrl shift alt Y" );
3335
String[] mainMenuJokes = new String(Main.class.getResourceAsStream(jokesPath).readAllBytes(), StandardCharsets.UTF_8).split("\n");
3436

3537
// Locale.setDefault(Locale.CHINA);

src/main/java/io/github/turtleisaac/pokeditor/gui/PokeditorManager.java

Lines changed: 57 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,26 @@ public class PokeditorManager extends PanelManager
6666
new Color(102, 102, 102),
6767
};
6868

69+
public static final Color[] darkModeTypeColors = new Color[]{new Color(116, 116, 116),
70+
new Color(130, 72, 71),
71+
new Color(101, 133, 133),
72+
new Color(86, 57, 112),
73+
new Color(157, 129, 92),
74+
new Color(99, 79, 26),
75+
new Color(123, 152, 103),
76+
new Color(77, 69, 105),
77+
new Color(68, 68, 68),
78+
new Color(192, 166, 212), //
79+
new Color(61, 24, 16), //
80+
new Color(55, 82, 140), //
81+
new Color(59, 81, 44),
82+
new Color(163, 144, 79),
83+
new Color(180, 122, 116),
84+
new Color(38, 100, 100),
85+
new Color(30, 30, 76),
86+
new Color(17, 17, 17),
87+
};
88+
6989
static {
7090
try {
7191
sheetExportIcon = new FlatSVGIcon(PokeditorManager.class.getResourceAsStream("/pokeditor/icons/svg/table-export.svg"));
@@ -83,13 +103,25 @@ public class PokeditorManager extends PanelManager
83103
searchIcon.setColorFilter(ThemeUtils.iconColorFilter);
84104
clipboardIcon.setColorFilter(ThemeUtils.iconColorFilter);
85105
copyIcon.setColorFilter(ThemeUtils.iconColorFilter);
106+
107+
/*
108+
this code determines if the label foreground color is closer to/further from black/white, then uses that
109+
to select which set of colors to use for the types on the sheets (lighter or darker)
110+
(the idea being a darker theme tends to have a lighter text foreground color)
111+
*/
112+
Color c = UIManager.getColor("Label.foreground");
113+
double diff = (double) (c.getRed() + c.getBlue() + c.getGreen()) / 3;
114+
if (Math.max(diff, 255 - diff) == diff)
115+
{
116+
System.arraycopy(darkModeTypeColors, 0, typeColors, 0, typeColors.length);
117+
}
86118
}
87119
catch(IOException e) {
88120
throw new RuntimeException(e);
89121
}
90122
}
91123

92-
private final Map<Class<? extends GenericFileData>, DefaultSheetPanel<? extends GenericFileData, ? extends Enum<?>>> sheetPanels;
124+
// private final Map<Class<? extends GenericFileData>, DefaultSheetPanel<? extends GenericFileData, ? extends Enum<?>>> sheetPanels;
93125
private List<JPanel> panels;
94126

95127
private NintendoDsRom rom;
@@ -108,7 +140,7 @@ public PokeditorManager(Tool tool)
108140

109141
DataManager.codeBinarySetup(rom);
110142

111-
sheetPanels = new HashMap<>();
143+
// sheetPanels = new HashMap<>();
112144
panels = new ArrayList<>();
113145
// JPanel placeholder = new JPanel();
114146
// placeholder.setName("Test panel");
@@ -122,30 +154,33 @@ public PokeditorManager(Tool tool)
122154

123155
DefaultSheetPanel<PersonalData, ?> personalPanel = DataManager.createPersonalSheet(this, rom);
124156
personalPanel.setName("Personal Sheet");
125-
sheetPanels.put(PersonalData.class, personalPanel);
157+
// sheetPanels.put(PersonalData.class, personalPanel);
158+
159+
DefaultSheetPanel<PersonalData, ?> tmCompatibilityPanel = DataManager.createTmCompatibilitySheet(this, rom);
160+
tmCompatibilityPanel.setName("TMs Sheet");
161+
// sheetPanels.put(PersonalData.class, tmCompatibilityPanel);
126162
// panels.add(personalPanel);
127163

128164
DefaultSheetPanel<EvolutionData, ?> evolutionsPanel = DataManager.createEvolutionSheet(this, rom);
129165
evolutionsPanel.setName("Evolutions Sheet");
130-
sheetPanels.put(EvolutionData.class, evolutionsPanel);
166+
// sheetPanels.put(EvolutionData.class, evolutionsPanel);
131167
// panels.add(evolutionsPanel);
132168

133169
DefaultSheetPanel<LearnsetData, ?> learnsetsPanel = DataManager.createLearnsetSheet(this, rom);
134170
learnsetsPanel.setName("Learnsets Sheet");
135-
sheetPanels.put(LearnsetData.class, learnsetsPanel);
171+
// sheetPanels.put(LearnsetData.class, learnsetsPanel);
136172
// panels.add(evolutionsPanel);
137173

138174
DefaultSheetPanel<MoveData, ?> movesPanel = DataManager.createMoveSheet(this, rom);
139175
movesPanel.setName("Moves Sheet");
140-
sheetPanels.put(MoveData.class, movesPanel);
141176

142177
JPanel fieldPanel = new JPanel();
143178
fieldPanel.setName("Field");
144179
JPanel waterPanel = new JPanel();
145180
waterPanel.setName("Water");
146181
PanelGroup encounters = new PanelGroup("Encounters", fieldPanel, waterPanel);
147182

148-
PanelGroup pokemonGroup = new PanelGroup("Pokémon Editing", personalPanel, learnsetsPanel, evolutionsPanel);
183+
PanelGroup pokemonGroup = new PanelGroup("Pokémon Editing", personalPanel, tmCompatibilityPanel, learnsetsPanel, evolutionsPanel);
149184
panels.add(pokemonGroup);
150185
panels.add(battleSpriteEditor);
151186
panels.add(movesPanel);
@@ -170,9 +205,22 @@ public <E extends GenericFileData> void resetData(Class<E> dataClass)
170205

171206
public void resetAllIndexedCellRendererText()
172207
{
173-
for (DefaultSheetPanel<?, ?> panel : sheetPanels.values())
208+
for (JPanel panel : panels)
174209
{
175-
panel.getTable().resetIndexedCellRendererText();
210+
if (panel instanceof DefaultSheetPanel<?,?> sheetPanel)
211+
{
212+
sheetPanel.getTable().resetIndexedCellRendererText();
213+
}
214+
else if (panel instanceof PanelGroup panelGroup)
215+
{
216+
for (JPanel groupPanel : panelGroup.getPanels())
217+
{
218+
if (groupPanel instanceof DefaultSheetPanel<?,?> sheetPanel)
219+
{
220+
sheetPanel.getTable().resetIndexedCellRendererText();
221+
}
222+
}
223+
}
176224
}
177225
}
178226

src/main/java/io/github/turtleisaac/pokeditor/gui/sheets/DefaultSheetPanel.java

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ public DefaultSheetPanel(PokeditorManager manager, DefaultTable<G, E> table) {
5555
table.getSelectionModel().addListSelectionListener(e -> frozenColumns.clearSelection());
5656
frozenColumns.getSelectionModel().addListSelectionListener(e -> table.clearSelection());
5757

58-
linkTableSelectionIndicators(table, frozenColumns);
59-
linkTableSelectionIndicators(frozenColumns, table);
58+
// linkTableSelectionIndicators(table, frozenColumns);
59+
// linkTableSelectionIndicators(frozenColumns, table);
6060

6161
frozenColumns.addPropertyChangeListener(new PropertyChangeListener()
6262
{
@@ -200,6 +200,33 @@ private void copyModeButtonPressed(ActionEvent e) {
200200
table.getFormatModel().toggleCopyPasteMode(copyModeButton.isSelected());
201201
}
202202

203+
public void thing(TableCellEditor editor)
204+
{
205+
JTable moio = new JTable(new DefaultTableModel() {
206+
@Override
207+
public int getColumnCount()
208+
{
209+
return getTable().getColumnCount();
210+
}
211+
});
212+
moio.setDefaultEditor(String.class, editor);
213+
214+
System.out.println("fuck");
215+
// JPanel moo = new JPanel();
216+
Dimension d = new Dimension(scrollPane1.getWidth(), 50);
217+
// moo.setPreferredSize(d);
218+
// moo.setMinimumSize(d);
219+
// moo.setBackground(Color.green);
220+
221+
// moio.setPreferredSize(d);
222+
// moio.setMinimumSize(d);
223+
moio.setBackground(Color.green);
224+
225+
scrollPane1.setColumnHeaderView(moio);
226+
scrollPane1.getColumnHeader().setMinimumSize(d);
227+
scrollPane1.getColumnHeader().setPreferredSize(d);
228+
}
229+
203230
private void initComponents() {
204231
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
205232
// Generated using JFormDesigner non-commercial license

src/main/java/io/github/turtleisaac/pokeditor/gui/sheets/tables/DefaultTable.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,12 @@ public DefaultTable(FormatModel<G, E> model, List<TextBankData> textData, int[]
6868
loadCellRenderers(obtainTextSources(textData));
6969

7070
MultiLineTableHeaderRenderer renderer = new MultiLineTableHeaderRenderer();
71-
Enumeration<?> enumK = getColumnModel().getColumns();
72-
while (enumK.hasMoreElements())
71+
Enumeration<TableColumn> columns = getColumnModel().getColumns();
72+
while (columns.hasMoreElements())
7373
{
74-
((TableColumn) enumK.nextElement()).setHeaderRenderer(renderer);
74+
columns.nextElement().setHeaderRenderer(renderer);
7575
}
7676

77-
7877
setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
7978
getTableHeader().setReorderingAllowed(false);
8079
setDragEnabled(false);
@@ -118,6 +117,7 @@ public DefaultTable(FormatModel<G, E> model, List<TextBankData> textData, int[]
118117
// clearSelection();
119118
// }
120119
// });
120+
setDefaultRenderer(Object.class, new DefaultSheetCellRenderer());
121121
}
122122

123123
public abstract Queue<String[]> obtainTextSources(List<TextBankData> textData);

src/main/java/io/github/turtleisaac/pokeditor/gui/sheets/tables/FrozenColumnTable.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import io.github.turtleisaac.pokeditor.gui.sheets.tables.editors.ComboBoxCellEditor;
66
import io.github.turtleisaac.pokeditor.gui.sheets.tables.editors.NumberOnlyCellEditor;
77
import io.github.turtleisaac.pokeditor.gui.sheets.tables.renderers.CheckBoxRenderer;
8+
import io.github.turtleisaac.pokeditor.gui.sheets.tables.renderers.DefaultSheetCellRenderer;
89
import io.github.turtleisaac.pokeditor.gui.sheets.tables.renderers.IndexedStringCellRenderer;
910
import io.github.turtleisaac.pokeditor.gui.sheets.tables.renderers.MultiLineTableHeaderRenderer;
1011

@@ -57,6 +58,7 @@ public FrozenColumnTable(TableModel model)
5758
setRowSelectionAllowed(true);
5859
setColumnSelectionAllowed(true);
5960
setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
61+
setDefaultRenderer(Object.class, new DefaultSheetCellRenderer());
6062
}
6163

6264
public JTable getCornerTableHeader()
Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,31 @@
11
package io.github.turtleisaac.pokeditor.gui.sheets.tables.editors;
22

33
import javax.swing.*;
4+
import javax.swing.table.TableCellEditor;
5+
import java.awt.*;
46

5-
public class CheckBoxEditor extends DefaultCellEditor
7+
public class CheckBoxEditor extends AbstractCellEditor implements TableCellEditor
68
{
9+
JPanel panel = new JPanel();
10+
JCheckBox checkBox;
11+
712
public CheckBoxEditor()
813
{
9-
super(new JCheckBox());
14+
super();
15+
checkBox = new JCheckBox();
16+
panel.add(checkBox);
17+
}
18+
19+
@Override
20+
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column)
21+
{
22+
checkBox.setSelected((Boolean) value);
23+
return panel;
24+
}
25+
26+
@Override
27+
public Object getCellEditorValue()
28+
{
29+
return checkBox.isSelected();
1030
}
1131
}

0 commit comments

Comments
 (0)