From 86c8451e49b40b10772f51c90f68ba5705b7f42f Mon Sep 17 00:00:00 2001
From: dblouin <dominique.blouin@telecom-paristech.fr>
Date: Tue, 19 Feb 2019 13:45:47 +0100
Subject: [PATCH] Issue #31: Zoom on all diagram

---
 src/main/java/ui/ScalableTGComponent.java     |   5 +-
 .../ui/TGCScalableWithInternalComponent.java  | 214 +++++++++---------
 .../TGCScalableWithoutInternalComponent.java  | 188 +++++++--------
 .../java/ui/TGCWithInternalComponent.java     |   2 +-
 .../java/ui/TGCWithoutInternalComponent.java  |   2 +-
 src/main/java/ui/TGComponent.java             |   3 +-
 src/main/java/ui/TGConnector.java             |   2 +-
 src/main/java/ui/TGScalableComponent.java     | 111 +++++++++
 src/main/java/ui/ZoomUtil.java                |  97 ++++----
 .../ui/ad/TADComponentWithSubcomponents.java  |   4 +-
 src/main/java/ui/ad/TADOneLineText.java       |   9 +-
 .../java/ui/ad/TActivityDiagramToolBar.java   |  10 +-
 src/main/java/ui/atd/ATDAttackConnector.java  |  53 ++---
 .../java/ui/atd/ATDCompositionConnector.java  |  58 ++---
 .../ui/atd/ATDCountermeasureConnector.java    |  55 +++--
 .../AvatarBDCompositionConnector.java         |  58 ++---
 .../ui/avatarbd/AvatarBDPortConnector.java    |  56 ++---
 .../AvatarCDCompositionConnector.java         |  72 +++---
 .../java/ui/avatardd/ADDDiagramToolBar.java   |   6 +-
 ...vatarMADBelongsToCompositionConnector.java |  71 +++---
 .../avatarpd/AvatarPDAttributeConnector.java  |  75 +++---
 .../AvatarPDCompositionConnector.java         |  70 +++---
 .../avatarpd/AvatarPDPropertyConnector.java   |  64 +++---
 .../ui/avatarpd/AvatarPDSignalConnector.java  |  58 +++--
 .../java/ui/avatarsmd/AvatarSMDToolBar.java   |  10 +-
 src/main/java/ui/cd/TClassDiagramToolBar.java |  10 +-
 .../java/ui/dd/TDeploymentDiagramToolBar.java |  10 +-
 src/main/java/ui/ebrdd/EBRDDToolBar.java      |  10 +-
 src/main/java/ui/eln/ELNConnector.java        |  60 +++--
 src/main/java/ui/eln/ELNDiagramToolBar.java   |   6 +-
 .../java/ui/ftd/FTDCompositionConnector.java  |  74 +++---
 .../ui/ftd/FTDCountermeasureConnector.java    |  80 +++----
 src/main/java/ui/ftd/FTDFaultConnector.java   |  73 +++---
 .../InteractionOverviewDiagramToolBar.java    |  10 +-
 src/main/java/ui/ncdd/NCDiagramToolBar.java   |  10 +-
 .../osad/TURTLEOSActivityDiagramToolBar.java  |  10 +-
 .../ui/oscd/TURTLEOSClassDiagramToolBar.java  |  10 +-
 .../java/ui/procsd/ProactiveCSDToolBar.java   |  10 +-
 .../java/ui/prosmd/ProactiveSMDToolBar.java   |  10 +-
 .../java/ui/sd/SequenceDiagramToolBar.java    |  10 +-
 .../SysCAMSComponentTaskDiagramToolBar.java   |   8 +-
 .../java/ui/syscams/SysCAMSPortConnector.java |  45 ++--
 .../ui/tmlad/TMLActivityDiagramToolBar.java   |   6 +-
 .../java/ui/tmlcd/TMLTaskDiagramToolBar.java  |  40 ++--
 .../java/ui/tmlcompd/TMLCPortConnector.java   |  62 +++--
 src/main/java/ui/tmlcp/TMLCPToolBar.java      |  10 +-
 .../java/ui/tmldd/TMLArchiDiagramToolBar.java |   6 +-
 src/main/java/ui/tmlsd/TMLSDToolBar.java      |  10 +-
 48 files changed, 1040 insertions(+), 893 deletions(-)
 create mode 100644 src/main/java/ui/TGScalableComponent.java

diff --git a/src/main/java/ui/ScalableTGComponent.java b/src/main/java/ui/ScalableTGComponent.java
index 08bc4a8ed5..a3f73b8842 100644
--- a/src/main/java/ui/ScalableTGComponent.java
+++ b/src/main/java/ui/ScalableTGComponent.java
@@ -45,6 +45,7 @@ package ui;
  * @version 1.0 10/03/2008
  * @author Ludovic APVRILLE
  */
