Refactor material addition/removal
This commit is contained in:
parent
b5ff851263
commit
e63e521e90
core/src/main/java/info/openrocket/core/database
swing/src/main/java/info/openrocket/swing/gui/dialogs/preferences
@ -256,5 +256,15 @@ public class Databases {
|
|||||||
default -> throw new IllegalArgumentException("Illegal material type: " + type);
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -157,12 +157,8 @@ public class MaterialEditPanel extends JPanel {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Material mat = dialog.getMaterial();
|
Material mat = dialog.getMaterial();
|
||||||
if (dialog.isAddSelected()) {
|
mat.setDocumentMaterial(!dialog.isAddSelected());
|
||||||
Databases.getDatabase(mat.getType()).add(mat);
|
addMaterial(mat);
|
||||||
} else {
|
|
||||||
mat.setDocumentMaterial(true);
|
|
||||||
document.getDocumentPreferences().addMaterial(mat);
|
|
||||||
}
|
|
||||||
model.fireTableDataChanged();
|
model.fireTableDataChanged();
|
||||||
setButtonStates();
|
setButtonStates();
|
||||||
}
|
}
|
||||||
@ -203,20 +199,14 @@ public class MaterialEditPanel extends JPanel {
|
|||||||
if (!dialog.getOkClicked()) {
|
if (!dialog.getOkClicked()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (m.isUserDefined()) {
|
// Remove the original material
|
||||||
if (isDocumentMaterialPrior) {
|
removeMaterial(m);
|
||||||
document.getDocumentPreferences().removeMaterial(m);
|
|
||||||
} else {
|
// Add the edited material
|
||||||
Databases.getDatabase(m.getType()).remove(m);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Material mat = dialog.getMaterial();
|
Material mat = dialog.getMaterial();
|
||||||
if (dialog.isAddSelected()) {
|
mat.setDocumentMaterial(!dialog.isAddSelected());
|
||||||
Databases.getDatabase(mat.getType()).add(mat);
|
addMaterial(mat);
|
||||||
} else {
|
|
||||||
mat.setDocumentMaterial(true);
|
|
||||||
document.getDocumentPreferences().addMaterial(mat);
|
|
||||||
}
|
|
||||||
model.fireTableDataChanged();
|
model.fireTableDataChanged();
|
||||||
setButtonStates();
|
setButtonStates();
|
||||||
}
|
}
|
||||||
@ -237,11 +227,7 @@ public class MaterialEditPanel extends JPanel {
|
|||||||
Material m = getMaterial(sel);
|
Material m = getMaterial(sel);
|
||||||
if (!m.isUserDefined())
|
if (!m.isUserDefined())
|
||||||
return;
|
return;
|
||||||
if (m.isDocumentMaterial()) {
|
removeMaterial(m);
|
||||||
document.getDocumentPreferences().removeMaterial(m);
|
|
||||||
} else {
|
|
||||||
Databases.getDatabase(m.getType()).remove(m);
|
|
||||||
}
|
|
||||||
model.fireTableDataChanged();
|
model.fireTableDataChanged();
|
||||||
setButtonStates();
|
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() {
|
private void setButtonStates() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user