}
public static class Line extends Material {
- public Line(String name, double density) {
- super(name, density);
+ public Line(String name, double density, boolean userDefined) {
+ super(name, density, userDefined);
}
@Override
public static class Surface extends Material {
- public Surface(String name, double density) {
- super(name, density);
+ public Surface(String name, double density, boolean userDefined) {
+ super(name, density, userDefined);
}
@Override
}
public static class Bulk extends Material {
- public Bulk(String name, double density) {
- super(name, density);
+ public Bulk(String name, double density, boolean userDefined) {
+ super(name, density, userDefined);
}
@Override
private final String name;
private final double density;
+ private final boolean userDefined;
- public Material(String name, double density) {
+ public Material(String name, double density, boolean userDefined) {
this.name = name;
this.density = density;
+ this.userDefined = userDefined;
}
return name + " (" + u.toStringUnit(density) + ")";
}
+ public boolean isUserDefined() {
+ return userDefined;
+ }
+
public abstract UnitGroup getUnitGroup();
public abstract Type getType();
}
-
+ /**
+ * Return a new material that is not user-defined.
+ */
public static Material newMaterial(Type type, String name, double density) {
+ return newMaterial(type, name, density, false);
+ }
+
+ /**
+ * Return a new material of the specified type.
+ */
+ public static Material newMaterial(Type type, String name, double density,
+ boolean userDefined) {
switch (type) {
case LINE:
- return new Material.Line(name, density);
+ return new Material.Line(name, density, userDefined);
case SURFACE:
- return new Material.Surface(name, density);
+ return new Material.Surface(name, density, userDefined);
case BULK:
- return new Material.Bulk(name, density);
+ return new Material.Bulk(name, density, userDefined);
default:
throw new IllegalArgumentException("Unknown material type: "+type);
return getType().name() + "|" + name.replace('|', ' ') + '|' + density;
}
- public static Material fromStorableString(String str) {
+ public static Material fromStorableString(String str, boolean userDefined) {
String[] split = str.split("\\|",3);
if (split.length < 3)
throw new IllegalArgumentException("Illegal material string: "+str);
switch (type) {
case BULK:
- return new Material.Bulk(name, density);
+ return new Material.Bulk(name, density, userDefined);
case SURFACE:
- return new Material.Surface(name, density);
+ return new Material.Surface(name, density, userDefined);
case LINE:
- return new Material.Line(name, density);
+ return new Material.Line(name, density, userDefined);
default:
throw new IllegalArgumentException("Illegal material string: "+str);