From 89d99ec658b0494740a636ce9f9055b2530c7ee1 Mon Sep 17 00:00:00 2001
From: Phillipus
Date: Mon, 14 Aug 2023 14:06:59 +0100
Subject: [PATCH] Set line width on figures
---
.../canvas/figures/CanvasBlockFigure.java | 2 +-
.../canvas/figures/CanvasStickyFigure.java | 5 +-
com.archimatetool.editor/plugin.xml | 7 +
.../AbstractDiagramModelObjectFigure.java | 11 ++
.../figures/AbstractFigureDelegate.java | 9 ++
.../figures/EllipseFigureDelegate.java | 2 +-
.../figures/RectangleFigureDelegate.java | 2 +-
.../RoundedRectangleFigureDelegate.java | 2 +-
.../figures/diagram/DiagramImageFigure.java | 2 +-
.../diagram/figures/diagram/GroupFigure.java | 2 +-
.../diagram/figures/diagram/NoteFigure.java | 2 +-
.../elements/AbstractMotivationFigure.java | 2 +-
.../elements/ApplicationComponentFigure.java | 2 +-
.../figures/elements/ArtifactFigure.java | 2 +-
.../figures/elements/AssessmentFigure.java | 2 +-
.../figures/elements/BoxFigureDelegate.java | 2 +-
.../figures/elements/BusinessActorFigure.java | 2 +-
.../figures/elements/CapabilityFigure.java | 2 +-
.../figures/elements/CollaborationFigure.java | 2 +-
.../figures/elements/ContractFigure.java | 2 +-
.../elements/CourseOfActionFigure.java | 2 +-
.../elements/CylinderFigureDelegate.java | 2 +-
.../figures/elements/DeliverableFigure.java | 5 +-
.../figures/elements/DeviceFigure.java | 2 +-
.../figures/elements/EquipmentFigure.java | 2 +-
.../diagram/figures/elements/EventFigure.java | 2 +-
.../figures/elements/FacilityFigure.java | 2 +-
.../figures/elements/FunctionFigure.java | 2 +-
.../diagram/figures/elements/GapFigure.java | 2 +-
.../diagram/figures/elements/GoalFigure.java | 2 +-
.../figures/elements/GroupingFigure.java | 2 +-
.../figures/elements/InteractionFigure.java | 2 +-
.../figures/elements/InterfaceFigure.java | 2 +-
.../figures/elements/JunctionFigure.java | 2 +-
.../figures/elements/LocationFigure.java | 2 +-
.../figures/elements/MaterialFigure.java | 2 +-
.../figures/elements/MeaningFigure.java | 2 +-
.../figures/elements/ObjectFigure.java | 2 +-
.../figures/elements/OutcomeFigure.java | 2 +-
.../elements/ParallelogramFigureDelegate.java | 2 +-
.../figures/elements/PrincipleFigure.java | 2 +-
.../elements/ProcessFigureDelegate.java | 5 +-
.../figures/elements/ProductFigure.java | 2 +-
.../elements/RepresentationFigure.java | 5 +-
.../figures/elements/ResourceFigure.java | 2 +-
.../elements/ServiceFigureDelegate.java | 2 +-
.../elements/SystemSoftwareFigure.java | 2 +-
.../diagram/figures/elements/ValueFigure.java | 2 +-
.../figures/elements/ValueStreamFigure.java | 2 +-
.../diagram/sketch/figures/StickyFigure.java | 2 +-
.../propertysections/LineWidthSection.java | 133 ++++++++++++++++++
.../editor/propertysections/Messages.java | 10 ++
.../propertysections/messages.properties | 5 +
.../help/Images/properties_canvas_block3.png | Bin 9428 -> 32569 bytes
.../help/Images/properties_canvas_image2.png | Bin 6788 -> 22151 bytes
.../help/Images/properties_canvas_sticky2.png | Bin 9254 -> 35883 bytes
.../help/Images/properties_element3.png | Bin 12660 -> 47692 bytes
.../help/Images/properties_group2.png | Bin 11257 -> 42750 bytes
.../help/Images/properties_note2.png | Bin 11583 -> 42504 bytes
.../help/Images/properties_viewref2.png | Bin 11361 -> 44771 bytes
.../help/Text/properties_canvas_block.html | 4 +
.../help/Text/properties_canvas_image.html | 4 +
.../help/Text/properties_canvas_sticky.html | 4 +
.../Text/properties_element_appearance.html | 4 +
.../help/Text/properties_group.html | 4 +
.../help/Text/properties_note.html | 4 +
.../help/Text/properties_viewref.html | 4 +
67 files changed, 254 insertions(+), 55 deletions(-)
create mode 100644 com.archimatetool.editor/src/com/archimatetool/editor/propertysections/LineWidthSection.java
diff --git a/com.archimatetool.canvas/src/com/archimatetool/canvas/figures/CanvasBlockFigure.java b/com.archimatetool.canvas/src/com/archimatetool/canvas/figures/CanvasBlockFigure.java
index 0183c2d1c..e2bb77d6e 100644
--- a/com.archimatetool.canvas/src/com/archimatetool/canvas/figures/CanvasBlockFigure.java
+++ b/com.archimatetool.canvas/src/com/archimatetool/canvas/figures/CanvasBlockFigure.java
@@ -160,7 +160,7 @@ private void drawFigure(Graphics graphics, Color background) {
bounds.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, bounds);
+ setLineWidth(graphics, bounds);
graphics.setBackgroundColor(background);
graphics.fillRectangle(bounds);
diff --git a/com.archimatetool.canvas/src/com/archimatetool/canvas/figures/CanvasStickyFigure.java b/com.archimatetool.canvas/src/com/archimatetool/canvas/figures/CanvasStickyFigure.java
index 557fbb061..79e2c4d62 100644
--- a/com.archimatetool.canvas/src/com/archimatetool/canvas/figures/CanvasStickyFigure.java
+++ b/com.archimatetool.canvas/src/com/archimatetool/canvas/figures/CanvasStickyFigure.java
@@ -140,8 +140,7 @@ protected void paintFigure(Graphics graphics) {
bounds.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- int lineWidth = 1;
- setLineWidth(graphics, lineWidth, bounds);
+ setLineWidth(graphics, bounds);
// Bug on Linux hi-res using Graphics.fillGradient()
// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=568864
@@ -162,7 +161,7 @@ protected void paintFigure(Graphics graphics) {
if(getBorderColor() != null) {
graphics.setAlpha(getLineAlpha());
- float lineOffset = (float)lineWidth / 2;
+ float lineOffset = (float)getDiagramModelObject().getLineWidth() / 2;
graphics.setForegroundColor(ColorFactory.getLighterColor(getBorderColor(), 0.82f));
Path path = new Path(null);
diff --git a/com.archimatetool.editor/plugin.xml b/com.archimatetool.editor/plugin.xml
index 152438e54..50854fe2f 100644
--- a/com.archimatetool.editor/plugin.xml
+++ b/com.archimatetool.editor/plugin.xml
@@ -429,6 +429,13 @@
id="iconColorSection"
tab="appearance.tab">
+
+
4 ? 4 : lineWidth;
+
graphics.setLineWidth(lineWidth);
final double scale = FigureUtils.getGraphicsScale(graphics);
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/AbstractFigureDelegate.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/AbstractFigureDelegate.java
index 337c3e47a..688d06c0d 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/AbstractFigureDelegate.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/AbstractFigureDelegate.java
@@ -103,6 +103,15 @@ protected void setDisabledState(Graphics graphics) {
getOwner().setDisabledState(graphics);
}
+ /**
+ * Set the line width to that in the diagram model and compensate the figure bounds width and height for this line width and translate the graphics instance
+ * @param graphics The graphics instance
+ * @param bounds The bounds of the object
+ */
+ protected void setLineWidth(Graphics graphics, Rectangle bounds) {
+ getOwner().setLineWidth(graphics, bounds);
+ }
+
/**
* Set the line width and compensate the figure bounds width and height for this line width and translate the graphics instance
* @param graphics The graphics instance
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/EllipseFigureDelegate.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/EllipseFigureDelegate.java
index 90bf9261b..7c7a0c1b3 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/EllipseFigureDelegate.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/EllipseFigureDelegate.java
@@ -32,7 +32,7 @@ public void drawFigure(Graphics graphics) {
bounds.height--;
// Line Width
- setLineWidth(graphics, 1, bounds);
+ setLineWidth(graphics, bounds);
graphics.setAlpha(getAlpha());
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/RectangleFigureDelegate.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/RectangleFigureDelegate.java
index d86218fd6..48e101ae2 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/RectangleFigureDelegate.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/RectangleFigureDelegate.java
@@ -32,7 +32,7 @@ public void drawFigure(Graphics graphics) {
bounds.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, bounds);
+ setLineWidth(graphics, bounds);
graphics.setAlpha(getAlpha());
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/RoundedRectangleFigureDelegate.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/RoundedRectangleFigureDelegate.java
index a6dea56c2..5bfddb925 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/RoundedRectangleFigureDelegate.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/RoundedRectangleFigureDelegate.java
@@ -37,7 +37,7 @@ public void drawFigure(Graphics graphics) {
bounds.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, bounds);
+ setLineWidth(graphics, bounds);
graphics.setAlpha(getAlpha());
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/diagram/DiagramImageFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/diagram/DiagramImageFigure.java
index 1b77dedb9..5e1671867 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/diagram/DiagramImageFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/diagram/DiagramImageFigure.java
@@ -103,7 +103,7 @@ protected void paintFigure(Graphics graphics) {
bounds.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, bounds);
+ setLineWidth(graphics, bounds);
if(fImage != null) {
// Faster but no transparency
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/diagram/GroupFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/diagram/GroupFigure.java
index 9a35ed882..c62f82e10 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/diagram/GroupFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/diagram/GroupFigure.java
@@ -55,7 +55,7 @@ protected void drawFigure(Graphics graphics) {
bounds.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, bounds);
+ setLineWidth(graphics, bounds);
graphics.setAlpha(getAlpha());
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/diagram/NoteFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/diagram/NoteFigure.java
index 163e3fedb..56b54e9c0 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/diagram/NoteFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/diagram/NoteFigure.java
@@ -115,7 +115,7 @@ protected void paintFigure(Graphics graphics) {
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
if(getDiagramModelObject().getBorderType() != IDiagramModelNote.BORDER_NONE) {
- setLineWidth(graphics, 1, bounds);
+ setLineWidth(graphics, bounds);
}
// Fill
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/AbstractMotivationFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/AbstractMotivationFigure.java
index 93ab5a4ec..cef3eb625 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/AbstractMotivationFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/AbstractMotivationFigure.java
@@ -43,7 +43,7 @@ protected void drawFigure(Graphics graphics) {
bounds.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, bounds);
+ setLineWidth(graphics, bounds);
PointList points = new PointList();
points.addPoint(bounds.x + FLANGE, bounds.y);
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ApplicationComponentFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ApplicationComponentFigure.java
index ddbc1fa85..87811e814 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ApplicationComponentFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ApplicationComponentFigure.java
@@ -50,7 +50,7 @@ public void drawFigure(Graphics graphics) {
bounds.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, bounds);
+ setLineWidth(graphics, bounds);
if(!isEnabled()) {
setDisabledState(graphics);
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ArtifactFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ArtifactFigure.java
index 62251ddd6..2f65eefa7 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ArtifactFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ArtifactFigure.java
@@ -51,7 +51,7 @@ public void drawFigure(Graphics graphics) {
rect.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, rect);
+ setLineWidth(graphics, rect);
if(!isEnabled()) {
setDisabledState(graphics);
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/AssessmentFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/AssessmentFigure.java
index e63c4c54e..0c6ca395c 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/AssessmentFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/AssessmentFigure.java
@@ -40,7 +40,7 @@ protected void drawFigure(Graphics graphics) {
Rectangle imageBounds = rect.getCopy();
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, rect);
+ setLineWidth(graphics, rect);
setFigurePositionFromTextPosition(rect);
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/BoxFigureDelegate.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/BoxFigureDelegate.java
index 00bce8031..0d1df3de7 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/BoxFigureDelegate.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/BoxFigureDelegate.java
@@ -40,7 +40,7 @@ public void drawFigure(Graphics graphics) {
bounds.height--;
// Set line width here so that the whole figure is consttained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, bounds);
+ setLineWidth(graphics, bounds);
graphics.setAlpha(getAlpha());
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/BusinessActorFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/BusinessActorFigure.java
index ef5f040c7..92069c206 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/BusinessActorFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/BusinessActorFigure.java
@@ -48,7 +48,7 @@ protected void drawFigure(Graphics graphics) {
Rectangle imageBounds = rect.getCopy();
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, rect);
+ setLineWidth(graphics, rect);
setFigurePositionFromTextPosition(rect, 2/3.0);
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/CapabilityFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/CapabilityFigure.java
index c1b455012..997d551e4 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/CapabilityFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/CapabilityFigure.java
@@ -47,7 +47,7 @@ protected void drawFigure(Graphics graphics) {
Rectangle imageBounds = rect.getCopy();
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, rect);
+ setLineWidth(graphics, rect);
setFigurePositionFromTextPosition(rect);
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/CollaborationFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/CollaborationFigure.java
index 1cebcab3c..592d77821 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/CollaborationFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/CollaborationFigure.java
@@ -47,7 +47,7 @@ protected void drawFigure(Graphics graphics) {
Rectangle imageBounds = rect.getCopy();
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, rect);
+ setLineWidth(graphics, rect);
setFigurePositionFromTextPosition(rect, 1.5); // Should match 'diameter'
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ContractFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ContractFigure.java
index d3fd4df6a..7654eae96 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ContractFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ContractFigure.java
@@ -40,7 +40,7 @@ public void drawFigure(Graphics graphics) {
bounds.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, bounds);
+ setLineWidth(graphics, bounds);
graphics.setAlpha(getAlpha());
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/CourseOfActionFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/CourseOfActionFigure.java
index f25ae0cec..bcf6bd7fe 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/CourseOfActionFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/CourseOfActionFigure.java
@@ -49,7 +49,7 @@ protected void drawFigure(Graphics graphics) {
Rectangle imageBounds = rect.getCopy();
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, rect);
+ setLineWidth(graphics, rect);
setFigurePositionFromTextPosition(rect, 1.24); // Should match '3.1 / 2.5' (values used in getRadius() and getCenter())
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/CylinderFigureDelegate.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/CylinderFigureDelegate.java
index 1bbfdc85b..126cbc9dc 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/CylinderFigureDelegate.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/CylinderFigureDelegate.java
@@ -37,7 +37,7 @@ public void drawFigure(Graphics graphics) {
rect.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, rect);
+ setLineWidth(graphics, rect);
if(!isEnabled()) {
setDisabledState(graphics);
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/DeliverableFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/DeliverableFigure.java
index 08bd5044d..ae546d751 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/DeliverableFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/DeliverableFigure.java
@@ -48,8 +48,7 @@ protected void drawFigure(Graphics graphics) {
bounds.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- int lineWidth = 1;
- setLineWidth(graphics, lineWidth, bounds);
+ setLineWidth(graphics, bounds);
graphics.setAlpha(getAlpha());
@@ -57,7 +56,7 @@ protected void drawFigure(Graphics graphics) {
setDisabledState(graphics);
}
- Path path = getFigurePath(8, bounds, (float)lineWidth / 2);
+ Path path = getFigurePath(8, bounds, (float)getDiagramModelObject().getLineWidth() / 2);
// Main Fill
graphics.setBackgroundColor(getFillColor());
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/DeviceFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/DeviceFigure.java
index d3240e4dd..ec134d3c1 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/DeviceFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/DeviceFigure.java
@@ -49,7 +49,7 @@ public void drawFigure(Graphics graphics) {
bounds.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, bounds);
+ setLineWidth(graphics, bounds);
int height_indent = bounds.height / 6;
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/EquipmentFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/EquipmentFigure.java
index de0c0f774..44a6f9016 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/EquipmentFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/EquipmentFigure.java
@@ -51,7 +51,7 @@ protected void drawFigure(Graphics graphics) {
Rectangle imageBounds = rect.getCopy();
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, rect);
+ setLineWidth(graphics, rect);
setFigurePositionFromTextPosition(rect);
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/EventFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/EventFigure.java
index b6dcc8d21..de879f809 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/EventFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/EventFigure.java
@@ -48,7 +48,7 @@ public void drawFigure(Graphics graphics) {
bounds.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, bounds);
+ setLineWidth(graphics, bounds);
int indent = Math.min(bounds.height / 3, bounds.width / 3);
int centre_y = bounds.y + bounds.height / 2 - 1;
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/FacilityFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/FacilityFigure.java
index 060333520..729e8c747 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/FacilityFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/FacilityFigure.java
@@ -48,7 +48,7 @@ protected void drawFigure(Graphics graphics) {
Rectangle imageBounds = rect.getCopy();
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, rect);
+ setLineWidth(graphics, rect);
setFigurePositionFromTextPosition(rect);
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/FunctionFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/FunctionFigure.java
index 05b9a930e..3e113f1e4 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/FunctionFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/FunctionFigure.java
@@ -54,7 +54,7 @@ protected void drawFigure(Graphics graphics) {
rect.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, rect);
+ setLineWidth(graphics, rect);
if(!isEnabled()) {
setDisabledState(graphics);
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/GapFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/GapFigure.java
index 742e41584..ded12e150 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/GapFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/GapFigure.java
@@ -47,7 +47,7 @@ protected void drawFigure(Graphics graphics) {
Rectangle imageBounds = rect.getCopy();
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, rect);
+ setLineWidth(graphics, rect);
setFigurePositionFromTextPosition(rect, 5/3.0); // Should match 'widthFraction' formula
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/GoalFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/GoalFigure.java
index 90de24c39..79f4f2168 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/GoalFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/GoalFigure.java
@@ -39,7 +39,7 @@ protected void drawFigure(Graphics graphics) {
Rectangle imageBounds = rect.getCopy();
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, rect);
+ setLineWidth(graphics, rect);
setFigurePositionFromTextPosition(rect);
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/GroupingFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/GroupingFigure.java
index 5e4728c32..f0f3cb9d3 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/GroupingFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/GroupingFigure.java
@@ -59,7 +59,7 @@ protected void drawFigure(Graphics graphics) {
}
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, bounds);
+ setLineWidth(graphics, bounds);
// Scale line dashes below 1.0
double scale = Math.min(FigureUtils.getGraphicsScale(graphics), 1.0);
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/InteractionFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/InteractionFigure.java
index b0c0c06bf..f13ca474d 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/InteractionFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/InteractionFigure.java
@@ -51,7 +51,7 @@ protected void drawFigure(Graphics graphics) {
Rectangle imageBounds = rect.getCopy();
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, rect);
+ setLineWidth(graphics, rect);
setFigurePositionFromTextPosition(rect, 1 / 0.86); // Should match 'FRACTION' defined in getFigurePath()
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/InterfaceFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/InterfaceFigure.java
index 89a6d41e3..da439c83c 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/InterfaceFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/InterfaceFigure.java
@@ -47,7 +47,7 @@ protected void drawFigure(Graphics graphics) {
Rectangle imageBounds = rect.getCopy();
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, rect);
+ setLineWidth(graphics, rect);
setFigurePositionFromTextPosition(rect);
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/JunctionFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/JunctionFigure.java
index 9585e965c..b1107e5fb 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/JunctionFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/JunctionFigure.java
@@ -52,7 +52,7 @@ public void paintFigure(Graphics graphics) {
break;
case IJunction.OR_JUNCTION_TYPE:
- setLineWidth(graphics, 1, bounds);
+ setLineWidth(graphics, bounds);
graphics.setForegroundColor(getFillColor());
graphics.drawOval(bounds);
break;
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/LocationFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/LocationFigure.java
index 2854fe27b..eb9471968 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/LocationFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/LocationFigure.java
@@ -47,7 +47,7 @@ protected void drawFigure(Graphics graphics) {
Rectangle imageBounds = rect.getCopy();
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, rect);
+ setLineWidth(graphics, rect);
setFigurePositionFromTextPosition(rect);
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/MaterialFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/MaterialFigure.java
index 68d2b09a4..1a0a22193 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/MaterialFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/MaterialFigure.java
@@ -49,7 +49,7 @@ protected void drawFigure(Graphics graphics) {
Rectangle imageBounds = rect.getCopy();
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, rect);
+ setLineWidth(graphics, rect);
setFigurePositionFromTextPosition(rect, 10/9.0); // Should match 'figureHeight'
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/MeaningFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/MeaningFigure.java
index b711673b0..d1fa361af 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/MeaningFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/MeaningFigure.java
@@ -37,7 +37,7 @@ public void drawFigure(Graphics graphics) {
Rectangle bounds = getBounds().getCopy();
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, bounds);
+ setLineWidth(graphics, bounds);
// The following is a not so awful code to draw a cloud...
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ObjectFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ObjectFigure.java
index cc1c4ce12..f1b18e62d 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ObjectFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ObjectFigure.java
@@ -46,7 +46,7 @@ public void drawFigure(Graphics graphics) {
bounds.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, bounds);
+ setLineWidth(graphics, bounds);
graphics.setAlpha(getAlpha());
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/OutcomeFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/OutcomeFigure.java
index 45dad42dd..db91a26b8 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/OutcomeFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/OutcomeFigure.java
@@ -40,7 +40,7 @@ protected void drawFigure(Graphics graphics) {
Rectangle imageBounds = rect.getCopy();
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, rect);
+ setLineWidth(graphics, rect);
setFigurePositionFromTextPosition(rect);
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ParallelogramFigureDelegate.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ParallelogramFigureDelegate.java
index 64c33667a..3959f826c 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ParallelogramFigureDelegate.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ParallelogramFigureDelegate.java
@@ -43,7 +43,7 @@ public void drawFigure(Graphics graphics) {
bounds.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, bounds);
+ setLineWidth(graphics, bounds);
PointList points = new PointList();
points.addPoint(bounds.x + FLANGE, bounds.y);
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/PrincipleFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/PrincipleFigure.java
index e35320df6..965dedf6d 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/PrincipleFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/PrincipleFigure.java
@@ -39,7 +39,7 @@ protected void drawFigure(Graphics graphics) {
Rectangle imageBounds = rect.getCopy();
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, rect);
+ setLineWidth(graphics, rect);
setFigurePositionFromTextPosition(rect);
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ProcessFigureDelegate.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ProcessFigureDelegate.java
index 2b05a12f8..e15d8910b 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ProcessFigureDelegate.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ProcessFigureDelegate.java
@@ -46,8 +46,7 @@ public void drawFigure(Graphics graphics) {
bounds.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- int lineWidth = 1;
- setLineWidth(graphics, lineWidth, bounds);
+ setLineWidth(graphics, bounds);
Pattern gradient = applyGradientPattern(graphics, bounds);
@@ -57,7 +56,7 @@ public void drawFigure(Graphics graphics) {
float y1 = bounds.y + (bounds.height / 5);
float y2 = bounds.y + bounds.height - (bounds.height / 5);
- float lineOffset = (float)lineWidth / 2;
+ float lineOffset = (float)getOwner().getDiagramModelObject().getLineWidth() / 2;
path.moveTo(bounds.x, y1);
path.lineTo(x1, y1);
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ProductFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ProductFigure.java
index 56af8cf0e..c37429625 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ProductFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ProductFigure.java
@@ -48,7 +48,7 @@ public void drawFigure(Graphics graphics) {
bounds.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, bounds);
+ setLineWidth(graphics, bounds);
graphics.setAlpha(getAlpha());
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/RepresentationFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/RepresentationFigure.java
index a342c1a3e..5478435d1 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/RepresentationFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/RepresentationFigure.java
@@ -44,8 +44,7 @@ public void drawFigure(Graphics graphics) {
bounds.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- int lineWidth = 1;
- setLineWidth(graphics, lineWidth, bounds);
+ setLineWidth(graphics, bounds);
graphics.setAlpha(getAlpha());
@@ -53,7 +52,7 @@ public void drawFigure(Graphics graphics) {
setDisabledState(graphics);
}
- Path path = getFigurePath(6, bounds, (float)lineWidth / 2);
+ Path path = getFigurePath(6, bounds, (float)getDiagramModelObject().getLineWidth() / 2);
// Main Fill
graphics.setBackgroundColor(getFillColor());
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ResourceFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ResourceFigure.java
index 3641ec994..738ef1133 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ResourceFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ResourceFigure.java
@@ -46,7 +46,7 @@ protected void drawFigure(Graphics graphics) {
rect.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, rect);
+ setLineWidth(graphics, rect);
if(!isEnabled()) {
setDisabledState(graphics);
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ServiceFigureDelegate.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ServiceFigureDelegate.java
index 69574ea34..971ddab40 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ServiceFigureDelegate.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ServiceFigureDelegate.java
@@ -40,7 +40,7 @@ public void drawFigure(Graphics graphics) {
bounds.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, bounds);
+ setLineWidth(graphics, bounds);
Dimension arc = getArc();
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/SystemSoftwareFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/SystemSoftwareFigure.java
index e75e4bee0..d737e6d1a 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/SystemSoftwareFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/SystemSoftwareFigure.java
@@ -50,7 +50,7 @@ protected void drawFigure(Graphics graphics) {
Rectangle imageBounds = rect.getCopy();
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, rect);
+ setLineWidth(graphics, rect);
setFigurePositionFromTextPosition(rect);
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ValueFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ValueFigure.java
index f1f42e8cd..0e84ca7d1 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ValueFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ValueFigure.java
@@ -42,7 +42,7 @@ public void drawFigure(Graphics graphics) {
bounds.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, bounds);
+ setLineWidth(graphics, bounds);
graphics.setAlpha(getAlpha());
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ValueStreamFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ValueStreamFigure.java
index 4ca441b2e..18c827e1b 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ValueStreamFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/figures/elements/ValueStreamFigure.java
@@ -48,7 +48,7 @@ protected void drawFigure(Graphics graphics) {
bounds.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, bounds);
+ setLineWidth(graphics, bounds);
int indent = Math.min(bounds.height / 2, bounds.width / 2);
int centre_y = bounds.y + bounds.height / 2;
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/sketch/figures/StickyFigure.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/sketch/figures/StickyFigure.java
index 68d285248..2831535ed 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/sketch/figures/StickyFigure.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/sketch/figures/StickyFigure.java
@@ -49,7 +49,7 @@ protected void drawFigure(Graphics graphics) {
bounds.height--;
// Set line width here so that the whole figure is constrained, otherwise SVG graphics will have overspill
- setLineWidth(graphics, 1, bounds);
+ setLineWidth(graphics, bounds);
graphics.setBackgroundColor(getFillColor());
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/propertysections/LineWidthSection.java b/com.archimatetool.editor/src/com/archimatetool/editor/propertysections/LineWidthSection.java
new file mode 100644
index 000000000..70b2690d1
--- /dev/null
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/propertysections/LineWidthSection.java
@@ -0,0 +1,133 @@
+/**
+ * This program and the accompanying materials
+ * are made available under the terms of the License
+ * which accompanies this distribution in the file LICENSE.txt
+ */
+package com.archimatetool.editor.propertysections;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.commands.CompoundCommand;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.PlatformUI;
+
+import com.archimatetool.editor.diagram.commands.LineWidthCommand;
+import com.archimatetool.model.IArchimatePackage;
+import com.archimatetool.model.IDiagramModelObject;
+import com.archimatetool.model.ILineObject;
+
+
+
+/**
+ * Line Width Section
+ *
+ * @author Phillip Beauvoir
+ */
+public class LineWidthSection extends AbstractECorePropertySection {
+
+ private static final String HELP_ID = "com.archimatetool.help.elementPropertySection"; //$NON-NLS-1$
+
+ /**
+ * Filter to show or reject this section depending on input value
+ */
+ public static class Filter extends ObjectFilter {
+ @Override
+ public boolean isRequiredType(Object object) {
+ return object instanceof IDiagramModelObject;
+ }
+
+ @Override
+ public Class> getAdaptableType() {
+ return IDiagramModelObject.class;
+ }
+ }
+
+ private Combo fComboLineWidth;
+
+ public static final String[] comboLineWidthItems = {
+ Messages.LineWidthSection_1,
+ Messages.LineWidthSection_2,
+ Messages.LineWidthSection_3,
+ Messages.LineWidthSection_4
+ };
+
+ @Override
+ protected void createControls(Composite parent) {
+ createLineWidthComboControl(parent);
+
+ // Help ID
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, HELP_ID);
+ }
+
+ private void createLineWidthComboControl(Composite parent) {
+ createLabel(parent, Messages.LineWidthSection_0, ITabbedLayoutConstants.STANDARD_LABEL_WIDTH, SWT.CENTER);
+
+ fComboLineWidth = new Combo(parent, SWT.READ_ONLY);
+ fComboLineWidth.setItems(comboLineWidthItems);
+ GridData gd = new GridData(SWT.NONE, SWT.NONE, true, false);
+ gd.minimumWidth = ITabbedLayoutConstants.COMBO_WIDTH;
+ fComboLineWidth.setLayoutData(gd);
+ fComboLineWidth.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ CompoundCommand result = new CompoundCommand();
+
+ for(EObject connection : getEObjects()) {
+ if(isAlive(connection)) {
+ Command cmd = new LineWidthCommand((ILineObject)connection, fComboLineWidth.getSelectionIndex() + 1);
+ if(cmd.canExecute()) {
+ result.add(cmd);
+ }
+ }
+ }
+
+ executeCommand(result.unwrap());
+ }
+ });
+ }
+
+ @Override
+ protected void notifyChanged(Notification msg) {
+ if(msg.getNotifier() == getFirstSelectedObject()) {
+ Object feature = msg.getFeature();
+
+ if(feature == IArchimatePackage.Literals.LINE_OBJECT__LINE_WIDTH) {
+ refreshLineWidthCombo();
+ }
+ else if(feature == IArchimatePackage.Literals.LOCKABLE__LOCKED) {
+ update();
+ }
+ }
+ }
+
+ @Override
+ protected void update() {
+ refreshLineWidthCombo();
+ }
+
+ protected void refreshLineWidthCombo() {
+ if(fIsExecutingCommand) {
+ return;
+ }
+
+ IDiagramModelObject firstSelected = (IDiagramModelObject)getFirstSelectedObject();
+
+ int lineWidth = firstSelected.getLineWidth();
+ lineWidth = lineWidth < 1 ? 1 : lineWidth > 4 ? 4 : lineWidth;
+
+ fComboLineWidth.select(lineWidth - 1);
+
+ fComboLineWidth.setEnabled(!isLocked(firstSelected));
+ }
+
+ @Override
+ protected IObjectFilter getFilter() {
+ return new Filter();
+ }
+}
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/propertysections/Messages.java b/com.archimatetool.editor/src/com/archimatetool/editor/propertysections/Messages.java
index b64945860..46112a3fc 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/propertysections/Messages.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/propertysections/Messages.java
@@ -247,6 +247,16 @@ public class Messages extends NLS {
public static String LineColorSection_2;
+ public static String LineWidthSection_0;
+
+ public static String LineWidthSection_1;
+
+ public static String LineWidthSection_2;
+
+ public static String LineWidthSection_3;
+
+ public static String LineWidthSection_4;
+
public static String LockedSection_0;
public static String NameSection_0;
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/propertysections/messages.properties b/com.archimatetool.editor/src/com/archimatetool/editor/propertysections/messages.properties
index b82428cd4..1c6a578d3 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/propertysections/messages.properties
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/propertysections/messages.properties
@@ -129,6 +129,11 @@ LabelRendererSection_2=Set expression
LineColorSection_0=Line Colour:
LineColorSection_1=Default
LineColorSection_2=Enable in Preferences
+LineWidthSection_0=Line Width:
+LineWidthSection_1=Normal
+LineWidthSection_2=Medium
+LineWidthSection_3=Heavy
+LineWidthSection_4=Extra Heavy
LockedSection_0=Locked:
diff --git a/com.archimatetool.help/help/Images/properties_canvas_block3.png b/com.archimatetool.help/help/Images/properties_canvas_block3.png
index bae981133f6c89d9ac6cc0bdd1cf57127dbfe7ec..bf135c4a6d7e47374a6f22dd1822b483643e1462 100755
GIT binary patch
literal 32569
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