-public interface ScalableTGComponent  {
-    void rescale(double scaleFactor);
+public interface ScalableTGComponent {
+    
+	void rescale(double scaleFactor);
 }
\ No newline at end of file
diff --git a/src/main/java/ui/TGCScalableWithInternalComponent.java b/src/main/java/ui/TGCScalableWithInternalComponent.java
index ac9c0cce48..9985ab8271 100644
--- a/src/main/java/ui/TGCScalableWithInternalComponent.java
+++ b/src/main/java/ui/TGCScalableWithInternalComponent.java
@@ -45,116 +45,116 @@ package ui;
    * @version 1.0 10/03/2008
    * @author Ludovic APVRILLE
  */
-public abstract class TGCScalableWithInternalComponent extends TGCWithInternalComponent implements ScalableTGComponent {
+public abstract class TGCScalableWithInternalComponent extends TGCWithInternalComponent /*implements ScalableTGComponent*/ {
     
-	protected boolean rescaled = false;
-	protected double oldScaleFactor;
+//	protected boolean rescaled = false;
+//	protected double oldScaleFactor;
 
     public TGCScalableWithInternalComponent(int _x, int _y, int _minX, int _maxX, int _minY, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp) {
         super(_x, _y, _minX, _maxX, _minY, _maxY, _pos, _father, _tdp);
     }
-
-    @Override
-    public void rescale(double scaleFactor){
-        /*TraceManager.addDev("rescaling for " + this.getClass() + " with oldScaleFactor=" + oldScaleFactor +
-                " new scale factor = " + scaleFactor + " dx=" + dx + " dy=" + dy +
-                " x=" + x + " y=" + y + " width=" + width + " height=" + height);*/
-        rescaled = true;
-        
-        final double factor = scaleFactor / oldScaleFactor;
-
-        dwidth = (width + dwidth) * factor;//oldScaleFactor * scaleFactor;
-        dheight = (height + dheight) * factor;//oldScaleFactor * scaleFactor;
-        dx = (dx + x) * factor;//oldScaleFactor * scaleFactor;
-        dy = (dy + y) * factor;//oldScaleFactor * scaleFactor;
-        dMinWidth = (minWidth + dMinWidth) * factor;//oldScaleFactor * scaleFactor;
-        dMinHeight = (minHeight + dMinHeight) * factor;//oldScaleFactor * scaleFactor;
-        dMaxWidth = (maxWidth + dMaxWidth) * factor;//oldScaleFactor * scaleFactor;
-        dMaxHeight = (maxHeight + dMaxHeight) * factor;//oldScaleFactor * scaleFactor;
-
-        width = (int)(dwidth);
-        dwidth = dwidth - width;
-        height = (int)(dheight);
-        dheight = dheight - height;
-        minWidth = (int)(dMinWidth);
-        minHeight = (int)(dMinHeight);
-        maxWidth = (int)(dMaxWidth);
-        maxHeight = (int)(dMaxHeight);
-
-	//TraceManager.addDev("tgc= " + this + " minHeight=" + minHeight);
-	//TraceManager.addDev("tgc= " + this + " maxHeight=" + maxHeight + " height=  " + height);
-
-        dMinWidth = dMinWidth - minWidth;
-        dMinHeight = dMinHeight - minHeight;
-        dMaxWidth = dMaxWidth - maxWidth;
-        dMaxHeight = dMaxHeight - maxHeight;
-        x = (int)(dx);
-        dx = dx - x;
-        y = (int)(dy);
-        dy = dy - y;
-        
-        // Issue #81: We also need to update max coordinate values
-        maxX *= factor;
-        maxY *= factor;
-
-
-
-        //TraceManager.addDev("x=" + x + " y=" + y + " width=" + width + " height=" + height);
-
-        oldScaleFactor = scaleFactor;
-
-        if (father != null) {
-            // Must rescale my zone...
-            resizeWithFather();
-        } else {
-            minX = (int)(tdp.getMinX()/tdp.getZoom());
-            maxX = (int)(tdp.getMaxX()/tdp.getZoom());
-            minY = (int)(tdp.getMinY()/tdp.getZoom());
-            maxY = (int)(tdp.getMaxY()/tdp.getZoom());
-        }
-
-        setMoveCd(x, y, true);
-
-        //TraceManager.addDev("x=" + x + " y=" + y + " width=" + width + " height=" + height);
-
-        for(int i=0; i<nbInternalTGComponent; i++) {
-            if (tgcomponent[i] instanceof ScalableTGComponent) {
-                ((ScalableTGComponent)tgcomponent[i]).rescale(scaleFactor);
-            }
-        }
-        hasBeenResized();
-    }
-
-    protected void initScaling(int w, int h) {
-        oldScaleFactor = tdp.getZoom();
-
-        dx = 0;
-        dy = 0;
-
-        dwidth = w * oldScaleFactor;
-        width = (int)dwidth;
-        dwidth = dwidth - width;
-
-        dheight = h * oldScaleFactor;
-        height = (int)(dheight);
-        dheight = dheight - height;
-
-        dMaxWidth = defMaxWidth * oldScaleFactor;
-        dMaxHeight = defMaxHeight * oldScaleFactor;
-
-        maxWidth = defMaxWidth;
-        maxHeight = defMaxHeight;
-
-        dMaxWidth = dMaxWidth - maxWidth;
-        dMaxHeight = dMaxHeight - maxHeight;
-
-        if (father == null) {
-            minX = (int)(tdp.getMinX()/tdp.getZoom());
-            maxX = (int)(tdp.getMaxX()/tdp.getZoom());
-            minY = (int)(tdp.getMinY()/tdp.getZoom());
-            maxY = (int)(tdp.getMaxY()/tdp.getZoom());
-        }
-
-        rescaled = true;
-    }
+//
+//    @Override
+//    public void rescale(double scaleFactor){
+//        /*TraceManager.addDev("rescaling for " + this.getClass() + " with oldScaleFactor=" + oldScaleFactor +
+//                " new scale factor = " + scaleFactor + " dx=" + dx + " dy=" + dy +
+//                " x=" + x + " y=" + y + " width=" + width + " height=" + height);*/
+//        rescaled = true;
+//        
+//        final double factor = scaleFactor / oldScaleFactor;
+//
+//        dwidth = (width + dwidth) * factor;//oldScaleFactor * scaleFactor;
+//        dheight = (height + dheight) * factor;//oldScaleFactor * scaleFactor;
+//        dx = (dx + x) * factor;//oldScaleFactor * scaleFactor;
+//        dy = (dy + y) * factor;//oldScaleFactor * scaleFactor;
+//        dMinWidth = (minWidth + dMinWidth) * factor;//oldScaleFactor * scaleFactor;
+//        dMinHeight = (minHeight + dMinHeight) * factor;//oldScaleFactor * scaleFactor;
+//        dMaxWidth = (maxWidth + dMaxWidth) * factor;//oldScaleFactor * scaleFactor;
+//        dMaxHeight = (maxHeight + dMaxHeight) * factor;//oldScaleFactor * scaleFactor;
+//
+//        width = (int)(dwidth);
+//        dwidth = dwidth - width;
+//        height = (int)(dheight);
+//        dheight = dheight - height;
+//        minWidth = (int)(dMinWidth);
+//        minHeight = (int)(dMinHeight);
+//        maxWidth = (int)(dMaxWidth);
+//        maxHeight = (int)(dMaxHeight);
+//
+//	//TraceManager.addDev("tgc= " + this + " minHeight=" + minHeight);
+//	//TraceManager.addDev("tgc= " + this + " maxHeight=" + maxHeight + " height=  " + height);
+//
+//        dMinWidth = dMinWidth - minWidth;
+//        dMinHeight = dMinHeight - minHeight;
+//        dMaxWidth = dMaxWidth - maxWidth;
+//        dMaxHeight = dMaxHeight - maxHeight;
+//        x = (int)(dx);
+//        dx = dx - x;
+//        y = (int)(dy);
+//        dy = dy - y;
+//        
+//        // Issue #81: We also need to update max coordinate values
+//        maxX *= factor;
+//        maxY *= factor;
+//
+//
+//
+//        //TraceManager.addDev("x=" + x + " y=" + y + " width=" + width + " height=" + height);
+//
+//        oldScaleFactor = scaleFactor;
+//
+//        if (father != null) {
+//            // Must rescale my zone...
+//            resizeWithFather();
+//        } else {
+//            minX = (int)(tdp.getMinX()/tdp.getZoom());
+//            maxX = (int)(tdp.getMaxX()/tdp.getZoom());
+//            minY = (int)(tdp.getMinY()/tdp.getZoom());
+//            maxY = (int)(tdp.getMaxY()/tdp.getZoom());
+//        }
+//
+//        setMoveCd(x, y, true);
+//
+//        //TraceManager.addDev("x=" + x + " y=" + y + " width=" + width + " height=" + height);
+//
+//        for(int i=0; i<nbInternalTGComponent; i++) {
+//            if (tgcomponent[i] instanceof ScalableTGComponent) {
+//                ((ScalableTGComponent)tgcomponent[i]).rescale(scaleFactor);
+//            }
+//        }
+//        hasBeenResized();
+//    }
+//
+//    protected void initScaling(int w, int h) {
+//        oldScaleFactor = tdp.getZoom();
+//
+//        dx = 0;
+//        dy = 0;
+//
+//        dwidth = w * oldScaleFactor;
+//        width = (int)dwidth;
+//        dwidth = dwidth - width;
+//
+//        dheight = h * oldScaleFactor;
+//        height = (int)(dheight);
+//        dheight = dheight - height;
+//
+//        dMaxWidth = defMaxWidth * oldScaleFactor;
+//        dMaxHeight = defMaxHeight * oldScaleFactor;
+//
+//        maxWidth = defMaxWidth;
+//        maxHeight = defMaxHeight;
+//
+//        dMaxWidth = dMaxWidth - maxWidth;
+//        dMaxHeight = dMaxHeight - maxHeight;
+//
+//        if (father == null) {
+//            minX = (int)(tdp.getMinX()/tdp.getZoom());
+//            maxX = (int)(tdp.getMaxX()/tdp.getZoom());
+//            minY = (int)(tdp.getMinY()/tdp.getZoom());
+//            maxY = (int)(tdp.getMaxY()/tdp.getZoom());
+//        }
+//
+//        rescaled = true;
+//    }
 }
diff --git a/src/main/java/ui/TGCScalableWithoutInternalComponent.java b/src/main/java/ui/TGCScalableWithoutInternalComponent.java
index 1dbb669ef9..db471b6e22 100644
--- a/src/main/java/ui/TGCScalableWithoutInternalComponent.java
+++ b/src/main/java/ui/TGCScalableWithoutInternalComponent.java
@@ -45,105 +45,105 @@ package ui;
    * @version 1.0 14/04/2014
    * @author Ludovic APVRILLE
  */
-public abstract class TGCScalableWithoutInternalComponent extends TGCWithoutInternalComponent implements ScalableTGComponent {
+public abstract class TGCScalableWithoutInternalComponent extends TGCWithoutInternalComponent /*implements ScalableTGComponent*/ {
     
-	protected boolean rescaled = false;
-    
-	protected double oldScaleFactor;
+//	protected boolean rescaled = false;
+//    
+//	protected double oldScaleFactor;
 
     public TGCScalableWithoutInternalComponent(int _x, int _y, int _minX, int _maxX, int _minY, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp) {
         super(_x, _y, _minX, _maxX, _minY, _maxY, _pos, _father, _tdp);
         
-        // Isssue #31
-        oldScaleFactor = 1.0;
-    }
-
-    @Override
-    public void rescale (double scaleFactor){
-        rescaled = true;
-
-        final double factor = scaleFactor / oldScaleFactor;
-
-        dwidth = (width + dwidth) * factor;// oldScaleFactor * scaleFactor;
-        dheight = (height + dheight) * factor;// oldScaleFactor * scaleFactor;
-        dx = (dx + x) * factor;// oldScaleFactor * scaleFactor;
-        dy = (dy + y) * factor;// oldScaleFactor * scaleFactor;
-        dMinWidth = (minWidth + dMinWidth) * factor;// oldScaleFactor * scaleFactor;
-        dMinHeight = (minHeight + dMinHeight) * factor;// oldScaleFactor * scaleFactor;
-        dMaxWidth = (maxWidth + dMaxWidth) * factor;// oldScaleFactor * scaleFactor;
-        dMaxHeight = (maxHeight + dMaxHeight) * factor;// oldScaleFactor * scaleFactor;
-
-        width = (int)(dwidth);
-        dwidth = dwidth - width;
-        height = (int)(dheight);
-        dheight = dheight - height;
-        minWidth = (int)(dMinWidth);
-        minHeight = (int)(dMinHeight);
-        maxWidth = (int)(dMaxWidth);
-        maxHeight = (int)(dMaxHeight);
-
-	//TraceManager.addDev("tgc= " + this + " minHeight=" + minHeight);
-	//TraceManager.addDev("tgc= " + this + " maxHeight=" + maxHeight);
-	
-        dMinWidth = dMinWidth - minWidth;
-        dMinHeight = dMinHeight - minHeight;
-        dMaxWidth = dMaxWidth - maxWidth;
-        dMaxHeight = dMaxHeight - maxHeight;
-        x = (int)(dx);
-        dx = dx - x;
-        y = (int)(dy);
-        dy = dy - y;
-        
-        // Issue #81: We also need to update max coordinate values
-        maxX *= factor;
-        maxY *= factor;
-
-        oldScaleFactor = scaleFactor;
-
-        if (father != null) {
-            // Must rescale my zone...
-            resizeWithFather();
-        } else {
-            minX = (int)(tdp.getMinX()/tdp.getZoom());
-            maxX = (int)(tdp.getMaxX()/tdp.getZoom());
-            minY = (int)(tdp.getMinY()/tdp.getZoom());
-            maxY = (int)(tdp.getMaxY()/tdp.getZoom());
-
-        }
-	
-        setMoveCd(x, y, true);
+//        // Isssue #31
+//        oldScaleFactor = 1.0;
     }
 
-    protected void initScaling(int w, int h) {
-        oldScaleFactor = tdp.getZoom();
-
-        dx = 0;
-        dy = 0;
-
-        dwidth = w * oldScaleFactor;
-        width = (int)dwidth;
-        dwidth = dwidth - width;
-
-        dheight = h * oldScaleFactor;
-        height = (int)(dheight);
-        dheight = dheight - height;
-
-        dMaxWidth = defMaxWidth * oldScaleFactor;
-        dMaxHeight = defMaxHeight * oldScaleFactor;
-
-        maxWidth = defMaxWidth;
-        maxHeight = defMaxHeight;
-
-        dMaxWidth = dMaxWidth - maxWidth;
-        dMaxHeight = dMaxHeight - maxHeight;
-
-        if (father == null) {
-            minX = (int)(tdp.getMinX()/tdp.getZoom());
-            maxX = (int)(tdp.getMaxX()/tdp.getZoom());
-            minY = (int)(tdp.getMinY()/tdp.getZoom());
-            maxY = (int)(tdp.getMaxY()/tdp.getZoom());
-        }
-
-        rescaled = true;
-    }
+//    @Override
+//    public void rescale (double scaleFactor){
+//        rescaled = true;
+//
+//        final double factor = scaleFactor / oldScaleFactor;
+//
+//        dwidth = (width + dwidth) * factor;// oldScaleFactor * scaleFactor;
+//        dheight = (height + dheight) * factor;// oldScaleFactor * scaleFactor;
+//        dx = (dx + x) * factor;// oldScaleFactor * scaleFactor;
+//        dy = (dy + y) * factor;// oldScaleFactor * scaleFactor;
+//        dMinWidth = (minWidth + dMinWidth) * factor;// oldScaleFactor * scaleFactor;
+//        dMinHeight = (minHeight + dMinHeight) * factor;// oldScaleFactor * scaleFactor;
+//        dMaxWidth = (maxWidth + dMaxWidth) * factor;// oldScaleFactor * scaleFactor;
+//        dMaxHeight = (maxHeight + dMaxHeight) * factor;// oldScaleFactor * scaleFactor;
+//
+//        width = (int)(dwidth);
+//        dwidth = dwidth - width;
+//        height = (int)(dheight);
+//        dheight = dheight - height;
+//        minWidth = (int)(dMinWidth);
+//        minHeight = (int)(dMinHeight);
+//        maxWidth = (int)(dMaxWidth);
+//        maxHeight = (int)(dMaxHeight);
+//
+//	//TraceManager.addDev("tgc= " + this + " minHeight=" + minHeight);
+//	//TraceManager.addDev("tgc= " + this + " maxHeight=" + maxHeight);
+//	
+//        dMinWidth = dMinWidth - minWidth;
+//        dMinHeight = dMinHeight - minHeight;
+//        dMaxWidth = dMaxWidth - maxWidth;
+//        dMaxHeight = dMaxHeight - maxHeight;
+//        x = (int)(dx);
+//        dx = dx - x;
+//        y = (int)(dy);
+//        dy = dy - y;
+//        
+//        // Issue #81: We also need to update max coordinate values
+//        maxX *= factor;
+//        maxY *= factor;
+//
+//        oldScaleFactor = scaleFactor;
+//
+//        if (father != null) {
+//            // Must rescale my zone...
+//            resizeWithFather();
+//        } else {
+//            minX = (int)(tdp.getMinX()/tdp.getZoom());
+//            maxX = (int)(tdp.getMaxX()/tdp.getZoom());
+//            minY = (int)(tdp.getMinY()/tdp.getZoom());
+//            maxY = (int)(tdp.getMaxY()/tdp.getZoom());
+//
+//        }
+//	
+//        setMoveCd(x, y, true);
+//    }
+//
+//    protected void initScaling(int w, int h) {
+//        oldScaleFactor = tdp.getZoom();
+//
+//        dx = 0;
+//        dy = 0;
+//
+//        dwidth = w * oldScaleFactor;
+//        width = (int)dwidth;
+//        dwidth = dwidth - width;
+//
+//        dheight = h * oldScaleFactor;
+//        height = (int)(dheight);
+//        dheight = dheight - height;
+//
+//        dMaxWidth = defMaxWidth * oldScaleFactor;
+//        dMaxHeight = defMaxHeight * oldScaleFactor;
+//
+//        maxWidth = defMaxWidth;
+//        maxHeight = defMaxHeight;
+//
+//        dMaxWidth = dMaxWidth - maxWidth;
+//        dMaxHeight = dMaxHeight - maxHeight;
+//
+//        if (father == null) {
+//            minX = (int)(tdp.getMinX()/tdp.getZoom());
+//            maxX = (int)(tdp.getMaxX()/tdp.getZoom());
+//            minY = (int)(tdp.getMinY()/tdp.getZoom());
+//            maxY = (int)(tdp.getMaxY()/tdp.getZoom());
+//        }
+//
+//        rescaled = true;
+//    }
 }
diff --git a/src/main/java/ui/TGCWithInternalComponent.java b/src/main/java/ui/TGCWithInternalComponent.java
index 833bc50b1d..0ac930c57a 100644
--- a/src/main/java/ui/TGCWithInternalComponent.java
+++ b/src/main/java/ui/TGCWithInternalComponent.java
@@ -45,7 +45,7 @@ package ui;
    * @version 1.0 22/12/2003
    * @author Ludovic APVRILLE
  */
-public abstract class TGCWithInternalComponent extends TGComponent {
+public abstract class TGCWithInternalComponent extends TGScalableComponent /* Issue #31 TGComponent*/{
 
     public TGCWithInternalComponent(int _x, int _y, int _minX, int _maxX, int _minY, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp) {
         super(_x, _y, _minX, _maxX, _minY, _maxY, _pos, _father, _tdp);
diff --git a/src/main/java/ui/TGCWithoutInternalComponent.java b/src/main/java/ui/TGCWithoutInternalComponent.java
index dcf49f283f..50383b0139 100644
--- a/src/main/java/ui/TGCWithoutInternalComponent.java
+++ b/src/main/java/ui/TGCWithoutInternalComponent.java
@@ -45,7 +45,7 @@ package ui;
  * @version 1.0 21/12/2003
  * @author Ludovic APVRILLE
  */
-public abstract class TGCWithoutInternalComponent extends TGComponent{
+public abstract class TGCWithoutInternalComponent extends TGScalableComponent /* Issue #31 TGComponent*/{
     
     public TGCWithoutInternalComponent(int _x, int _y, int _minX, int _maxX, int _minY, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp)  {
         super(_x, _y, _minX, _maxX, _minY, _maxY, _pos, _father, _tdp);
diff --git a/src/main/java/ui/TGComponent.java b/src/main/java/ui/TGComponent.java
index 6cd458c86f..714b9fdcc7 100644
--- a/src/main/java/ui/TGComponent.java
+++ b/src/main/java/ui/TGComponent.java
@@ -214,7 +214,8 @@ public abstract class TGComponent  extends AbstractCDElement implements /*CDElem
     protected boolean breakpoint;
 
     // Zoom
-    public double dx = 0, dy = 0, dwidth, dheight, dMaxWidth, dMaxHeight, dMinWidth, dMinHeight;
+    // Issue #31: Make these values accessible only by package classes such as ZoomUtil
+    /*public*/ double dx = 0, dy = 0, dwidth, dheight, dMaxWidth, dMaxHeight, dMinWidth, dMinHeight;
 
 
     //Constructor
diff --git a/src/main/java/ui/TGConnector.java b/src/main/java/ui/TGConnector.java
index 55a43f5a26..c16d6028ed 100644
--- a/src/main/java/ui/TGConnector.java
+++ b/src/main/java/ui/TGConnector.java
@@ -83,7 +83,7 @@ public abstract class TGConnector extends TGCScalableWithInternalComponent {
         p1 = _p1;
         p2 = _p2;
 	
-        initScaling(0, 0);
+        //initScaling(0, 0);
         initPoints( _listPoint );
 
 //        nbInternalTGComponent = _listPoint.size();
diff --git a/src/main/java/ui/TGScalableComponent.java b/src/main/java/ui/TGScalableComponent.java
new file mode 100644
index 0000000000..4158bf9b9b
--- /dev/null
+++ b/src/main/java/ui/TGScalableComponent.java
@@ -0,0 +1,111 @@
+package ui;
+
+public abstract class TGScalableComponent extends TGComponent implements ScalableTGComponent {
+	
+	protected boolean rescaled;
+	
+	protected double oldScaleFactor;
+
+	public TGScalableComponent(int _x, int _y, int _minX, int _maxX, int _minY, int _maxY, boolean _pos,
+			TGComponent _father, TDiagramPanel _tdp) {
+		super(_x, _y, _minX, _maxX, _minY, _maxY, _pos, _father, _tdp);
+		
+		rescaled = false;
+        oldScaleFactor = tdp.getZoom();//1.0;
+	}
+
+    protected void initScaling(int w, int h) {
+        oldScaleFactor = tdp.getZoom();
+
+        dx = 0;
+        dy = 0;
+
+        dwidth = w * oldScaleFactor;
+        width = (int)dwidth;
+        dwidth = dwidth - width;
+
+        dheight = h * oldScaleFactor;
+        height = (int)(dheight);
+        dheight = dheight - height;
+
+        dMaxWidth = defMaxWidth * oldScaleFactor;
+        dMaxHeight = defMaxHeight * oldScaleFactor;
+
+        maxWidth = defMaxWidth;
+        maxHeight = defMaxHeight;
+
+        dMaxWidth = dMaxWidth - maxWidth;
+        dMaxHeight = dMaxHeight - maxHeight;
+
+        if (father == null) {
+            minX = (int)(tdp.getMinX()/tdp.getZoom());
+            maxX = (int)(tdp.getMaxX()/tdp.getZoom());
+            minY = (int)(tdp.getMinY()/tdp.getZoom());
+            maxY = (int)(tdp.getMaxY()/tdp.getZoom());
+        }
+
+        rescaled = true;
+    }
+
+    @Override
+    public void rescale( final double scaleFactor ) {
+        rescaled = true;
+        
+        final double factor = scaleFactor / oldScaleFactor;
+
+        dwidth = (width + dwidth) * factor;
+        dheight = (height + dheight) * factor;
+        dx = (dx + x) * factor;
+        dy = (dy + y) * factor;
+        dMinWidth = (minWidth + dMinWidth) * factor;
+        dMinHeight = (minHeight + dMinHeight) * factor;//oldScaleFactor * scaleFactor;
+        dMaxWidth = (maxWidth + dMaxWidth) * factor;//oldScaleFactor * scaleFactor;
+        dMaxHeight = (maxHeight + dMaxHeight) * factor;//oldScaleFactor * scaleFactor;
+
+        width = (int)(dwidth);
+        dwidth = dwidth - width;
+        height = (int)(dheight);
+        dheight = dheight - height;
+        minWidth = (int)(dMinWidth);
+        minHeight = (int)(dMinHeight);
+        maxWidth = (int)(dMaxWidth);
+        maxHeight = (int)(dMaxHeight);
+
+        dMinWidth = dMinWidth - minWidth;
+        dMinHeight = dMinHeight - minHeight;
+        dMaxWidth = dMaxWidth - maxWidth;
+        dMaxHeight = dMaxHeight - maxHeight;
+        x = (int)(dx);
+        dx = dx - x;
+        y = (int)(dy);
+        dy = dy - y;
+        
+        // Issue #81: We also need to update max coordinate values
+        maxX *= factor;
+        maxY *= factor;
+
+        oldScaleFactor = scaleFactor;
+
+        if (father != null) {
+            // Must rescale my zone...
+            resizeWithFather();
+        } else {
+            minX = (int)(tdp.getMinX()/tdp.getZoom());
+            maxX = (int)(tdp.getMaxX()/tdp.getZoom());
+            minY = (int)(tdp.getMinY()/tdp.getZoom());
+            maxY = (int)(tdp.getMaxY()/tdp.getZoom());
+        }
+
+        setMoveCd(x, y, true);
+
+        //TraceManager.addDev("x=" + x + " y=" + y + " width=" + width + " height=" + height);
+
+        for(int i=0; i<nbInternalTGComponent; i++) {
+            if (tgcomponent[i] instanceof ScalableTGComponent) {
+                ((ScalableTGComponent)tgcomponent[i]).rescale(scaleFactor);
+            }
+        }
+        
+        hasBeenResized();
+    }
+}
diff --git a/src/main/java/ui/ZoomUtil.java b/src/main/java/ui/ZoomUtil.java
index 3d788f0e03..1644d60c29 100644
--- a/src/main/java/ui/ZoomUtil.java
+++ b/src/main/java/ui/ZoomUtil.java
@@ -70,57 +70,66 @@ public class ZoomUtil {
 //        g.drawString(value, (int)(x*zoom) , (int)(y*zoom));
 //    }
 
-    public static void rescale(	final TGComponent component,
-    							final double scaleFactor ) {
-//        rescaled = true;
-
-     //   final double factor = scaleFactor / oldScaleFactor;
-
-//        dwidth = (width + dwidth) * factor;// oldScaleFactor * scaleFactor;
-//        dheight = (height + dheight) * factor;// oldScaleFactor * scaleFactor;
-//        dx = (dx + x) * factor;// oldScaleFactor * scaleFactor;
-//        dy = (dy + y) * factor;// oldScaleFactor * scaleFactor;
-//        dMinWidth = (minWidth + dMinWidth) * factor;// oldScaleFactor * scaleFactor;
-//        dMinHeight = (minHeight + dMinHeight) * factor;// oldScaleFactor * scaleFactor;
-//        dMaxWidth = (maxWidth + dMaxWidth) * factor;// oldScaleFactor * scaleFactor;
-//        dMaxHeight = (maxHeight + dMaxHeight) * factor;// oldScaleFactor * scaleFactor;
+//    public static void rescale(	final TGComponent component,
+//    							final double scaleFactor ) {
+//        //rescaled = true;
+//
+//        //final double factor = scaleFactor / oldScaleFactor;
 //
-//        width = (int)(dwidth);
-//        dwidth = dwidth - width;
-//        height = (int)(dheight);
-//        dheight = dheight - height;
-//        minWidth = (int)(dMinWidth);
-//        minHeight = (int)(dMinHeight);
-//        maxWidth = (int)(dMaxWidth);
-//        maxHeight = (int)(dMaxHeight);
+//    	component.dwidth = (component.getWidth() + component.dwidth) * scaleFactor;// oldScaleFactor * scaleFactor;
+//    	component.dheight = (component.getHeight() + component.dheight) * scaleFactor;// oldScaleFactor * scaleFactor;
+//    	component.dx = (component.dx + component.getX()) * scaleFactor;// oldScaleFactor * scaleFactor;
+//    	component.dy = (component.dy + component.getY()) * scaleFactor;// oldScaleFactor * scaleFactor;
+//    	component.dMinWidth = (component.getMinWidth() + component.dMinWidth) * scaleFactor;// oldScaleFactor * scaleFactor;
+//    	component.dMinHeight = (component.getMinHeight() + component.dMinHeight) * scaleFactor;// oldScaleFactor * scaleFactor;
+//    	component.dMaxWidth = (component.getMaxWidth() + component.dMaxWidth) * scaleFactor;// oldScaleFactor * scaleFactor;
+//    	component.dMaxHeight = (component.getMaxHeight() + component.dMaxHeight) * scaleFactor;// oldScaleFactor * scaleFactor;
+//
+//    	component.width = (int)(component.dwidth);
+//    	component.dwidth = component.dwidth - component.getWidth();
+//    	component.height = (int)(component.dheight);
+//    	component.dheight = component.dheight - component.getHeight();
+//    	component.minWidth = (int)(component.dMinWidth);
+//    	component.minHeight = (int)(component.dMinHeight);
+//    	component.maxWidth = (int)(component.dMaxWidth);
+//    	component.maxHeight = (int)(component.dMaxHeight);
 //	
-//        dMinWidth = dMinWidth - minWidth;
-//        dMinHeight = dMinHeight - minHeight;
-//        dMaxWidth = dMaxWidth - maxWidth;
-//        dMaxHeight = dMaxHeight - maxHeight;
-//        x = (int)(dx);
-//        dx = dx - x;
-//        y = (int)(dy);
-//        dy = dy - y;
+//    	component.dMinWidth = component.dMinWidth - component.getMinWidth();
+//    	component.dMinHeight = component.dMinHeight - component.getMinHeight();
+//    	component.dMaxWidth = component.dMaxWidth - component.getMaxWidth();
+//    	component.dMaxHeight = component.dMaxHeight - component.getMaxHeight();
+//    	component.x = (int)(component.dx);
+//    	component.dx = component.dx - component.getX();
+//    	component.y = (int)(component.dy);
+//    	component.dy = component.dy - component.getY();
 //        
-//        // Issue #81: We also need to update max coordinate values
-//        maxX *= factor;
-//        maxY *= factor;
 //
-//        oldScaleFactor = scaleFactor;
+//        //oldScaleFactor = scaleFactor;
+//
+//        if ( component.getFather() != null) {
+//            
+//        	// Issue #81: We also need to update max coordinate values
+//        	component.maxX *= scaleFactor;
+//        	component.maxY *= scaleFactor;
 //
-//        if (father != null) {
-//            // Must rescale my zone...
-//            resizeWithFather();
-//        } else {
-//            minX = (int)(tdp.getMinX()/tdp.getZoom());
-//            maxX = (int)(tdp.getMaxX()/tdp.getZoom());
-//            minY = (int)(tdp.getMinY()/tdp.getZoom());
-//            maxY = (int)(tdp.getMaxY()/tdp.getZoom());
+//        	// Must rescale my zone...
+//        	component.resizeWithFather();
+//        }
+//        else {
+//        	component.minX = (int)(tdp.getMinX()/tdp.getZoom());
+//        	component.maxX = (int)(tdp.getMaxX()/tdp.getZoom());
+//        	component.minY = (int)(tdp.getMinY()/tdp.getZoom());
+//        	component.maxY = (int)(tdp.getMaxY()/tdp.getZoom());
 //
 //        }
 //	
-//        setMoveCd(x, y, true);
-    }
+//        component.setMoveCd(component.x, component.y, true);
+//
+//        for( final TGComponent subCompo : component.tgcomponent ) {
+//            if ( subCompo instanceof ScalableTGComponent ) {
+//                ( (ScalableTGComponent) subCompo ).rescale( scaleFactor );
+//            }
+//        }
+//    }
 }
 
diff --git a/src/main/java/ui/ad/TADComponentWithSubcomponents.java b/src/main/java/ui/ad/TADComponentWithSubcomponents.java
index d667814cfd..86fa2c2d42 100644
--- a/src/main/java/ui/ad/TADComponentWithSubcomponents.java
+++ b/src/main/java/ui/ad/TADComponentWithSubcomponents.java
@@ -8,8 +8,8 @@ import ui.TGComponent;
  * Issue #69
  * @author dblouin
  *
- */
-public abstract class TADComponentWithSubcomponents extends TGCScalableWithInternalComponent /*TGCWithInternalComponent*/ {
+ */															
+public abstract class TADComponentWithSubcomponents extends TGCScalableWithInternalComponent {
 
 	public TADComponentWithSubcomponents(int _x, int _y, int _minX, int _maxX, int _minY, int _maxY,
 			boolean _pos, TGComponent _father, TDiagramPanel _tdp) {
diff --git a/src/main/java/ui/ad/TADOneLineText.java b/src/main/java/ui/ad/TADOneLineText.java
index 27a58d0196..d1b4225ef3 100644
--- a/src/main/java/ui/ad/TADOneLineText.java
+++ b/src/main/java/ui/ad/TADOneLineText.java
@@ -1,12 +1,10 @@
 package ui.ad;
 
-import ui.ScalableTGComponent;
 import ui.TDiagramPanel;
 import ui.TGCOneLineText;
 import ui.TGComponent;
-import ui.ZoomUtil;
 
-public abstract class TADOneLineText extends TGCOneLineText implements ScalableTGComponent {
+public abstract class TADOneLineText extends TGCOneLineText /* Issue #31 implements ScalableTGComponent*/ {
 
 	public TADOneLineText(int _x, int _y, int _minX, int _maxX, int _minY, int _maxY, boolean _pos, TGComponent _father,
 			TDiagramPanel _tdp) {
@@ -24,9 +22,4 @@ public abstract class TADOneLineText extends TGCOneLineText implements ScalableT
     	
     	return visitor.isCanBeDisabled();
     }
-    
-    @Override
-    public void rescale( final double scaleFactor ) {
-    	ZoomUtil.rescale( this, scaleFactor );
-    }
 }
diff --git a/src/main/java/ui/ad/TActivityDiagramToolBar.java b/src/main/java/ui/ad/TActivityDiagramToolBar.java
index 02d83a32ba..a0c18d30b0 100755
--- a/src/main/java/ui/ad/TActivityDiagramToolBar.java
+++ b/src/main/java/ui/ad/TActivityDiagramToolBar.java
@@ -81,9 +81,13 @@ public class TActivityDiagramToolBar extends TToolBar {
         mgui.actions[TGUIAction.ACT_TOGGLE_JAVA].setEnabled(b);
         mgui.actions[TGUIAction.ACT_ENHANCE].setEnabled(b);
 		
-		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
+		// Issue #31
+		mgui.actions[ TGUIAction.ACT_ZOOM_MORE ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_ZOOM_LESS ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_SHOW_ZOOM ].setEnabled( b );
+//		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
 		
 		mgui.actions[TGUIAction.ACT_MODEL_CHECKING].setEnabled(b);
 		mgui.actions[TGUIAction.ACT_ONECLICK_LOTOS_RG].setEnabled(b);
diff --git a/src/main/java/ui/atd/ATDAttackConnector.java b/src/main/java/ui/atd/ATDAttackConnector.java
index 1fc5ac368b..9c86f7a166 100644
--- a/src/main/java/ui/atd/ATDAttackConnector.java
+++ b/src/main/java/ui/atd/ATDAttackConnector.java
@@ -55,19 +55,20 @@ import java.util.Vector;
    * @version 1.0 09/12/2009
    * @author Ludovic APVRILLE
  */
-public class ATDAttackConnector extends TGConnectorWithCommentConnectionPoints implements ScalableTGComponent {
+public class ATDAttackConnector extends TGConnectorWithCommentConnectionPoints /* Issue #31 implements ScalableTGComponent*/ {
     //protected int arrowLength = 10;
     //protected int widthValue, heightValue, maxWidthValue, h;
     protected int c = 5; //square length
-    protected double oldScaleFactor;
+    //protected double oldScaleFactor;
     protected int fontSize = 12;
 
     public ATDAttackConnector(int _x, int _y, int _minX, int _minY, int _maxX, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp, TGConnectingPoint _p1, TGConnectingPoint _p2, Vector<Point> _listPoint) {
         super(_x, _y,  _minX, _minY, _maxX, _maxY, _pos, _father, _tdp, _p1, _p2, _listPoint);
+        
         myImageIcon = IconManager.imgic202;
         value = "";
         editable = true;
-        oldScaleFactor = tdp.getZoom();
+        //oldScaleFactor = tdp.getZoom();
     }
 
     @Override
@@ -184,27 +185,27 @@ public class ATDAttackConnector extends TGConnectorWithCommentConnectionPoints i
         return TGComponentManager.ATD_ATTACK_CONNECTOR;
     }
 
-    @Override
-    public void rescale(double scaleFactor){
-        //
-        int xx, yy;
-
-        for(int i=0; i<nbInternalTGComponent; i++) {
-            xx = tgcomponent[i].getX();
-            yy = tgcomponent[i].getY();
-            //
-            tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
-            tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
-            xx = (int)(tgcomponent[i].dx);
-            tgcomponent[i].dx = tgcomponent[i].dx - xx;
-            yy = (int)(tgcomponent[i].dy);
-            tgcomponent[i].dy = tgcomponent[i].dy - yy;
-
-            tgcomponent[i].setCd(xx, yy);
-
-            //
-        }
-
-        oldScaleFactor = scaleFactor;
-    }
+//    @Override Issue #31 Now managed in upper class
+//    public void rescale(double scaleFactor){
+//        //
+//        int xx, yy;
+//
+//        for(int i=0; i<nbInternalTGComponent; i++) {
+//            xx = tgcomponent[i].getX();
+//            yy = tgcomponent[i].getY();
+//            //
+//            tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
+//            tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
+//            xx = (int)(tgcomponent[i].dx);
+//            tgcomponent[i].dx = tgcomponent[i].dx - xx;
+//            yy = (int)(tgcomponent[i].dy);
+//            tgcomponent[i].dy = tgcomponent[i].dy - yy;
+//
+//            tgcomponent[i].setCd(xx, yy);
+//
+//            //
+//        }
+//
+//        oldScaleFactor = scaleFactor;
+//    }
 }
diff --git a/src/main/java/ui/atd/ATDCompositionConnector.java b/src/main/java/ui/atd/ATDCompositionConnector.java
index 52ee0ddb63..5ab0eb4aef 100644
--- a/src/main/java/ui/atd/ATDCompositionConnector.java
+++ b/src/main/java/ui/atd/ATDCompositionConnector.java
@@ -51,22 +51,22 @@ import java.util.Vector;
 * @version 1.0 09/12/2009
 * @author Ludovic APVRILLE
  */
-public  class ATDCompositionConnector extends TGConnectorWithCommentConnectionPoints implements ScalableTGComponent{
+public  class ATDCompositionConnector extends TGConnectorWithCommentConnectionPoints /* Issue #31 implements ScalableTGComponent*/ {
     protected int d = 20;
 	protected int D = 26;
     //protected int widthValue, heightValue, maxWidthValue, h;
 	protected Polygon p;
 	protected int xp1, xp2, yp1, yp2;
-	protected double oldScaleFactor;
-	protected boolean rescaled;
+//	protected double oldScaleFactor;
+//	protected boolean rescaled;
 	    
     public ATDCompositionConnector(int _x, int _y, int _minX, int _minY, int _maxX, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp, TGConnectingPoint _p1, TGConnectingPoint _p2, Vector<Point> _listPoint) {
         super(_x, _y,  _minX, _minY, _maxX, _maxY, _pos, _father, _tdp, _p1, _p2, _listPoint);
         myImageIcon = IconManager.imgic202;
         value = "{info}";
         editable = true;
-		oldScaleFactor = tdp.getZoom();
-		rescaled = true;
+//		oldScaleFactor = tdp.getZoom();
+//		rescaled = true;
     }
     
     @Override
@@ -176,30 +176,30 @@ public  class ATDCompositionConnector extends TGConnectorWithCommentConnectionPo
         return null;
     }
 	
-    @Override
-	public void rescale(double scaleFactor){
-		//
-		int xx, yy;
-		
-		for(int i=0; i<nbInternalTGComponent; i++) {
-			xx = tgcomponent[i].getX();
-			yy = tgcomponent[i].getY();
-			//
-			tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
-			tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
-			xx = (int)(tgcomponent[i].dx);
-			tgcomponent[i].dx = tgcomponent[i].dx - xx;
-			yy = (int)(tgcomponent[i].dy);
-			tgcomponent[i].dy = tgcomponent[i].dy - yy;
-			
-			tgcomponent[i].setCd(xx, yy);
-			
-			//
-        }
-		
-		oldScaleFactor = scaleFactor;
-		rescaled = true;
-	}
+//    @Override Issue #31 Now managed in upper class
+//	public void rescale(double scaleFactor){
+//		//
+//		int xx, yy;
+//		
+//		for(int i=0; i<nbInternalTGComponent; i++) {
+//			xx = tgcomponent[i].getX();
+//			yy = tgcomponent[i].getY();
+//			//
+//			tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
+//			tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
+//			xx = (int)(tgcomponent[i].dx);
+//			tgcomponent[i].dx = tgcomponent[i].dx - xx;
+//			yy = (int)(tgcomponent[i].dy);
+//			tgcomponent[i].dy = tgcomponent[i].dy - yy;
+//			
+//			tgcomponent[i].setCd(xx, yy);
+//			
+//			//
+//        }
+//		
+//		oldScaleFactor = scaleFactor;
+//		rescaled = true;
+//	}
     
     @Override
     public int getType() {
diff --git a/src/main/java/ui/atd/ATDCountermeasureConnector.java b/src/main/java/ui/atd/ATDCountermeasureConnector.java
index 12ae85f633..2e92e24118 100644
--- a/src/main/java/ui/atd/ATDCountermeasureConnector.java
+++ b/src/main/java/ui/atd/ATDCountermeasureConnector.java
@@ -43,7 +43,6 @@ import java.awt.Point;
 import java.util.Vector;
 
 import myutil.GraphicLib;
-import ui.ScalableTGComponent;
 import ui.TDiagramPanel;
 import ui.TGComponent;
 import ui.TGComponentManager;
@@ -58,19 +57,19 @@ import ui.util.IconManager;
    * @version 1.0 06/06/2017
    * @author Ludovic APVRILLE
  */
-public  class ATDCountermeasureConnector extends TGConnectorWithCommentConnectionPoints implements ScalableTGComponent {
+public  class ATDCountermeasureConnector extends TGConnectorWithCommentConnectionPoints /* Issue #31 implements ScalableTGComponent*/ {
     //protected int arrowLength = 10;
     //protected int widthValue, heightValue, maxWidthValue, h;
     protected int c = 5; //square length
-    protected double oldScaleFactor;
+//    protected double oldScaleFactor;
     protected int fontSize = 12;
 
     public ATDCountermeasureConnector(int _x, int _y, int _minX, int _minY, int _maxX, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp, TGConnectingPoint _p1, TGConnectingPoint _p2, Vector<Point> _listPoint) {
         super(_x, _y,  _minX, _minY, _maxX, _maxY, _pos, _father, _tdp, _p1, _p2, _listPoint);
         myImageIcon = IconManager.imgic202;
         value = "";
-        editable = true;
-        oldScaleFactor = tdp.getZoom();
+//        editable = true;
+//        oldScaleFactor = tdp.getZoom();
     }
 
     @Override
@@ -89,27 +88,27 @@ public  class ATDCountermeasureConnector extends TGConnectorWithCommentConnectio
         return TGComponentManager.ATD_COUNTERMEASURE_CONNECTOR;
     }
 
-    @Override
-    public void rescale(double scaleFactor){
-        //
-        int xx, yy;
-
-        for(int i=0; i<nbInternalTGComponent; i++) {
-            xx = tgcomponent[i].getX();
-            yy = tgcomponent[i].getY();
-            //
-            tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
-            tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
-            xx = (int)(tgcomponent[i].dx);
-            tgcomponent[i].dx = tgcomponent[i].dx - xx;
-            yy = (int)(tgcomponent[i].dy);
-            tgcomponent[i].dy = tgcomponent[i].dy - yy;
-
-            tgcomponent[i].setCd(xx, yy);
-
-            //
-        }
-
-        oldScaleFactor = scaleFactor;
-    }
+//    @Override Issue #31 Managed in upper class
+//    public void rescale(double scaleFactor){
+//        //
+//        int xx, yy;
+//
+//        for(int i=0; i<nbInternalTGComponent; i++) {
+//            xx = tgcomponent[i].getX();
+//            yy = tgcomponent[i].getY();
+//            //
+//            tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
+//            tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
+//            xx = (int)(tgcomponent[i].dx);
+//            tgcomponent[i].dx = tgcomponent[i].dx - xx;
+//            yy = (int)(tgcomponent[i].dy);
+//            tgcomponent[i].dy = tgcomponent[i].dy - yy;
+//
+//            tgcomponent[i].setCd(xx, yy);
+//
+//            //
+//        }
+//
+//        oldScaleFactor = scaleFactor;
+//    }
 }
diff --git a/src/main/java/ui/avatarbd/AvatarBDCompositionConnector.java b/src/main/java/ui/avatarbd/AvatarBDCompositionConnector.java
index ffbd472125..ce55c43e4a 100644
--- a/src/main/java/ui/avatarbd/AvatarBDCompositionConnector.java
+++ b/src/main/java/ui/avatarbd/AvatarBDCompositionConnector.java
@@ -51,14 +51,14 @@ import java.util.Vector;
 * @version 1.0 06/04/2010
 * @author Ludovic APVRILLE
  */
-public  class AvatarBDCompositionConnector extends TGConnectorWithCommentConnectionPoints implements ScalableTGComponent{
+public  class AvatarBDCompositionConnector extends TGConnectorWithCommentConnectionPoints /* Issue #31 implements ScalableTGComponent*/ {
     protected int d = 20;
 	protected int D = 26;
     //protected int widthValue, heightValue, maxWidthValue, h;
 	protected Polygon p;
 	protected int xp1, xp2, yp1, yp2;
-	protected double oldScaleFactor;
-	protected boolean rescaled;
+//	protected double oldScaleFactor;
+//	protected boolean rescaled;
 	
     
     public AvatarBDCompositionConnector(int _x, int _y, int _minX, int _minY, int _maxX, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp, TGConnectingPoint _p1, TGConnectingPoint _p2, Vector<Point> _listPoint) {
@@ -68,8 +68,8 @@ public  class AvatarBDCompositionConnector extends TGConnectorWithCommentConnect
 
         value = "{info}";
         editable = true;
-		oldScaleFactor = tdp.getZoom();
-		rescaled = true;
+//		oldScaleFactor = tdp.getZoom();
+//		rescaled = true;
     }
     
     @Override
@@ -174,30 +174,30 @@ public  class AvatarBDCompositionConnector extends TGConnectorWithCommentConnect
         return null;
     }
 	
-    @Override
-	public void rescale(double scaleFactor){
-		//
-		int xx, yy;
-		
-		for(int i=0; i<nbInternalTGComponent; i++) {
-			xx = tgcomponent[i].getX();
-			yy = tgcomponent[i].getY();
-			//
-			tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
-			tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
-			xx = (int)(tgcomponent[i].dx);
-			tgcomponent[i].dx = tgcomponent[i].dx - xx;
-			yy = (int)(tgcomponent[i].dy);
-			tgcomponent[i].dy = tgcomponent[i].dy - yy;
-			
-			tgcomponent[i].setCd(xx, yy);
-			
-			//
-        }
-		
-		oldScaleFactor = scaleFactor;
-		rescaled = true;
-	}
+//    @Override Issue #31 Now managed in upper class
+//	public void rescale(double scaleFactor){
+//		//
+//		int xx, yy;
+//		
+//		for(int i=0; i<nbInternalTGComponent; i++) {
+//			xx = tgcomponent[i].getX();
+//			yy = tgcomponent[i].getY();
+//			//
+//			tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
+//			tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
+//			xx = (int)(tgcomponent[i].dx);
+//			tgcomponent[i].dx = tgcomponent[i].dx - xx;
+//			yy = (int)(tgcomponent[i].dy);
+//			tgcomponent[i].dy = tgcomponent[i].dy - yy;
+//			
+//			tgcomponent[i].setCd(xx, yy);
+//			
+//			//
+//        }
+//		
+//		oldScaleFactor = scaleFactor;
+//		rescaled = true;
+//	}
     
     @Override
     public int getType() {
diff --git a/src/main/java/ui/avatarbd/AvatarBDPortConnector.java b/src/main/java/ui/avatarbd/AvatarBDPortConnector.java
index 4865de9efc..99ba71bb2b 100644
--- a/src/main/java/ui/avatarbd/AvatarBDPortConnector.java
+++ b/src/main/java/ui/avatarbd/AvatarBDPortConnector.java
@@ -66,11 +66,11 @@ import java.util.Vector;
  * @author Ludovic APVRILLE
  * @version 1.0 06/04/2010
  */
-public class AvatarBDPortConnector extends TGConnectorWithCommentConnectionPoints implements ScalableTGComponent {
+public class AvatarBDPortConnector extends TGConnectorWithCommentConnectionPoints /* Issue #31 implements ScalableTGComponent*/ {
     //protected int arrowLength = 10;
     //protected int widthValue, heightValue, maxWidthValue, h;
     protected int c = 10; //square length
-    protected double oldScaleFactor;
+    //protected double oldScaleFactor;
     protected int fontSize = 10;
     protected int decY = 12;
     protected int decX = 6;
@@ -88,14 +88,14 @@ public class AvatarBDPortConnector extends TGConnectorWithCommentConnectionPoint
     protected boolean isBroadcast = false;
     protected boolean isLossy = false;
 
-
     public AvatarBDPortConnector(int _x, int _y, int _minX, int _minY, int _maxX, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp, TGConnectingPoint _p1, TGConnectingPoint _p2, Vector<Point> _listPoint) {
         super(_x, _y, _minX, _minY, _maxX, _maxY, _pos, _father, _tdp, _p1, _p2, _listPoint);
+        
         myImageIcon = IconManager.imgic202;
         value = "";
         editable = true;
 
-        oldScaleFactor = tdp.getZoom();
+       // oldScaleFactor = tdp.getZoom();
         inSignalsAtOrigin = new LinkedList<String>();
         inSignalsAtDestination = new LinkedList<String>();
         outSignalsAtOrigin = new LinkedList<String>();
@@ -522,30 +522,30 @@ public class AvatarBDPortConnector extends TGConnectorWithCommentConnectionPoint
     public int getType() {
         return TGComponentManager.AVATARBD_PORT_CONNECTOR;
     }
-
-    @Override
-    public void rescale(double scaleFactor) {
-        //
-        int xx, yy;
-
-        for (int i = 0; i < nbInternalTGComponent; i++) {
-            xx = tgcomponent[i].getX();
-            yy = tgcomponent[i].getY();
-            //
-            tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
-            tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
-            xx = (int) (tgcomponent[i].dx);
-            tgcomponent[i].dx = tgcomponent[i].dx - xx;
-            yy = (int) (tgcomponent[i].dy);
-            tgcomponent[i].dy = tgcomponent[i].dy - yy;
-
-            tgcomponent[i].setCd(xx, yy);
-
-            //
-        }
-
-        oldScaleFactor = scaleFactor;
-    }
+//
+//    @Override Issue #31 Now managed in upper class 
+//    public void rescale(double scaleFactor) {
+//        //
+//        int xx, yy;
+//
+//        for (int i = 0; i < nbInternalTGComponent; i++) {
+//            xx = tgcomponent[i].getX();
+//            yy = tgcomponent[i].getY();
+//            //
+//            tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
+//            tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
+//            xx = (int) (tgcomponent[i].dx);
+//            tgcomponent[i].dx = tgcomponent[i].dx - xx;
+//            yy = (int) (tgcomponent[i].dy);
+//            tgcomponent[i].dy = tgcomponent[i].dy - yy;
+//
+//            tgcomponent[i].setCd(xx, yy);
+//
+//            //
+//        }
+//
+//        oldScaleFactor = scaleFactor;
+//    }
 
     public List<String> getListOfSignalsOrigin() {
         List<String> list = new LinkedList<String>();
diff --git a/src/main/java/ui/avatarcd/AvatarCDCompositionConnector.java b/src/main/java/ui/avatarcd/AvatarCDCompositionConnector.java
index 6ec16910c4..27390ba3d0 100644
--- a/src/main/java/ui/avatarcd/AvatarCDCompositionConnector.java
+++ b/src/main/java/ui/avatarcd/AvatarCDCompositionConnector.java
@@ -36,12 +36,8 @@
  * knowledge of the CeCILL license and that you accept its terms.
  */
 
-
-
-
 package ui.avatarcd;
 
-
 import ui.*;
 import ui.util.IconManager;
 
@@ -55,27 +51,28 @@ import java.util.Vector;
 * @version 1.0 31/08/2011
 * @author Ludovic APVRILLE
  */
-public  class AvatarCDCompositionConnector extends TGConnectorWithCommentConnectionPoints implements ScalableTGComponent{
+public  class AvatarCDCompositionConnector extends TGConnectorWithCommentConnectionPoints /* Issue #31 implements ScalableTGComponent*/ {
     protected int d = 20;
 	protected int D = 26;
     //protected int widthValue, heightValue, maxWidthValue, h;
 	protected Polygon p;
 	protected int xp1, xp2, yp1, yp2;
-	protected double oldScaleFactor;
-	protected boolean rescaled;
+//	protected double oldScaleFactor;
+//	protected boolean rescaled;
 	
     
     public AvatarCDCompositionConnector(int _x, int _y, int _minX, int _minY, int _maxX, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp, TGConnectingPoint _p1, TGConnectingPoint _p2, Vector<Point> _listPoint) {
         super(_x, _y,  _minX, _minY, _maxX, _maxY, _pos, _father, _tdp, _p1, _p2, _listPoint);
+       
         myImageIcon = IconManager.imgic202;
-		
 
         value = "{info}";
         editable = true;
-		oldScaleFactor = tdp.getZoom();
-		rescaled = true;
+//		oldScaleFactor = tdp.getZoom();
+//		rescaled = true;
     }
     
+    @Override
     protected void drawLastSegment(Graphics g, int x1, int y1, int x2, int y2) {
 		if ((p == null) || (rescaled) || (xp1 != x1) || (xp2 != x2) || (yp1 != y1) || (yp2 != y2)){
 			p = new Polygon();
@@ -83,7 +80,7 @@ public  class AvatarCDCompositionConnector extends TGConnectorWithCommentConnect
 			xp2 = x2;
 			yp1 = y1;
 			yp2 = y2;
-			Double alpha;
+			//Double alpha;
 			
 			int dd = (int)(d*tdp.getZoom());
 			int DD = (int)(D*tdp.getZoom());
@@ -143,6 +140,7 @@ public  class AvatarCDCompositionConnector extends TGConnectorWithCommentConnect
 		rescaled = false;
     }
 	
+    @Override
 	public TGComponent extraIsOnOnlyMe(int x1, int y1) {
 		if (p != null) {
 			if (p.contains(x1, y1)) {
@@ -153,35 +151,33 @@ public  class AvatarCDCompositionConnector extends TGConnectorWithCommentConnect
         return null;
     }
 	
-	public void rescale(double scaleFactor){
-		//
-		int xx, yy;
-		
-		for(int i=0; i<nbInternalTGComponent; i++) {
-			xx = tgcomponent[i].getX();
-			yy = tgcomponent[i].getY();
-			//
-			tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
-			tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
-			xx = (int)(tgcomponent[i].dx);
-			tgcomponent[i].dx = tgcomponent[i].dx - xx;
-			yy = (int)(tgcomponent[i].dy);
-			tgcomponent[i].dy = tgcomponent[i].dy - yy;
-			
-			tgcomponent[i].setCd(xx, yy);
-			
-			//
-        }
-		
-		oldScaleFactor = scaleFactor;
-		rescaled = true;
-	}
-    
+//	Issue #31 Now managed in upper class 
+//    public void rescale(double scaleFactor){
+//		//
+//		int xx, yy;
+//		
+//		for(int i=0; i<nbInternalTGComponent; i++) {
+//			xx = tgcomponent[i].getX();
+//			yy = tgcomponent[i].getY();
+//			//
+//			tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
+//			tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
+//			xx = (int)(tgcomponent[i].dx);
+//			tgcomponent[i].dx = tgcomponent[i].dx - xx;
+//			yy = (int)(tgcomponent[i].dy);
+//			tgcomponent[i].dy = tgcomponent[i].dy - yy;
+//			
+//			tgcomponent[i].setCd(xx, yy);
+//			
+//			//
+//        }
+//		
+//		oldScaleFactor = scaleFactor;
+//		rescaled = true;
+//	}
     
+	@Override
     public int getType() {
         return TGComponentManager.ACD_COMPOSITION_CONNECTOR;
     }
-	
-	
-    
 }
diff --git a/src/main/java/ui/avatardd/ADDDiagramToolBar.java b/src/main/java/ui/avatardd/ADDDiagramToolBar.java
index 16d7c88018..5da7b72e0d 100755
--- a/src/main/java/ui/avatardd/ADDDiagramToolBar.java
+++ b/src/main/java/ui/avatardd/ADDDiagramToolBar.java
@@ -92,7 +92,11 @@ public class ADDDiagramToolBar extends TToolBar {
         mgui.actions[TGUIAction.ADD_CLUSTERNODE].setEnabled(b);
         mgui.actions[TGUIAction.ACT_TOGGLE_ATTR].setEnabled(b);
 
-        mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
+		// Issue #31
+		mgui.actions[ TGUIAction.ACT_ZOOM_MORE ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_ZOOM_LESS ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_SHOW_ZOOM ].setEnabled( b );
+//        mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
 
         // julien -------------------------------------------------
 
diff --git a/src/main/java/ui/avatarmad/AvatarMADBelongsToCompositionConnector.java b/src/main/java/ui/avatarmad/AvatarMADBelongsToCompositionConnector.java
index 707ca3b2f1..f6265b4493 100644
--- a/src/main/java/ui/avatarmad/AvatarMADBelongsToCompositionConnector.java
+++ b/src/main/java/ui/avatarmad/AvatarMADBelongsToCompositionConnector.java
@@ -36,12 +36,8 @@
  * knowledge of the CeCILL license and that you accept its terms.
  */
 
-
-
-
 package ui.avatarmad;
 
-
 import ui.*;
 import ui.util.IconManager;
 
@@ -55,14 +51,14 @@ import java.util.Vector;
    * @version 1.0 16/10/2015
    * @author Ludovic APVRILLE
  */
-public  class AvatarMADBelongsToCompositionConnector extends TGConnectorWithCommentConnectionPoints implements ScalableTGComponent{
+public  class AvatarMADBelongsToCompositionConnector extends TGConnectorWithCommentConnectionPoints /* Issue #31 implements ScalableTGComponent*/ {
     protected int d = 12;
     protected int D = 18;
     //protected int widthValue, heightValue, maxWidthValue, h;
     protected Polygon p;
     protected int xp1, xp2, yp1, yp2;
-    protected double oldScaleFactor;
-    protected boolean rescaled;
+//    protected double oldScaleFactor;
+//    protected boolean rescaled;
 
 
     public AvatarMADBelongsToCompositionConnector(int _x, int _y, int _minX, int _minY, int _maxX, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp, TGConnectingPoint _p1, TGConnectingPoint _p2, Vector<Point> _listPoint) {
@@ -72,8 +68,8 @@ public  class AvatarMADBelongsToCompositionConnector extends TGConnectorWithComm
 
         value = "{info}";
         editable = true;
-        oldScaleFactor = tdp.getZoom();
-        rescaled = true;
+//        oldScaleFactor = tdp.getZoom();
+//        rescaled = true;
     }
 
     protected void drawLastSegment(Graphics g, int x1, int y1, int x2, int y2) {
@@ -83,7 +79,7 @@ public  class AvatarMADBelongsToCompositionConnector extends TGConnectorWithComm
             xp2 = x2;
             yp1 = y1;
             yp2 = y2;
-            Double alpha;
+           // Double alpha;
 
             int dd = (int)(d*tdp.getZoom());
             int DD = (int)(D*tdp.getZoom());
@@ -166,6 +162,7 @@ public  class AvatarMADBelongsToCompositionConnector extends TGConnectorWithComm
         rescaled = false;
     }
 
+    @Override
     public TGComponent extraIsOnOnlyMe(int x1, int y1) {
         if (p != null) {
             if (p.contains(x1, y1)) {
@@ -176,35 +173,33 @@ public  class AvatarMADBelongsToCompositionConnector extends TGConnectorWithComm
         return null;
     }
 
-    public void rescale(double scaleFactor){
-        //
-        int xx, yy;
-
-        for(int i=0; i<nbInternalTGComponent; i++) {
-            xx = tgcomponent[i].getX();
-            yy = tgcomponent[i].getY();
-            //
-            tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
-            tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
-            xx = (int)(tgcomponent[i].dx);
-            tgcomponent[i].dx = tgcomponent[i].dx - xx;
-            yy = (int)(tgcomponent[i].dy);
-            tgcomponent[i].dy = tgcomponent[i].dy - yy;
-
-            tgcomponent[i].setCd(xx, yy);
-
-            //
-        }
-
-        oldScaleFactor = scaleFactor;
-        rescaled = true;
-    }
-
-
+    //Issue #31 Now managed in upper class
+//    public void rescale(double scaleFactor){
+//        //
+//        int xx, yy;
+//
+//        for(int i=0; i<nbInternalTGComponent; i++) {
+//            xx = tgcomponent[i].getX();
+//            yy = tgcomponent[i].getY();
+//            //
+//            tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
+//            tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
+//            xx = (int)(tgcomponent[i].dx);
+//            tgcomponent[i].dx = tgcomponent[i].dx - xx;
+//            yy = (int)(tgcomponent[i].dy);
+//            tgcomponent[i].dy = tgcomponent[i].dy - yy;
+//
+//            tgcomponent[i].setCd(xx, yy);
+//
+//            //
+//        }
+//
+//        oldScaleFactor = scaleFactor;
+//        rescaled = true;
+//    }
+
+    @Override
     public int getType() {
         return TGComponentManager.AVATARMAD_BELONGSTOCOMPOSITION_CONNECTOR;
     }
-
-
-
 }
diff --git a/src/main/java/ui/avatarpd/AvatarPDAttributeConnector.java b/src/main/java/ui/avatarpd/AvatarPDAttributeConnector.java
index 7b7fc8efae..29e0b10570 100644
--- a/src/main/java/ui/avatarpd/AvatarPDAttributeConnector.java
+++ b/src/main/java/ui/avatarpd/AvatarPDAttributeConnector.java
@@ -36,12 +36,8 @@
  * knowledge of the CeCILL license and that you accept its terms.
  */
 
-
-
-
 package ui.avatarpd;
 
-
 import myutil.GraphicLib;
 import ui.*;
 import ui.util.IconManager;
@@ -58,22 +54,22 @@ import java.util.Vector;
  * @version 1.0 22/04/2010
  * @author Ludovic APVRILLE
  */
-public  class AvatarPDAttributeConnector extends TGConnectorWithCommentConnectionPoints implements ScalableTGComponent {
+public  class AvatarPDAttributeConnector extends TGConnectorWithCommentConnectionPoints /* Issue #31 implements ScalableTGComponent*/ {
     //protected int arrowLength = 10;
     //protected int widthValue, heightValue, maxWidthValue, h;
 	protected int c = 6; //square length 
-	protected double oldScaleFactor;
+	//protected double oldScaleFactor;
 	protected int fontSize = 12;
-	
     
     public AvatarPDAttributeConnector(int _x, int _y, int _minX, int _minY, int _maxX, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp, TGConnectingPoint _p1, TGConnectingPoint _p2, Vector<Point> _listPoint) {
         super(_x, _y,  _minX, _minY, _maxX, _maxY, _pos, _father, _tdp, _p1, _p2, _listPoint);
         myImageIcon = IconManager.imgic202;
         value = "";
         editable = true;
-		oldScaleFactor = tdp.getZoom();
+		//oldScaleFactor = tdp.getZoom();
     }
     
+    @Override
     protected void drawLastSegment(Graphics g, int x1, int y1, int x2, int y2){
         /*if (Point2D.distance(x1, y1, x2, y2) < GraphicLib.longueur * 1.5) {
             g.drawLine(x1, y1, x2, y2);
@@ -90,15 +86,15 @@ public  class AvatarPDAttributeConnector extends TGConnectorWithCommentConnectio
 		if (p == null) {
 			//
 		} else {
-		if (Point2D.distance(x1, y1, p.x, p.y) < GraphicLib.longueur * 1.5) {
+			if (Point2D.distance(x1, y1, p.x, p.y) < GraphicLib.longueur * 1.5) {
 			//
-			if ((p.x != x1) || (p.y != y1)) {
-				g.drawLine(x1, y1, p.x, p.y);
+				if ((p.x != x1) || (p.y != y1)) {
+					g.drawLine(x1, y1, p.x, p.y);
 				//
+				}
+			} else {
+				GraphicLib.arrowWithLine(g, 1, 0, 10, x1, y1, p.x, p.y, true);
 			}
-        } else {
-            GraphicLib.arrowWithLine(g, 1, 0, 10, x1, y1, p.x, p.y, true);
-        }
 		}
 		
 		/*if (value.length() > 0) {
@@ -110,7 +106,6 @@ public  class AvatarPDAttributeConnector extends TGConnectorWithCommentConnectio
 			g.drawString(value, x2-(cz/2), y2-(cz/2)-1);
 			g.setFont(f);
 		}*/
-	
     }
 	
 	/*public boolean editOndoubleClick(JFrame frame) {
@@ -135,34 +130,32 @@ public  class AvatarPDAttributeConnector extends TGConnectorWithCommentConnectio
         return false;
     }*/
     
-    
+    @Override
     public int getType() {
         return TGComponentManager.APD_ATTRIBUTE_CONNECTOR;
     }
-	
-	public void rescale(double scaleFactor){
-		//
-		int xx, yy;
-		
-		for(int i=0; i<nbInternalTGComponent; i++) {
-			xx = tgcomponent[i].getX();
-			yy = tgcomponent[i].getY();
-			//
-			tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
-			tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
-			xx = (int)(tgcomponent[i].dx);
-			tgcomponent[i].dx = tgcomponent[i].dx - xx;
-			yy = (int)(tgcomponent[i].dy);
-			tgcomponent[i].dy = tgcomponent[i].dy - yy;
-			
-			tgcomponent[i].setCd(xx, yy);
-			
-			//
-        }
-		
-		oldScaleFactor = scaleFactor;
-	}
-	
 
-    
+    //	Issue #31 Now managed in upper class 
+//	public void rescale(double scaleFactor){
+//		//
+//		int xx, yy;
+//		
+//		for(int i=0; i<nbInternalTGComponent; i++) {
+//			xx = tgcomponent[i].getX();
+//			yy = tgcomponent[i].getY();
+//			//
+//			tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
+//			tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
+//			xx = (int)(tgcomponent[i].dx);
+//			tgcomponent[i].dx = tgcomponent[i].dx - xx;
+//			yy = (int)(tgcomponent[i].dy);
+//			tgcomponent[i].dy = tgcomponent[i].dy - yy;
+//			
+//			tgcomponent[i].setCd(xx, yy);
+//			
+//			//
+//        }
+//		
+//		oldScaleFactor = scaleFactor;
+//	}
 }
diff --git a/src/main/java/ui/avatarpd/AvatarPDCompositionConnector.java b/src/main/java/ui/avatarpd/AvatarPDCompositionConnector.java
index 8641f3511d..86e1fc9c09 100644
--- a/src/main/java/ui/avatarpd/AvatarPDCompositionConnector.java
+++ b/src/main/java/ui/avatarpd/AvatarPDCompositionConnector.java
@@ -36,12 +36,8 @@
  * knowledge of the CeCILL license and that you accept its terms.
  */
 
-
-
-
 package ui.avatarpd;
 
-
 import ui.*;
 import ui.util.IconManager;
 
@@ -55,14 +51,14 @@ import java.util.Vector;
 * @version 1.0 23/04/2010
 * @author Ludovic APVRILLE
  */
-public  class AvatarPDCompositionConnector extends TGConnectorWithCommentConnectionPoints implements ScalableTGComponent{
+public  class AvatarPDCompositionConnector extends TGConnectorWithCommentConnectionPoints /* Issue #31 implements ScalableTGComponent*/{
     protected int d = 20;
 	protected int D = 26;
     //protected int widthValue, heightValue, maxWidthValue, h;
 	protected Polygon p;
 	protected int xp1, xp2, yp1, yp2;
-	protected double oldScaleFactor;
-	protected boolean rescaled;
+//	protected double oldScaleFactor;
+//	protected boolean rescaled;
 	
     
     public AvatarPDCompositionConnector(int _x, int _y, int _minX, int _minY, int _maxX, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp, TGConnectingPoint _p1, TGConnectingPoint _p2, Vector<Point> _listPoint) {
@@ -72,10 +68,11 @@ public  class AvatarPDCompositionConnector extends TGConnectorWithCommentConnect
 
         value = "{info}";
         editable = true;
-		oldScaleFactor = tdp.getZoom();
-		rescaled = true;
+//		oldScaleFactor = tdp.getZoom();
+//		rescaled = true;
     }
     
+    @Override
     protected void drawLastSegment(Graphics g, int x1, int y1, int x2, int y2) {
 		if ((p == null) || (rescaled) || (xp1 != x1) || (xp2 != x2) || (yp1 != y1) || (yp2 != y2)){
 			p = new Polygon();
@@ -83,7 +80,7 @@ public  class AvatarPDCompositionConnector extends TGConnectorWithCommentConnect
 			xp2 = x2;
 			yp1 = y1;
 			yp2 = y2;
-			Double alpha;
+			//Double alpha;
 			
 			int dd = (int)(d*tdp.getZoom());
 			int DD = (int)(D*tdp.getZoom());
@@ -166,6 +163,7 @@ public  class AvatarPDCompositionConnector extends TGConnectorWithCommentConnect
 		rescaled = false;
     }
 	
+    @Override
 	public TGComponent extraIsOnOnlyMe(int x1, int y1) {
 		if (p != null) {
 			if (p.contains(x1, y1)) {
@@ -175,36 +173,34 @@ public  class AvatarPDCompositionConnector extends TGConnectorWithCommentConnect
 		
         return null;
     }
-	
-	public void rescale(double scaleFactor){
-		//
-		int xx, yy;
-		
-		for(int i=0; i<nbInternalTGComponent; i++) {
-			xx = tgcomponent[i].getX();
-			yy = tgcomponent[i].getY();
-			//
-			tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
-			tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
-			xx = (int)(tgcomponent[i].dx);
-			tgcomponent[i].dx = tgcomponent[i].dx - xx;
-			yy = (int)(tgcomponent[i].dy);
-			tgcomponent[i].dy = tgcomponent[i].dy - yy;
-			
-			tgcomponent[i].setCd(xx, yy);
-			
-			//
-        }
-		
-		oldScaleFactor = scaleFactor;
-		rescaled = true;
-	}
     
+//	Issue #31: Now managed in upper class 
+//	public void rescale(double scaleFactor){
+//		//
+//		int xx, yy;
+//		
+//		for(int i=0; i<nbInternalTGComponent; i++) {
+//			xx = tgcomponent[i].getX();
+//			yy = tgcomponent[i].getY();
+//			//
+//			tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
+//			tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
+//			xx = (int)(tgcomponent[i].dx);
+//			tgcomponent[i].dx = tgcomponent[i].dx - xx;
+//			yy = (int)(tgcomponent[i].dy);
+//			tgcomponent[i].dy = tgcomponent[i].dy - yy;
+//			
+//			tgcomponent[i].setCd(xx, yy);
+//			
+//			//
+//        }
+//		
+//		oldScaleFactor = scaleFactor;
+//		rescaled = true;
+//	}
     
+    @Override
     public int getType() {
         return TGComponentManager.APD_COMPOSITION_CONNECTOR;
     }
-	
-	
-    
 }
diff --git a/src/main/java/ui/avatarpd/AvatarPDPropertyConnector.java b/src/main/java/ui/avatarpd/AvatarPDPropertyConnector.java
index 8cf64a9c75..13e0ca3fb1 100644
--- a/src/main/java/ui/avatarpd/AvatarPDPropertyConnector.java
+++ b/src/main/java/ui/avatarpd/AvatarPDPropertyConnector.java
@@ -36,12 +36,8 @@
  * knowledge of the CeCILL license and that you accept its terms.
  */
 
-
-
-
 package ui.avatarpd;
 
-
 import myutil.GraphicLib;
 import ui.*;
 import ui.util.IconManager;
@@ -59,11 +55,11 @@ import java.util.Vector;
 * @version 1.0 22/04/2010
 * @author Ludovic APVRILLE
  */
-public  class AvatarPDPropertyConnector extends TGConnectorWithCommentConnectionPoints implements ScalableTGComponent {
+public  class AvatarPDPropertyConnector extends TGConnectorWithCommentConnectionPoints /* Issue #31 implements ScalableTGComponent*/ {
     //protected int arrowLength = 10;
     //protected int widthValue, heightValue, maxWidthValue, h;
 	protected int c = 10; //square length 
-	protected double oldScaleFactor;
+	//protected double oldScaleFactor;
 	protected int fontSize = 12;
 	protected int l = 4; // cross length;
 	
@@ -72,12 +68,14 @@ public  class AvatarPDPropertyConnector extends TGConnectorWithCommentConnection
     
     public AvatarPDPropertyConnector(int _x, int _y, int _minX, int _minY, int _maxX, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp, TGConnectingPoint _p1, TGConnectingPoint _p2, Vector<Point> _listPoint) {
         super(_x, _y,  _minX, _minY, _maxX, _maxY, _pos, _father, _tdp, _p1, _p2, _listPoint);
+        
         myImageIcon = IconManager.imgic202;
         value = "reg";
         editable = true;
-		oldScaleFactor = tdp.getZoom();
+		//oldScaleFactor = tdp.getZoom();
     }
     
+    @Override
     protected void drawLastSegment(Graphics g, int x1, int y1, int x2, int y2){
         /*if (Point2D.distance(x1, y1, x2, y2) < GraphicLib.longueur * 1.5) {
 		g.drawLine(x1, y1, x2, y2);
@@ -147,9 +145,9 @@ public  class AvatarPDPropertyConnector extends TGConnectorWithCommentConnection
 		g.drawString(value, x2-(cz/2), y2-(cz/2)-1);
 		g.setFont(f);
 		}*/
-		
     }
 	
+    @Override
 	public boolean editOndoubleClick(JFrame frame) {
       //  String oldValue = value;
 		JDialogAvatarPropertyConnector jdapc = new JDialogAvatarPropertyConnector(frame, getValue().compareTo("not") == 0);
@@ -170,38 +168,36 @@ public  class AvatarPDPropertyConnector extends TGConnectorWithCommentConnection
 		return true;
     }
     
-    
+    @Override
     public int getType() {
         return TGComponentManager.APD_PROPERTY_CONNECTOR;
     }
 	
-	public void rescale(double scaleFactor){
-		//
-		int xx, yy;
-		
-		for(int i=0; i<nbInternalTGComponent; i++) {
-			xx = tgcomponent[i].getX();
-			yy = tgcomponent[i].getY();
-			//
-			tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
-			tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
-			xx = (int)(tgcomponent[i].dx);
-			tgcomponent[i].dx = tgcomponent[i].dx - xx;
-			yy = (int)(tgcomponent[i].dy);
-			tgcomponent[i].dy = tgcomponent[i].dy - yy;
-			
-			tgcomponent[i].setCd(xx, yy);
-			
-			//
-        }
-		
-		oldScaleFactor = scaleFactor;
-	}
+    // Issue #31: Now managed in upper class
+//	public void rescale(double scaleFactor){
+//		//
+//		int xx, yy;
+//		
+//		for(int i=0; i<nbInternalTGComponent; i++) {
+//			xx = tgcomponent[i].getX();
+//			yy = tgcomponent[i].getY();
+//			//
+//			tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
+//			tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
+//			xx = (int)(tgcomponent[i].dx);
+//			tgcomponent[i].dx = tgcomponent[i].dx - xx;
+//			yy = (int)(tgcomponent[i].dy);
+//			tgcomponent[i].dy = tgcomponent[i].dy - yy;
+//			
+//			tgcomponent[i].setCd(xx, yy);
+//			
+//			//
+//        }
+//		
+//		oldScaleFactor = scaleFactor;
+//	}
 	
 	public boolean isNegated() {
         return value.compareTo("not") == 0;
     }
-	
-	
-    
 }
diff --git a/src/main/java/ui/avatarpd/AvatarPDSignalConnector.java b/src/main/java/ui/avatarpd/AvatarPDSignalConnector.java
index 45af912901..963af295b5 100644
--- a/src/main/java/ui/avatarpd/AvatarPDSignalConnector.java
+++ b/src/main/java/ui/avatarpd/AvatarPDSignalConnector.java
@@ -57,12 +57,12 @@ import java.util.Vector;
  * @version 1.0 22/04/2010
  * @author Ludovic APVRILLE
  */
-public  class AvatarPDSignalConnector extends TGConnectorWithCommentConnectionPoints implements ScalableTGComponent {
+public  class AvatarPDSignalConnector extends TGConnectorWithCommentConnectionPoints /* Issue #31 implements ScalableTGComponent*/ {
     //protected int arrowLength = 10;
     //protected int widthValue, heightValue, maxWidthValue, h;
 	protected int c = 6; //square length
 	protected int l = 3; // cross length;
-	protected double oldScaleFactor;
+	//protected double oldScaleFactor;
 	protected int fontSize = 12;
 	
     
@@ -71,9 +71,10 @@ public  class AvatarPDSignalConnector extends TGConnectorWithCommentConnectionPo
         myImageIcon = IconManager.imgic202;
         value = "";
         editable = true;
-		oldScaleFactor = tdp.getZoom();
+		//oldScaleFactor = tdp.getZoom();
     }
     
+    @Override
     protected void drawLastSegment(Graphics g, int x1, int y1, int x2, int y2){
         /*if (Point2D.distance(x1, y1, x2, y2) < GraphicLib.longueur * 1.5) {
             g.drawLine(x1, y1, x2, y2);
@@ -163,34 +164,31 @@ public  class AvatarPDSignalConnector extends TGConnectorWithCommentConnectionPo
         return false;
     }*/
     
-    
+    @Override
     public int getType() {
         return TGComponentManager.APD_SIGNAL_CONNECTOR;
     }
-	
-	public void rescale(double scaleFactor){
-		//
-		int xx, yy;
-		
-		for(int i=0; i<nbInternalTGComponent; i++) {
-			xx = tgcomponent[i].getX();
-			yy = tgcomponent[i].getY();
-			//
-			tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
-			tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
-			xx = (int)(tgcomponent[i].dx);
-			tgcomponent[i].dx = tgcomponent[i].dx - xx;
-			yy = (int)(tgcomponent[i].dy);
-			tgcomponent[i].dy = tgcomponent[i].dy - yy;
-			
-			tgcomponent[i].setCd(xx, yy);
-			
-			//
-        }
-		
-		oldScaleFactor = scaleFactor;
-	}
-	
-
-    
+//	Issue #31: Now in upper class
+//	public void rescale(double scaleFactor){
+//		//
+//		int xx, yy;
+//		
+//		for(int i=0; i<nbInternalTGComponent; i++) {
+//			xx = tgcomponent[i].getX();
+//			yy = tgcomponent[i].getY();
+//			//
+//			tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
+//			tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
+//			xx = (int)(tgcomponent[i].dx);
+//			tgcomponent[i].dx = tgcomponent[i].dx - xx;
+//			yy = (int)(tgcomponent[i].dy);
+//			tgcomponent[i].dy = tgcomponent[i].dy - yy;
+//			
+//			tgcomponent[i].setCd(xx, yy);
+//			
+//			//
+//        }
+//		
+//		oldScaleFactor = scaleFactor;
+//	}
 }
diff --git a/src/main/java/ui/avatarsmd/AvatarSMDToolBar.java b/src/main/java/ui/avatarsmd/AvatarSMDToolBar.java
index e774c907fe..352b6877d3 100755
--- a/src/main/java/ui/avatarsmd/AvatarSMDToolBar.java
+++ b/src/main/java/ui/avatarsmd/AvatarSMDToolBar.java
@@ -80,9 +80,13 @@ public class AvatarSMDToolBar extends TToolBar {
 		
 		mgui.actions[TGUIAction.ACT_ENHANCE].setEnabled(b);
 		
-		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
+		// Issue #31
+		mgui.actions[ TGUIAction.ACT_ZOOM_MORE ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_ZOOM_LESS ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_SHOW_ZOOM ].setEnabled( b );
+//		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
 		
 		mgui.actions[TGUIAction.ACT_TOGGLE_AVATAR_ID].setEnabled(b);
 		
diff --git a/src/main/java/ui/cd/TClassDiagramToolBar.java b/src/main/java/ui/cd/TClassDiagramToolBar.java
index 655b003820..9076fcc859 100755
--- a/src/main/java/ui/cd/TClassDiagramToolBar.java
+++ b/src/main/java/ui/cd/TClassDiagramToolBar.java
@@ -85,9 +85,13 @@ public class TClassDiagramToolBar extends TToolBar {
 		mgui.actions[TGUIAction.ACT_ONECLICK_LOTOS_RG].setEnabled(b);
 		mgui.actions[TGUIAction.ACT_ONECLICK_RTLOTOS_RG].setEnabled(b);
 		
-		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
+		// Issue #31
+		mgui.actions[ TGUIAction.ACT_ZOOM_MORE ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_ZOOM_LESS ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_SHOW_ZOOM ].setEnabled( b );
+//		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
 		mgui.updateZoomInfo();
     }
     
diff --git a/src/main/java/ui/dd/TDeploymentDiagramToolBar.java b/src/main/java/ui/dd/TDeploymentDiagramToolBar.java
index 5b2379b81c..ec1aa888fa 100755
--- a/src/main/java/ui/dd/TDeploymentDiagramToolBar.java
+++ b/src/main/java/ui/dd/TDeploymentDiagramToolBar.java
@@ -73,9 +73,13 @@ public class TDeploymentDiagramToolBar extends TToolBar {
         mgui.actions[TGUIAction.TDD_NODE].setEnabled(b);
         mgui.actions[TGUIAction.TDD_ARTIFACT].setEnabled(b);
 		
-		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
+		// Issue #31
+		mgui.actions[ TGUIAction.ACT_ZOOM_MORE ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_ZOOM_LESS ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_SHOW_ZOOM ].setEnabled( b );
+//		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
 		mgui.updateZoomInfo();
     }
     
diff --git a/src/main/java/ui/ebrdd/EBRDDToolBar.java b/src/main/java/ui/ebrdd/EBRDDToolBar.java
index 57f7b47f81..6fe9e38c41 100755
--- a/src/main/java/ui/ebrdd/EBRDDToolBar.java
+++ b/src/main/java/ui/ebrdd/EBRDDToolBar.java
@@ -80,9 +80,13 @@ public class EBRDDToolBar extends TToolBar {
 		mgui.actions[TGUIAction.EBRDD_ERB].setEnabled(b);
 		mgui.actions[TGUIAction.EBRDD_VARIABLE_DECLARATION].setEnabled(b);
 		
-		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
+		// Issue #31
+		mgui.actions[ TGUIAction.ACT_ZOOM_MORE ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_ZOOM_LESS ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_SHOW_ZOOM ].setEnabled( b );
+//		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
 		mgui.updateZoomInfo();
 
         mgui.actions[TGUIAction.ACT_MODEL_CHECKING].setEnabled(!b);
diff --git a/src/main/java/ui/eln/ELNConnector.java b/src/main/java/ui/eln/ELNConnector.java
index d15fa72874..640788bb73 100644
--- a/src/main/java/ui/eln/ELNConnector.java
+++ b/src/main/java/ui/eln/ELNConnector.java
@@ -42,8 +42,17 @@ import ui.*;
 import ui.eln.sca_eln_sca_tdf.*;
 import ui.util.IconManager;
 import ui.window.JDialogELNConnector;
-import java.awt.*;
-import java.util.*;
+
+import java.awt.BasicStroke;
+import java.awt.Font;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Point;
+import java.awt.Stroke;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Vector;
+
 import javax.swing.JFrame;
 import myutil.GraphicLib;
 
@@ -55,8 +64,8 @@ import myutil.GraphicLib;
  * @author Irina Kit Yan LEE
  */
 
-public class ELNConnector extends TGConnector implements ScalableTGComponent {
-	protected double oldScaleFactor;
+public class ELNConnector extends TGConnector /* Issue #31 implements ScalableTGComponent*/ {
+	//protected double oldScaleFactor;
 
 	public ELNConnector(int _x, int _y, int _minX, int _minY, int _maxX, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp, TGConnectingPoint _p1, TGConnectingPoint _p2, Vector<Point> _listPoint) {
 		super(_x, _y, _minX, _minY, _maxX, _maxY, _pos, _father, _tdp, _p1, _p2, _listPoint);
@@ -64,7 +73,7 @@ public class ELNConnector extends TGConnector implements ScalableTGComponent {
 		myImageIcon = IconManager.imgic202;
 		value = "";
 		editable = false;
-		oldScaleFactor = tdp.getZoom();
+		//oldScaleFactor = tdp.getZoom();
 		
 		p1 = _p1;
 		p2 = _p2;
@@ -78,12 +87,14 @@ public class ELNConnector extends TGConnector implements ScalableTGComponent {
 		return p2;
 	}
 
+	@Override
 	public boolean editOndoubleClick(JFrame frame) {
 		JDialogELNConnector jde = new JDialogELNConnector(this);
 		jde.setVisible(true);
 		return true;
 	}
 
+	@Override
 	protected void drawLastSegment(Graphics gr, int x1, int y1, int x2, int y2) {
 		Graphics2D g = (Graphics2D) gr;
 		
@@ -262,30 +273,31 @@ public class ELNConnector extends TGConnector implements ScalableTGComponent {
 		}
 		return "";
 	}
-	
-	public void rescale(double scaleFactor) {
-		int xx, yy;
-
-		for (int i = 0; i < nbInternalTGComponent; i++) {
-			xx = tgcomponent[i].getX();
-			yy = tgcomponent[i].getY();
-			tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
-			tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
-			xx = (int) (tgcomponent[i].dx);
-			tgcomponent[i].dx = tgcomponent[i].dx - xx;
-			yy = (int) (tgcomponent[i].dy);
-			tgcomponent[i].dy = tgcomponent[i].dy - yy;
-			tgcomponent[i].setCd(xx, yy);
-		}
-		oldScaleFactor = scaleFactor;
-	}
+//	Issue #31: Now moved in upper class
+//	public void rescale(double scaleFactor) {
+//		int xx, yy;
+//
+//		for (int i = 0; i < nbInternalTGComponent; i++) {
+//			xx = tgcomponent[i].getX();
+//			yy = tgcomponent[i].getY();
+//			tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
+//			tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
+//			xx = (int) (tgcomponent[i].dx);
+//			tgcomponent[i].dx = tgcomponent[i].dx - xx;
+//			yy = (int) (tgcomponent[i].dy);
+//			tgcomponent[i].dy = tgcomponent[i].dy - yy;
+//			tgcomponent[i].setCd(xx, yy);
+//		}
+//		oldScaleFactor = scaleFactor;
+//	}
 
+	@Override
 	public int getType() {
 		return TGComponentManager.ELN_CONNECTOR;
 	}
 
-	public java.util.List<ELNMidPortTerminal> getAllMidPortTerminal() {
-		java.util.List<ELNMidPortTerminal> list = new ArrayList<ELNMidPortTerminal>();
+	public List<ELNMidPortTerminal> getAllMidPortTerminal() {
+		List<ELNMidPortTerminal> list = new ArrayList<ELNMidPortTerminal>();
 		for (int i = 0; i < nbInternalTGComponent; i++) {
 			if (tgcomponent[i] instanceof ELNMidPortTerminal) {
 				list.add((ELNMidPortTerminal) (tgcomponent[i]));
diff --git a/src/main/java/ui/eln/ELNDiagramToolBar.java b/src/main/java/ui/eln/ELNDiagramToolBar.java
index f8cd9289a4..20086b57fc 100644
--- a/src/main/java/ui/eln/ELNDiagramToolBar.java
+++ b/src/main/java/ui/eln/ELNDiagramToolBar.java
@@ -101,7 +101,11 @@ public class ELNDiagramToolBar extends TToolBar {
 		mgui.actions[TGUIAction.ACT_ONECLICK_LOTOS_RG].setEnabled(b);
 		mgui.actions[TGUIAction.ACT_SIMU_SYSTEMC].setEnabled(b);
 		
-		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(b);
+		// Issue #31
+		mgui.actions[ TGUIAction.ACT_ZOOM_MORE ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_ZOOM_LESS ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_SHOW_ZOOM ].setEnabled( b );
+//		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(b);
 		mgui.updateZoomInfo();
 	}
 
diff --git a/src/main/java/ui/ftd/FTDCompositionConnector.java b/src/main/java/ui/ftd/FTDCompositionConnector.java
index 38ecf3843b..e5ea8ed29d 100644
--- a/src/main/java/ui/ftd/FTDCompositionConnector.java
+++ b/src/main/java/ui/ftd/FTDCompositionConnector.java
@@ -36,12 +36,8 @@
  * knowledge of the CeCILL license and that you accept its terms.
  */
 
-
-
-
 package ui.ftd;
 
-
 import ui.*;
 import ui.util.IconManager;
 
@@ -55,14 +51,14 @@ import java.util.Vector;
  * @version 1.0 14/12/2017
  * @author Ludovic APVRILLE
  */
-public  class FTDCompositionConnector extends TGConnectorWithCommentConnectionPoints implements ScalableTGComponent{
+public  class FTDCompositionConnector extends TGConnectorWithCommentConnectionPoints /* Issue #31 implements ScalableTGComponent*/ {
     protected int d = 20;
     protected int D = 26;
     //protected int widthValue, heightValue, maxWidthValue, h;
     protected Polygon p;
     protected int xp1, xp2, yp1, yp2;
-    protected double oldScaleFactor;
-    protected boolean rescaled;
+//    protected double oldScaleFactor;
+//    protected boolean rescaled;
 
 
     public FTDCompositionConnector(int _x, int _y, int _minX, int _minY, int _maxX, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp, TGConnectingPoint _p1, TGConnectingPoint _p2, Vector<Point> _listPoint) {
@@ -70,10 +66,11 @@ public  class FTDCompositionConnector extends TGConnectorWithCommentConnectionPo
         myImageIcon = IconManager.imgic202;
         value = "{info}";
         editable = true;
-        oldScaleFactor = tdp.getZoom();
-        rescaled = true;
+//        oldScaleFactor = tdp.getZoom();
+//        rescaled = true;
     }
 
+    @Override
     protected void drawLastSegment(Graphics g, int x1, int y1, int x2, int y2){
         /*if (Point2D.distance(x1, y1, x2, y2) < GraphicLib.longueur * 1.5) {
           g.drawLine(x1, y1, x2, y2);
@@ -86,7 +83,7 @@ public  class FTDCompositionConnector extends TGConnectorWithCommentConnectionPo
             xp2 = x2;
             yp1 = y1;
             yp2 = y2;
-            Double alpha;
+           // Double alpha;
 
             int dd = (int)(d*tdp.getZoom());
             int DD = (int)(D*tdp.getZoom());
@@ -169,6 +166,7 @@ public  class FTDCompositionConnector extends TGConnectorWithCommentConnectionPo
         rescaled = false;
     }
 
+    @Override
     public TGComponent extraIsOnOnlyMe(int x1, int y1) {
         if (p != null) {
             if (p.contains(x1, y1)) {
@@ -178,36 +176,34 @@ public  class FTDCompositionConnector extends TGConnectorWithCommentConnectionPo
 
         return null;
     }
-
-    public void rescale(double scaleFactor){
-        //
-        int xx, yy;
-
-        for(int i=0; i<nbInternalTGComponent; i++) {
-            xx = tgcomponent[i].getX();
-            yy = tgcomponent[i].getY();
-            //
-            tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
-            tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
-            xx = (int)(tgcomponent[i].dx);
-            tgcomponent[i].dx = tgcomponent[i].dx - xx;
-            yy = (int)(tgcomponent[i].dy);
-            tgcomponent[i].dy = tgcomponent[i].dy - yy;
-
-            tgcomponent[i].setCd(xx, yy);
-
-            //
-        }
-
-        oldScaleFactor = scaleFactor;
-        rescaled = true;
-    }
-
-
+//	Issue #31: Now moved to upper class
+//    public void rescale(double scaleFactor){
+//        //
+//        int xx, yy;
+//
+//        for(int i=0; i<nbInternalTGComponent; i++) {
+//            xx = tgcomponent[i].getX();
+//            yy = tgcomponent[i].getY();
+//            //
+//            tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
+//            tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
+//            xx = (int)(tgcomponent[i].dx);
+//            tgcomponent[i].dx = tgcomponent[i].dx - xx;
+//            yy = (int)(tgcomponent[i].dy);
+//            tgcomponent[i].dy = tgcomponent[i].dy - yy;
+//
+//            tgcomponent[i].setCd(xx, yy);
+//
+//            //
+//        }
+//
+//        oldScaleFactor = scaleFactor;
+//        rescaled = true;
+//    }
+
+    @Override
     public int getType() {
         return TGComponentManager.FTD_COMPOSITION_CONNECTOR;
     }
-
-
-
 }
+
diff --git a/src/main/java/ui/ftd/FTDCountermeasureConnector.java b/src/main/java/ui/ftd/FTDCountermeasureConnector.java
index cfadc573a6..e2dc28e658 100644
--- a/src/main/java/ui/ftd/FTDCountermeasureConnector.java
+++ b/src/main/java/ui/ftd/FTDCountermeasureConnector.java
@@ -36,22 +36,20 @@
  * knowledge of the CeCILL license and that you accept its terms.
  */
 
-
-
-
 package ui.ftd;
 
+import java.awt.Graphics;
+import java.awt.Point;
+import java.util.Vector;
 
-import myutil.Conversion;
 import myutil.GraphicLib;
-import ui.*;
+import ui.TDiagramPanel;
+import ui.TGComponent;
+import ui.TGComponentManager;
+import ui.TGConnectingPoint;
+import ui.TGConnectorWithCommentConnectionPoints;
 import ui.util.IconManager;
 
-import javax.swing.*;
-import java.awt.*;
-import java.awt.geom.Point2D;
-import java.util.Vector;
-
 /**
    * Class FTDCountermeasureConnector
    * Connector used in Fault Tree Diagrams
@@ -59,11 +57,11 @@ import java.util.Vector;
    * @version 1.0 14/12/2017
    * @author Ludovic APVRILLE
  */
-public  class FTDCountermeasureConnector extends TGConnectorWithCommentConnectionPoints implements ScalableTGComponent {
+public  class FTDCountermeasureConnector extends TGConnectorWithCommentConnectionPoints /* Issue #31 implements ScalableTGComponent*/ {
     //protected int arrowLength = 10;
     //protected int widthValue, heightValue, maxWidthValue, h;
     protected int c = 5; //square length
-    protected double oldScaleFactor;
+    //protected double oldScaleFactor;
     protected int fontSize = 12;
 
 
@@ -72,48 +70,44 @@ public  class FTDCountermeasureConnector extends TGConnectorWithCommentConnectio
         myImageIcon = IconManager.imgic202;
         value = "";
         editable = true;
-        oldScaleFactor = tdp.getZoom();
+        //oldScaleFactor = tdp.getZoom();
     }
 
-
+    @Override
     protected void drawLastSegment(Graphics g, int x1, int y1, int x2, int y2){
         GraphicLib.dashedLine(g, x1, y1, x2, y2);
-
     }
 
+    @Override
     protected void drawMiddleSegment(Graphics g, int x1, int y1, int x2, int y2) {
         GraphicLib.dashedLine(g, x1, y1, x2, y2);
     }
 
+    @Override
     public int getType() {
         return TGComponentManager.FTD_COUNTERMEASURE_CONNECTOR;
     }
-
-    public void rescale(double scaleFactor){
-        //
-        int xx, yy;
-
-        for(int i=0; i<nbInternalTGComponent; i++) {
-            xx = tgcomponent[i].getX();
-            yy = tgcomponent[i].getY();
-            //
-            tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
-            tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
-            xx = (int)(tgcomponent[i].dx);
-            tgcomponent[i].dx = tgcomponent[i].dx - xx;
-            yy = (int)(tgcomponent[i].dy);
-            tgcomponent[i].dy = tgcomponent[i].dy - yy;
-
-            tgcomponent[i].setCd(xx, yy);
-
-            //
-        }
-
-        oldScaleFactor = scaleFactor;
-    }
-
-
-
-
-
+// Issue #31: Moved to upper class
+//    public void rescale(double scaleFactor){
+//        //
+//        int xx, yy;
+//
+//        for(int i=0; i<nbInternalTGComponent; i++) {
+//            xx = tgcomponent[i].getX();
+//            yy = tgcomponent[i].getY();
+//            //
+//            tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
+//            tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
+//            xx = (int)(tgcomponent[i].dx);
+//            tgcomponent[i].dx = tgcomponent[i].dx - xx;
+//            yy = (int)(tgcomponent[i].dy);
+//            tgcomponent[i].dy = tgcomponent[i].dy - yy;
+//
+//            tgcomponent[i].setCd(xx, yy);
+//
+//            //
+//        }
+//
+//        oldScaleFactor = scaleFactor;
+//    }
 }
diff --git a/src/main/java/ui/ftd/FTDFaultConnector.java b/src/main/java/ui/ftd/FTDFaultConnector.java
index cc24f0a3a2..99b9731ff8 100644
--- a/src/main/java/ui/ftd/FTDFaultConnector.java
+++ b/src/main/java/ui/ftd/FTDFaultConnector.java
@@ -36,12 +36,8 @@
  * knowledge of the CeCILL license and that you accept its terms.
  */
 
-
-
-
 package ui.ftd;
 
-
 import myutil.Conversion;
 import myutil.GraphicLib;
 import ui.*;
@@ -59,11 +55,11 @@ import java.util.Vector;
    * @version 1.0 14/12/2017
    * @author Ludovic APVRILLE
  */
-public  class FTDFaultConnector extends TGConnectorWithCommentConnectionPoints implements ScalableTGComponent {
+public  class FTDFaultConnector extends TGConnectorWithCommentConnectionPoints /* Issue #31 implements ScalableTGComponent*/ {
     //protected int arrowLength = 10;
     //protected int widthValue, heightValue, maxWidthValue, h;
     protected int c = 5; //square length
-    protected double oldScaleFactor;
+    //protected double oldScaleFactor;
     protected int fontSize = 12;
 
 
@@ -72,9 +68,10 @@ public  class FTDFaultConnector extends TGConnectorWithCommentConnectionPoints i
         myImageIcon = IconManager.imgic202;
         value = "";
         editable = true;
-        oldScaleFactor = tdp.getZoom();
+        //oldScaleFactor = tdp.getZoom();
     }
 
+    @Override
     protected void drawLastSegment(Graphics g, int x1, int y1, int x2, int y2){
         /*if (Point2D.distance(x1, y1, x2, y2) < GraphicLib.longueur * 1.5) {
           g.drawLine(x1, y1, x2, y2);
@@ -137,9 +134,9 @@ public  class FTDFaultConnector extends TGConnectorWithCommentConnectionPoints i
           g.fillRect(p1.getX()-(cz/2), p1.getY()-(cz/2), cz, cz);*/
 
         Point p = new Point(x2, y2);
-        if (p == null) {
-            //
-        } else {
+//        if (p == null) {
+//            //
+//        } else {
             if (Point2D.distance(x1, y1, p.x, p.y) < GraphicLib.longueur * 1.5) {
                 //
                 if ((p.x != x1) || (p.y != y1)) {
@@ -149,7 +146,7 @@ public  class FTDFaultConnector extends TGConnectorWithCommentConnectionPoints i
             } else {
                 GraphicLib.arrowWithLine(g, 1, 0, 10, x1, y1, p.x, p.y, true);
             }
-        }
+       // }
 
         if (value.length() > 0) {
             Font f = g.getFont();
@@ -163,6 +160,7 @@ public  class FTDFaultConnector extends TGConnectorWithCommentConnectionPoints i
 
     }
 
+    @Override
     public boolean editOndoubleClick(JFrame frame) {
         String oldValue = value;
         String text = getName() + "Connector";
@@ -185,36 +183,31 @@ public  class FTDFaultConnector extends TGConnectorWithCommentConnectionPoints i
         return false;
     }
 
-
+    @Override
     public int getType() {
         return TGComponentManager.FTD_FAULT_CONNECTOR;
     }
-
-    public void rescale(double scaleFactor){
-        //
-        int xx, yy;
-
-        for(int i=0; i<nbInternalTGComponent; i++) {
-            xx = tgcomponent[i].getX();
-            yy = tgcomponent[i].getY();
-            //
-            tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
-            tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
-            xx = (int)(tgcomponent[i].dx);
-            tgcomponent[i].dx = tgcomponent[i].dx - xx;
-            yy = (int)(tgcomponent[i].dy);
-            tgcomponent[i].dy = tgcomponent[i].dy - yy;
-
-            tgcomponent[i].setCd(xx, yy);
-
-            //
-        }
-
-        oldScaleFactor = scaleFactor;
-    }
-
-
-
-
-
+// Issue #31: Moved to upper class
+//    public void rescale(double scaleFactor){
+//        //
+//        int xx, yy;
+//
+//        for(int i=0; i<nbInternalTGComponent; i++) {
+//            xx = tgcomponent[i].getX();
+//            yy = tgcomponent[i].getY();
+//            //
+//            tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
+//            tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
+//            xx = (int)(tgcomponent[i].dx);
+//            tgcomponent[i].dx = tgcomponent[i].dx - xx;
+//            yy = (int)(tgcomponent[i].dy);
+//            tgcomponent[i].dy = tgcomponent[i].dy - yy;
+//
+//            tgcomponent[i].setCd(xx, yy);
+//
+//            //
+//        }
+//
+//        oldScaleFactor = scaleFactor;
+//    }
 }
diff --git a/src/main/java/ui/iod/InteractionOverviewDiagramToolBar.java b/src/main/java/ui/iod/InteractionOverviewDiagramToolBar.java
index 5ab07f2d5e..3d6ea50d57 100755
--- a/src/main/java/ui/iod/InteractionOverviewDiagramToolBar.java
+++ b/src/main/java/ui/iod/InteractionOverviewDiagramToolBar.java
@@ -81,9 +81,13 @@ public class InteractionOverviewDiagramToolBar extends TToolBar {
         mgui.actions[TGUIAction.IOD_JUNCTION].setEnabled(b);
         mgui.actions[TGUIAction.ACT_ENHANCE].setEnabled(b);
 		
-		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
+		// Issue #31
+		mgui.actions[ TGUIAction.ACT_ZOOM_MORE ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_ZOOM_LESS ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_SHOW_ZOOM ].setEnabled( b );
+//		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
 		mgui.updateZoomInfo();
         
     }
diff --git a/src/main/java/ui/ncdd/NCDiagramToolBar.java b/src/main/java/ui/ncdd/NCDiagramToolBar.java
index e863eeecb0..fd3dc8c3c8 100755
--- a/src/main/java/ui/ncdd/NCDiagramToolBar.java
+++ b/src/main/java/ui/ncdd/NCDiagramToolBar.java
@@ -76,9 +76,13 @@ public class NCDiagramToolBar extends TToolBar {
 		mgui.actions[TGUIAction.NCDD_ROUTE_ARTIFACT].setEnabled(b);
 		mgui.actions[TGUIAction.ACT_TOGGLE_ATTR].setEnabled(b);
 		
-		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
+		// Issue #31
+		mgui.actions[ TGUIAction.ACT_ZOOM_MORE ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_ZOOM_LESS ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_SHOW_ZOOM ].setEnabled( b );
+//		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
 		
 		mgui.actions[TGUIAction.ACT_MODEL_CHECKING].setEnabled(b);
 		
diff --git a/src/main/java/ui/osad/TURTLEOSActivityDiagramToolBar.java b/src/main/java/ui/osad/TURTLEOSActivityDiagramToolBar.java
index 804c23d385..ca33b3a22c 100755
--- a/src/main/java/ui/osad/TURTLEOSActivityDiagramToolBar.java
+++ b/src/main/java/ui/osad/TURTLEOSActivityDiagramToolBar.java
@@ -73,9 +73,13 @@ public class TURTLEOSActivityDiagramToolBar extends TToolBar {
         mgui.actions[TGUIAction.TOSAD_TIME_INTERVAL].setEnabled(b);
         mgui.actions[TGUIAction.TOSAD_INT_TIME_INTERVAL].setEnabled(b);
 		
-		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
+		// Issue #31
+		mgui.actions[ TGUIAction.ACT_ZOOM_MORE ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_ZOOM_LESS ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_SHOW_ZOOM ].setEnabled( b );
+//		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
 		mgui.updateZoomInfo();
     }
     
diff --git a/src/main/java/ui/oscd/TURTLEOSClassDiagramToolBar.java b/src/main/java/ui/oscd/TURTLEOSClassDiagramToolBar.java
index 3debac9345..86e3cd0649 100755
--- a/src/main/java/ui/oscd/TURTLEOSClassDiagramToolBar.java
+++ b/src/main/java/ui/oscd/TURTLEOSClassDiagramToolBar.java
@@ -85,9 +85,13 @@ public class TURTLEOSClassDiagramToolBar extends TToolBar {
         mgui.actions[TGUIAction.ACT_TOGGLE_GATES].setEnabled(b);
         mgui.actions[TGUIAction.ACT_TOGGLE_SYNCHRO].setEnabled(b);*/
 		
-		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
+		// Issue #31
+		mgui.actions[ TGUIAction.ACT_ZOOM_MORE ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_ZOOM_LESS ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_SHOW_ZOOM ].setEnabled( b );
+//		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
 		mgui.updateZoomInfo();
     }
     
diff --git a/src/main/java/ui/procsd/ProactiveCSDToolBar.java b/src/main/java/ui/procsd/ProactiveCSDToolBar.java
index 51835c20e6..ed07b3a32c 100755
--- a/src/main/java/ui/procsd/ProactiveCSDToolBar.java
+++ b/src/main/java/ui/procsd/ProactiveCSDToolBar.java
@@ -85,9 +85,13 @@ public class ProactiveCSDToolBar extends TToolBar {
         mgui.actions[TGUIAction.ACT_MODEL_CHECKING].setEnabled(b);
 		mgui.actions[TGUIAction.ACT_ONECLICK_LOTOS_RG].setEnabled(b);
         
-		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
+		// Issue #31
+		mgui.actions[ TGUIAction.ACT_ZOOM_MORE ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_ZOOM_LESS ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_SHOW_ZOOM ].setEnabled( b );
+//		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
 		mgui.updateZoomInfo();
 	}
     
diff --git a/src/main/java/ui/prosmd/ProactiveSMDToolBar.java b/src/main/java/ui/prosmd/ProactiveSMDToolBar.java
index 6d64e073b9..e892a56671 100755
--- a/src/main/java/ui/prosmd/ProactiveSMDToolBar.java
+++ b/src/main/java/ui/prosmd/ProactiveSMDToolBar.java
@@ -91,9 +91,13 @@ public class ProactiveSMDToolBar extends TToolBar {
         mgui.actions[TGUIAction.ACT_MODEL_CHECKING].setEnabled(b);
 		mgui.actions[TGUIAction.ACT_ONECLICK_LOTOS_RG].setEnabled(b);
 		
-		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
+		// Issue #31
+		mgui.actions[ TGUIAction.ACT_ZOOM_MORE ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_ZOOM_LESS ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_SHOW_ZOOM ].setEnabled( b );
+//		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
 		mgui.updateZoomInfo();
     }
     
diff --git a/src/main/java/ui/sd/SequenceDiagramToolBar.java b/src/main/java/ui/sd/SequenceDiagramToolBar.java
index 8aa4eec3d9..a69b7029b9 100755
--- a/src/main/java/ui/sd/SequenceDiagramToolBar.java
+++ b/src/main/java/ui/sd/SequenceDiagramToolBar.java
@@ -84,9 +84,13 @@ public class SequenceDiagramToolBar extends TToolBar {
         mgui.actions[TGUIAction.SD_RELATIVE_TIME_CONSTRAINT_CONNECTOR].setEnabled(b);
         mgui.actions[TGUIAction.SD_ALIGN_INSTANCES].setEnabled(b);
 		
-		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
+		// Issue #31
+		mgui.actions[ TGUIAction.ACT_ZOOM_MORE ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_ZOOM_LESS ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_SHOW_ZOOM ].setEnabled( b );
+//		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
 		mgui.updateZoomInfo();
     }
     
diff --git a/src/main/java/ui/syscams/SysCAMSComponentTaskDiagramToolBar.java b/src/main/java/ui/syscams/SysCAMSComponentTaskDiagramToolBar.java
index 0bf3942cfd..4658334002 100644
--- a/src/main/java/ui/syscams/SysCAMSComponentTaskDiagramToolBar.java
+++ b/src/main/java/ui/syscams/SysCAMSComponentTaskDiagramToolBar.java
@@ -59,9 +59,6 @@ public class SysCAMSComponentTaskDiagramToolBar extends TToolBar {
 	}
 
 	protected void setActive(boolean b) {
-		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(b);
-		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(b);
-
 		mgui.actions[TGUIAction.CAMS_EDIT].setEnabled(b);
 		mgui.actions[TGUIAction.UML_NOTE].setEnabled(b);
 		mgui.actions[TGUIAction.CAMS_BLOCK_TDF].setEnabled(b);
@@ -78,7 +75,10 @@ public class SysCAMSComponentTaskDiagramToolBar extends TToolBar {
 		mgui.actions[TGUIAction.ACT_ONECLICK_LOTOS_RG].setEnabled(b);
 		mgui.actions[TGUIAction.ACT_SIMU_SYSTEMC].setEnabled(b);
 
-		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(b);
+		// Issue #31
+		mgui.actions[ TGUIAction.ACT_ZOOM_MORE ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_ZOOM_LESS ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_SHOW_ZOOM ].setEnabled( b );
 		mgui.updateZoomInfo();
 	}
 
diff --git a/src/main/java/ui/syscams/SysCAMSPortConnector.java b/src/main/java/ui/syscams/SysCAMSPortConnector.java
index ca2f7828cc..d05e16def3 100644
--- a/src/main/java/ui/syscams/SysCAMSPortConnector.java
+++ b/src/main/java/ui/syscams/SysCAMSPortConnector.java
@@ -57,8 +57,8 @@ import myutil.GraphicLib;
  * @author Irina Kit Yan LEE
  */
 
-public class SysCAMSPortConnector extends TGConnector implements ScalableTGComponent, SpecificActionAfterAdd, SpecificActionAfterMove {
-	protected double oldScaleFactor;
+public class SysCAMSPortConnector extends TGConnector implements /* Issue #31 ScalableTGComponent,*/ SpecificActionAfterAdd, SpecificActionAfterMove {
+	//protected double oldScaleFactor;
 
 	public SysCAMSPortConnector(int _x, int _y, int _minX, int _minY, int _maxX, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp, TGConnectingPoint _p1, TGConnectingPoint _p2, Vector<Point> _listPoint) {
 		super(_x, _y, _minX, _minY, _maxX, _maxY, _pos, _father, _tdp, _p1, _p2, _listPoint);
@@ -66,7 +66,7 @@ public class SysCAMSPortConnector extends TGConnector implements ScalableTGCompo
 		myImageIcon = IconManager.imgic202;
 		value = "";
 		editable = true;
-		oldScaleFactor = tdp.getZoom();
+		//oldScaleFactor = tdp.getZoom();
 		
 		p1 = _p1;
 		p2 = _p2;
@@ -80,12 +80,14 @@ public class SysCAMSPortConnector extends TGConnector implements ScalableTGCompo
 		return p2;
 	}
 
+	@Override
 	public boolean editOndoubleClick(JFrame frame) {
 		JDialogSysCAMSConnector jde = new JDialogSysCAMSConnector(this);
 		jde.setVisible(true);
 		return true;
 	}
 	
+	@Override
 	protected void drawLastSegment(Graphics gr, int x1, int y1, int x2, int y2) {
 		Graphics2D g = (Graphics2D) gr;
 		
@@ -153,24 +155,25 @@ public class SysCAMSPortConnector extends TGConnector implements ScalableTGCompo
 		} catch (Exception e) {
 		}
 	}
-
-	public void rescale(double scaleFactor) {
-		int xx, yy;
-
-		for (int i = 0; i < nbInternalTGComponent; i++) {
-			xx = tgcomponent[i].getX();
-			yy = tgcomponent[i].getY();
-			tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
-			tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
-			xx = (int) (tgcomponent[i].dx);
-			tgcomponent[i].dx = tgcomponent[i].dx - xx;
-			yy = (int) (tgcomponent[i].dy);
-			tgcomponent[i].dy = tgcomponent[i].dy - yy;
-			tgcomponent[i].setCd(xx, yy);
-		}
-		oldScaleFactor = scaleFactor;
-	}
-
+// Issue #31: Moved to upper class
+//	public void rescale(double scaleFactor) {
+//		int xx, yy;
+//
+//		for (int i = 0; i < nbInternalTGComponent; i++) {
+//			xx = tgcomponent[i].getX();
+//			yy = tgcomponent[i].getY();
+//			tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
+//			tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
+//			xx = (int) (tgcomponent[i].dx);
+//			tgcomponent[i].dx = tgcomponent[i].dx - xx;
+//			yy = (int) (tgcomponent[i].dy);
+//			tgcomponent[i].dy = tgcomponent[i].dy - yy;
+//			tgcomponent[i].setCd(xx, yy);
+//		}
+//		oldScaleFactor = scaleFactor;
+//	}
+
+	@Override
 	public int getType() {
 		return TGComponentManager.CAMS_CONNECTOR;
 	}
diff --git a/src/main/java/ui/tmlad/TMLActivityDiagramToolBar.java b/src/main/java/ui/tmlad/TMLActivityDiagramToolBar.java
index e53ea054df..74e870568b 100755
--- a/src/main/java/ui/tmlad/TMLActivityDiagramToolBar.java
+++ b/src/main/java/ui/tmlad/TMLActivityDiagramToolBar.java
@@ -95,9 +95,9 @@ public class TMLActivityDiagramToolBar extends TToolBar {
 		mgui.actions[TGUIAction.ACT_TOGGLE_DIPLO_ID].setEnabled(b);
 		
 		// Issue #31
-		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(true);
-		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(true);
-		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(true);
+		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled( b );
+		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled( b );
+		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled( b );
 //		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
 //		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
 //		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
diff --git a/src/main/java/ui/tmlcd/TMLTaskDiagramToolBar.java b/src/main/java/ui/tmlcd/TMLTaskDiagramToolBar.java
index 759869c4f7..ca8be4973e 100755
--- a/src/main/java/ui/tmlcd/TMLTaskDiagramToolBar.java
+++ b/src/main/java/ui/tmlcd/TMLTaskDiagramToolBar.java
@@ -36,9 +36,6 @@
  * knowledge of the CeCILL license and that you accept its terms.
  */
 
-
-
-
 package ui.tmlcd;
 
 import ui.MainGUI;
@@ -59,7 +56,6 @@ public class TMLTaskDiagramToolBar extends TToolBar {
     
     public TMLTaskDiagramToolBar(MainGUI _mgui) {
         super(_mgui);
-        
     }
     
     protected void setActive(boolean b) {
@@ -76,9 +72,16 @@ public class TMLTaskDiagramToolBar extends TToolBar {
         mgui.actions[TGUIAction.ACT_TOGGLE_REQUESTS].setEnabled(b);
 		mgui.actions[TGUIAction.ACT_TOGGLE_DIPLO_ID].setEnabled(b);
 		
-		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
-		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(b);
+//		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(b);
+		// Issue #31
+		mgui.actions[ TGUIAction.ACT_ZOOM_MORE ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_ZOOM_LESS ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_SHOW_ZOOM ].setEnabled( b );
+
+//		mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
+//		mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
 		
 		mgui.actions[TGUIAction.ACT_MODEL_CHECKING].setEnabled(b);
 		mgui.actions[TGUIAction.ACT_ONECLICK_LOTOS_RG].setEnabled(b);
@@ -123,27 +126,20 @@ public class TMLTaskDiagramToolBar extends TToolBar {
         button = this.add(mgui.actions[TGUIAction.TMLTD_REQ]);
         button.addMouseListener(mgui.mouseHandler);
         
-         this.addSeparator();
+        this.addSeparator();
          
-         button = this.add(mgui.actions[TGUIAction.ACT_TOGGLE_CHANNELS]);
-         button.addMouseListener(mgui.mouseHandler);
+        button = this.add(mgui.actions[TGUIAction.ACT_TOGGLE_CHANNELS]);
+        button.addMouseListener(mgui.mouseHandler);
          
-         button = this.add(mgui.actions[TGUIAction.ACT_TOGGLE_EVENTS]);
-         button.addMouseListener(mgui.mouseHandler);
+        button = this.add(mgui.actions[TGUIAction.ACT_TOGGLE_EVENTS]);
+        button.addMouseListener(mgui.mouseHandler);
          
-          button = this.add(mgui.actions[TGUIAction.ACT_TOGGLE_REQUESTS]);
-         button.addMouseListener(mgui.mouseHandler);
+        button = this.add(mgui.actions[TGUIAction.ACT_TOGGLE_REQUESTS]);
+        button.addMouseListener(mgui.mouseHandler);
 		 
-		 this.addSeparator();
+		this.addSeparator();
 		
 		button = this.add(mgui.actions[TGUIAction.ACT_TOGGLE_DIPLO_ID]);
         button.addMouseListener(mgui.mouseHandler);
-        
     }
-    
 } // Class
-
-
-
-
-
diff --git a/src/main/java/ui/tmlcompd/TMLCPortConnector.java b/src/main/java/ui/tmlcompd/TMLCPortConnector.java
index dd705454db..7152069292 100755
--- a/src/main/java/ui/tmlcompd/TMLCPortConnector.java
+++ b/src/main/java/ui/tmlcompd/TMLCPortConnector.java
@@ -36,12 +36,8 @@
  * knowledge of the CeCILL license and that you accept its terms.
  */
 
-
-
-
 package ui.tmlcompd;
 
-
 import ui.*;
 import ui.util.IconManager;
 
@@ -55,14 +51,14 @@ import java.util.Vector;
    * @version 1.0 12/03/2008
    * @author Ludovic APVRILLE
  */
-public  class TMLCPortConnector extends TGConnector implements ScalableTGComponent, SpecificActionAfterAdd,  SpecificActionAfterMove{
+public  class TMLCPortConnector extends TGConnector implements /* Issue #31 ScalableTGComponent,*/ SpecificActionAfterAdd,  SpecificActionAfterMove {
     //protected int arrowLength = 10;
     //protected int widthValue, heightValue, maxWidthValue, h;
 
     //protected int priority = 0; // Between 0 and 10
 
     //protected double dx, dy;
-    protected double oldScaleFactor;
+    //protected double oldScaleFactor;
     //protected TGConnectingPoint oldp1, oldp2;
 
 
@@ -72,7 +68,7 @@ public  class TMLCPortConnector extends TGConnector implements ScalableTGCompone
         value = "Connector between ports";
         editable = false;
 
-        oldScaleFactor = tdp.getZoom();
+       // oldScaleFactor = tdp.getZoom();
 
         //oldp1 = null;
         //oldp2 = null;
@@ -97,6 +93,7 @@ public  class TMLCPortConnector extends TGConnector implements ScalableTGCompone
       return true;
       }*/
 
+    @Override
     protected void drawLastSegment(Graphics g, int x1, int y1, int x2, int y2){
         //if (Point2D.distance(x1, y1, x2, y2) < GraphicLib.longueur * 1.5) {
         /*if ((p1 != oldp1) || (p2 != oldp2)) {
@@ -149,31 +146,31 @@ public  class TMLCPortConnector extends TGConnector implements ScalableTGCompone
         //    GraphicLib.arrowWithLine(g, 1, 0, 10, x1, y1, x2, y2, true);
         //}
     }
-
-    public void rescale(double scaleFactor){
-        //
-        int xx, yy;
-
-        for(int i=0; i<nbInternalTGComponent; i++) {
-            xx = tgcomponent[i].getX();
-            yy = tgcomponent[i].getY();
-            //
-            tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
-            tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
-            xx = (int)(tgcomponent[i].dx);
-            tgcomponent[i].dx = tgcomponent[i].dx - xx;
-            yy = (int)(tgcomponent[i].dy);
-            tgcomponent[i].dy = tgcomponent[i].dy - yy;
-
-            tgcomponent[i].setCd(xx, yy);
-
-            //
-        }
-
-        oldScaleFactor = scaleFactor;
-    }
-
-
+// Issue #31: Moved to upper class
+//    public void rescale(double scaleFactor){
+//        //
+//        int xx, yy;
+//
+//        for(int i=0; i<nbInternalTGComponent; i++) {
+//            xx = tgcomponent[i].getX();
+//            yy = tgcomponent[i].getY();
+//            //
+//            tgcomponent[i].dx = (tgcomponent[i].dx + xx) / oldScaleFactor * scaleFactor;
+//            tgcomponent[i].dy = (tgcomponent[i].dy + yy) / oldScaleFactor * scaleFactor;
+//            xx = (int)(tgcomponent[i].dx);
+//            tgcomponent[i].dx = tgcomponent[i].dx - xx;
+//            yy = (int)(tgcomponent[i].dy);
+//            tgcomponent[i].dy = tgcomponent[i].dy - yy;
+//
+//            tgcomponent[i].setCd(xx, yy);
+//
+//            //
+//        }
+//
+//        oldScaleFactor = scaleFactor;
+//    }
+
+    @Override
     public int getType() {
         return TGComponentManager.CONNECTOR_PORT_TMLC;
     }
@@ -264,5 +261,4 @@ public  class TMLCPortConnector extends TGConnector implements ScalableTGCompone
       public String getAttributes() {
       return "Priority = " + priority;
       }*/
-
 }
diff --git a/src/main/java/ui/tmlcp/TMLCPToolBar.java b/src/main/java/ui/tmlcp/TMLCPToolBar.java
index aca7bcf04a..367b7d2eb0 100755
--- a/src/main/java/ui/tmlcp/TMLCPToolBar.java
+++ b/src/main/java/ui/tmlcp/TMLCPToolBar.java
@@ -76,9 +76,13 @@ public class TMLCPToolBar extends TToolBar {
         mgui.actions[TGUIAction.TMLCP_FOR_LOOP].setEnabled(b);
         mgui.actions[TGUIAction.ACT_ENHANCE].setEnabled(b);
 
-        mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
-        mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
-        mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
+		// Issue #31
+		mgui.actions[ TGUIAction.ACT_ZOOM_MORE ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_ZOOM_LESS ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_SHOW_ZOOM ].setEnabled( b );
+//        mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
+//        mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
+//        mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
         mgui.actions[TGUIAction.ACT_MODEL_CHECKING].setEnabled(b);
         mgui.updateZoomInfo();
 
diff --git a/src/main/java/ui/tmldd/TMLArchiDiagramToolBar.java b/src/main/java/ui/tmldd/TMLArchiDiagramToolBar.java
index bafabffb53..0a896f5bb3 100755
--- a/src/main/java/ui/tmldd/TMLArchiDiagramToolBar.java
+++ b/src/main/java/ui/tmldd/TMLArchiDiagramToolBar.java
@@ -93,7 +93,11 @@ public class TMLArchiDiagramToolBar extends TToolBar  implements ActionListener
         mgui.actions[TGUIAction.ACT_TOGGLE_ATTR].setEnabled(b);
         mgui.actions[TGUIAction.ACT_TOGGLE_DIPLO_ID].setEnabled(b);
 
-        mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
+		// Issue #31
+		mgui.actions[ TGUIAction.ACT_ZOOM_MORE ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_ZOOM_LESS ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_SHOW_ZOOM ].setEnabled( b );
+//        mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
 
         mgui.actions[TGUIAction.ACT_MODEL_CHECKING].setEnabled(b);
         mgui.actions[TGUIAction.ACT_ONECLICK_LOTOS_RG].setEnabled(b);
diff --git a/src/main/java/ui/tmlsd/TMLSDToolBar.java b/src/main/java/ui/tmlsd/TMLSDToolBar.java
index 3c24c7f854..0a861b3cba 100755
--- a/src/main/java/ui/tmlsd/TMLSDToolBar.java
+++ b/src/main/java/ui/tmlsd/TMLSDToolBar.java
@@ -78,9 +78,13 @@ public class TMLSDToolBar extends TToolBar {
         mgui.actions[TGUIAction.TMLSD_ACTION_STATE].setEnabled(b);
         mgui.actions[TGUIAction.SD_ALIGN_INSTANCES].setEnabled(b);
 
-        mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
-        mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
-        mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
+		// Issue #31
+		mgui.actions[ TGUIAction.ACT_ZOOM_MORE ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_ZOOM_LESS ].setEnabled( b );
+		mgui.actions[ TGUIAction.ACT_SHOW_ZOOM ].setEnabled( b );
+//        mgui.actions[TGUIAction.ACT_ZOOM_MORE].setEnabled(false);
+//        mgui.actions[TGUIAction.ACT_ZOOM_LESS].setEnabled(false);
+//        mgui.actions[TGUIAction.ACT_SHOW_ZOOM].setEnabled(false);
         mgui.updateZoomInfo();
     }
 
-- 
GitLab