Dear users, Please note that, from Monday, August 16, 2019, RSA keys shorter than 2048bit will no longer be accepted for security reasons. Please update your keys as needed before this date. If you need assistance with regard to this process, please contact sia@list.lu

Thank you for your understanding.

Commit 37e3695e authored by Nico Mack's avatar Nico Mack

Preparation for multiple widgets with identical object IDs.

parent a91b8acb
......@@ -54,7 +54,7 @@ public class BooleanVariable extends Variable<Boolean> {
/** {@inheritDoc} */
@Override
public Variable<Boolean> clone() {
public BooleanVariable clone() {
BooleanVariable variable = new BooleanVariable(name, value);
variable.listeners = new Vector<>(listeners);
return variable;
......
......@@ -24,6 +24,8 @@ import lu.list.itis.dkd.dbc.annotation.NonNullByDefault;
import lu.list.itis.dkd.dbc.annotation.Nullable;
import lu.list.itis.dkd.tui.cps.utility.Externalization;
import com.google.common.base.Objects;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -46,7 +48,7 @@ public class NumericalVariable extends Variable<Double> {
private DecimalFormat format;
private static final Logger logger = LoggerFactory.getLogger(NumericalVariable.class.getSimpleName());
private static final Logger LOGGER = LoggerFactory.getLogger(NumericalVariable.class.getSimpleName());
/**
* Constructor resorting to the super constructor to initialise the name and unit and locally
......@@ -116,7 +118,7 @@ public class NumericalVariable extends Variable<Double> {
*/
@Override
public int hashCode() {
return toString().hashCode();
return Objects.hashCode(name, unit, value);
}
/**
......@@ -146,14 +148,15 @@ public class NumericalVariable extends Variable<Double> {
/** {@inheritDoc} */
@Override
public void setValue(Double newValue) {
// Double newValue;
// newValue = (Double) this.valueFromString(value.toString());
if (newValue < this.minValue)
newValue = this.minValue;
else if (newValue > this.maxValue)
newValue = this.maxValue;
super.setValue(newValue);
double val = (newValue != null) ? newValue : 0d;
if (val < this.minValue)
val = this.minValue;
else if (val > this.maxValue)
val = this.maxValue;
super.setValue(val);
}
/** {@inheritDoc} */
......@@ -252,7 +255,7 @@ public class NumericalVariable extends Variable<Double> {
try {
newValue = Double.parseDouble(stringValue);
} catch (NumberFormatException e) {
logger.error("The provided value ({}) does not match the format stored by this variable instance.", stringValue, e); //$NON-NLS-1$
LOGGER.error("The provided value ({}) does not match the format stored by this variable instance.", stringValue, e); //$NON-NLS-1$
throw e;
}
return newValue;
......
......@@ -52,6 +52,7 @@ public class ArcGraph extends ValueCorona {
private Shape labelShape;
private Font textFont;
private Stroke borderStroke;
private int strokeWidth;
private Area outer;
private Area inner;
......@@ -80,8 +81,6 @@ public class ArcGraph extends ValueCorona {
public ArcGraph(ArcGraphBuilder builder) {
super(builder);
double diameter;
this.startAngle = builder.startAngle;
this.arcSpan = builder.arcSpan;
this.relative = builder.relative;
......@@ -97,6 +96,51 @@ public class ArcGraph extends ValueCorona {
this.bezelColour = builder.bezelColour;
this.labelShape = builder.labelShape;
this.textFont = builder.textFont;
this.strokeWidth = builder.strokeWidth;
this.buildFromProperties();
}
// ---------------------------------------------------------------------------
/**
* Copy constructor to clone corona.
*
* @param original
* specifies the original corona to create an exact copy from.
*/
// ---------------------------------------------------------------------------
public ArcGraph(ArcGraph original) {
super(original);
this.startAngle = original.startAngle;
this.arcSpan = original.arcSpan;
this.relative = original.relative;
this.reference = original.reference;
this.innerRadius = original.innerRadius;
this.outerRadius = original.outerRadius;
this.fillColour = original.fillColour;
this.strokeColour = original.strokeColour;
this.labelColour = original.labelColour;
this.textColour = original.textColour;
this.faceColour = original.faceColour;
this.bezelColour = original.bezelColour;
this.labelShape = original.labelShape;
this.textFont = original.textFont;
this.strokeWidth = original.strokeWidth;
this.buildFromProperties();
}
// ---------------------------------------------------------------------------
// ***************************************************************************
// * Primitives *
// ***************************************************************************
// ---------------------------------------------------------------------------
private void buildFromProperties() {
double diameter;
diameter = 2 * innerRadius;
inner = new Area(new Ellipse2D.Double(-innerRadius, -innerRadius, diameter, diameter));
......@@ -119,15 +163,11 @@ public class ArcGraph extends ValueCorona {
labelShape = originTranslator.createTransformedShape(labelShape);
}
borderStroke = (builder.strokeWidth > 0) ? new BasicStroke(builder.strokeWidth) : null;
borderStroke = (strokeWidth > 0) ? new BasicStroke(strokeWidth) : null;
this.setInformation((relative) ? this.reference : this.variable.getMinValue());
}
// ---------------------------------------------------------------------------
// ***************************************************************************
// * Primitives *
// ***************************************************************************
// ---------------------------------------------------------------------------
private Point getOffsetFromCenter() {
......@@ -338,6 +378,13 @@ public class ArcGraph extends ValueCorona {
}
}
// ---------------------------------------------------------------------------
@Override
public ArcGraph clone() {
return new ArcGraph(this);
}
// ---------------------------------------------------------------------------
// ***************************************************************************
// * End of Class *
......
......@@ -17,7 +17,9 @@ import lu.list.itis.dkd.dbc.annotation.NonNullByDefault;
import lu.list.itis.dkd.tui.cps.system.Equation;
import lu.list.itis.dkd.tui.cps.variable.BooleanVariable;
import lu.list.itis.dkd.tui.cps.variable.Variable;
import lu.list.itis.dkd.tui.utility.ImageUtilities;
import lu.list.itis.dkd.tui.utility.Point;
import lu.list.itis.dkd.tui.utility.ScreenCoordinates;
import lu.list.itis.dkd.tui.widget.corona.builder.ConditionalCoronaBuilder;
import java.awt.Graphics2D;
......@@ -44,7 +46,8 @@ public class ConditionalCorona extends Corona {
*/
private LinkedHashSet<String> triggers = new LinkedHashSet<>();
private java.awt.Image image;
protected java.awt.Image image;
protected Point imageCentre;
/**
* @param builder
......@@ -58,6 +61,22 @@ public class ConditionalCorona extends Corona {
this.triggers = builder.triggers;
this.variables = builder.variables;
this.image = builder.image;
imageCentre = (image != null) ? new Point(image.getWidth(null) / 2, image.getHeight(null) / 2, 0, ScreenCoordinates.class)
: new Point();
}
public ConditionalCorona(ConditionalCorona original) {
super(original);
this.trigger = original.trigger;
this.triggerVariable = original.triggerVariable.clone();
this.triggers = new LinkedHashSet<>(original.triggers);
this.variables = new LinkedHashSet<>(original.variables);
this.image = ImageUtilities.deepCopy(original.image);
imageCentre = (image != null) ? new Point(image.getWidth(null) / 2, image.getHeight(null) / 2, 0, ScreenCoordinates.class)
: new Point();
}
/** {@inheritDoc} */
......@@ -68,37 +87,39 @@ public class ConditionalCorona extends Corona {
return;
}
centre.toScreenCoordinates();
if (initialTranslation != null) {
initialTranslation.toScreenCoordinates();
} else {
initialTranslation = new Point();
}
Point drawAt = centre.add(initialTranslation);
AffineTransform rotation = new AffineTransform();
rotation.rotate(rotateWithHandle ? drawAt.getAngle() : initialTranslation != null ? initialTranslation.getAngle() : 0, centre.getX(), centre.getY());
rotation.translate(drawAt.x, drawAt.y);
if (spinOnCoronaCentre) {
rotation.rotate(rotateWithHandle ? -drawAt.getAngle() : 0);
rotation.translate(-image.getWidth(null) / 2, -image.getHeight(null) / 2);
}
rotation.transform(new Point(), drawAt);
if (Double.compare(initialRotation, 0d) != 0) {
AffineTransform transformation = new AffineTransform();
transformation.rotate(initialRotation, spinOnCoronaCentre ? drawAt.getX() + image.getWidth(null) / 2 : drawAt.getX(), spinOnCoronaCentre ? drawAt.getY() + image.getHeight(null) / 2 : drawAt.getY());
canvas.setTransform(transformation);
}
canvas.drawImage(image, (int) drawAt.x, (int) drawAt.y, null);
canvas.setTransform(new AffineTransform());
// centre.toScreenCoordinates();
// if (initialTranslation != null) {
// initialTranslation.toScreenCoordinates();
// } else {
// initialTranslation = new Point();
// }
//
// Point drawAt = centre.add(initialTranslation);
//
// AffineTransform rotation = new AffineTransform();
// rotation.rotate(rotateWithHandle ? drawAt.getAngle() : initialTranslation != null ?
// initialTranslation.getAngle() : 0, centre.getX(), centre.getY());
// rotation.translate(drawAt.x, drawAt.y);
//
// if (spinOnCoronaCentre) {
// rotation.rotate(rotateWithHandle ? -drawAt.getAngle() : 0);
// rotation.translate(-image.getWidth(null) / 2, -image.getHeight(null) / 2);
// }
//
// rotation.transform(new Point(), drawAt);
//
// if (Double.compare(initialRotation, 0d) != 0) {
// AffineTransform transformation = new AffineTransform();
// transformation.rotate(initialRotation, spinOnCoronaCentre ? drawAt.getX() +
// image.getWidth(null) / 2 : drawAt.getX(), spinOnCoronaCentre ? drawAt.getY() +
// image.getHeight(null) / 2 : drawAt.getY());
// canvas.setTransform(transformation);
// }
AffineTransform transform = this.getTransform(imageCentre);
canvas.drawImage(image, transform, null);
}
/**
* Method used to add a variable to the set of variables held by this corona.
*
......@@ -117,4 +138,10 @@ public class ConditionalCorona extends Corona {
public LinkedHashSet<String> getTriggers() {
return triggers;
}
@Override
public ConditionalCorona clone() {
return new ConditionalCorona(this);
}
}
\ No newline at end of file
......@@ -76,8 +76,32 @@ public class ShapeGraph extends ValueCorona {
borderStroke = (builder.strokeWidth > 0) ? new BasicStroke(builder.strokeWidth) : null;
this.setInformation(this.variable.getMinValue());
}
// ---------------------------------------------------------------------------
/**
* Copy constructor to clone corona.
*
* @param original
* specifies the original corona to create an exact copy from.
*/
// ---------------------------------------------------------------------------
public ShapeGraph(ShapeGraph original) {
super(original);
this.lowerBound = original.lowerBound;
this.upperBound = original.upperBound;
this.fillColour = original.fillColour;
this.strokeColour = original.strokeColour;
this.strokeWidth = original.strokeWidth;
this.graphShape = original.graphShape;
borderStroke = (original.strokeWidth > 0) ? new BasicStroke(original.strokeWidth) : null;
this.setInformation(this.variable.getMinValue());
}
// ---------------------------------------------------------------------------
// ***************************************************************************
// * Primitives *
......@@ -189,6 +213,13 @@ public class ShapeGraph extends ValueCorona {
}
}
// ---------------------------------------------------------------------------
@Override
public ShapeGraph clone() {
return new ShapeGraph(this);
}
// ---------------------------------------------------------------------------
// ***************************************************************************
// * End of Class *
......
......@@ -35,6 +35,14 @@ public class ValueCorona extends Corona implements InformationReceiver<Object> {
this.selected = false;
}
// ---------------------------------------------------------------------------
public ValueCorona(ValueCorona original) {
super(original);
this.variable = (original.variable != null) ? original.variable.clone() : null;
this.selected = false;
}
// ---------------------------------------------------------------------------
// ***************************************************************************
// * Primitives *
......@@ -82,6 +90,13 @@ public class ValueCorona extends Corona implements InformationReceiver<Object> {
}
}
// ---------------------------------------------------------------------------
@Override
public ValueCorona clone() {
return new ValueCorona(this);
}
// ---------------------------------------------------------------------------
// ***************************************************************************
// * End of Class *
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment