Refactor material addition/removal

This commit is contained in:
SiboVG 2024-08-08 22:01:29 +02:00
parent b5ff851263
commit e63e521e90
2 changed files with 37 additions and 24 deletions

View File

@ -256,5 +256,15 @@ public class Databases {
default -> throw new IllegalArgumentException("Illegal material type: " + type);
};
}
public static void addMaterial(Material material) {
Database<Material> db = getDatabase(material.getType());
db.add(material);
}
public static void removeMaterial(Material material) {
Database<Material> db = getDatabase(material.getType());
db.remove(material);
}
}

View File

@ -157,12 +157,8 @@ public class MaterialEditPanel extends JPanel {
return;
}
Material mat = dialog.getMaterial();
if (dialog.isAddSelected()) {
Databases.getDatabase(mat.getType()).add(mat);
} else {
mat.setDocumentMaterial(true);
document.getDocumentPreferences().addMaterial(mat);
}
mat.setDocumentMaterial(!dialog.isAddSelected());
addMaterial(mat);
model.fireTableDataChanged();
setButtonStates();
}
@ -203,20 +199,14 @@ public class MaterialEditPanel extends JPanel {
if (!dialog.getOkClicked()) {
return;
}
if (m.isUserDefined()) {
if (isDocumentMaterialPrior) {
document.getDocumentPreferences().removeMaterial(m);
} else {
Databases.getDatabase(m.getType()).remove(m);
}
}
// Remove the original material
removeMaterial(m);
// Add the edited material
Material mat = dialog.getMaterial();
if (dialog.isAddSelected()) {
Databases.getDatabase(mat.getType()).add(mat);
} else {
mat.setDocumentMaterial(true);
document.getDocumentPreferences().addMaterial(mat);
}
mat.setDocumentMaterial(!dialog.isAddSelected());
addMaterial(mat);
model.fireTableDataChanged();
setButtonStates();
}
@ -237,11 +227,7 @@ public class MaterialEditPanel extends JPanel {
Material m = getMaterial(sel);
if (!m.isUserDefined())
return;
if (m.isDocumentMaterial()) {
document.getDocumentPreferences().removeMaterial(m);
} else {
Databases.getDatabase(m.getType()).remove(m);
}
removeMaterial(m);
model.fireTableDataChanged();
setButtonStates();
}
@ -329,6 +315,23 @@ public class MaterialEditPanel extends JPanel {
}
private void addMaterial(Material m) {
if (m.isDocumentMaterial()) {
document.getDocumentPreferences().addMaterial(m);
} else {
Databases.addMaterial(m);
}
}
private void removeMaterial(Material m) {
// TODO: what if a component is currently using the material?
if (m.isDocumentMaterial()) {
document.getDocumentPreferences().removeMaterial(m);
} else {
Databases.removeMaterial(m);
}
}
private void setButtonStates() {