diff --git a/src/main/java/ui/GTURTLEModeling.java b/src/main/java/ui/GTURTLEModeling.java index 5b115bab0299c7ffae87da1d6897f42cf2788e4e..5246396fad1fcbb6277ed292185c2fcfe3cd61f0 100644 --- a/src/main/java/ui/GTURTLEModeling.java +++ b/src/main/java/ui/GTURTLEModeling.java @@ -4915,8 +4915,6 @@ public class GTURTLEModeling { if (adn.getNodeType() == Node.ELEMENT_NODE) { elt = (Element) adn; - if (asmdp == null) { throw new MalformedModelingException(); } - decX = (int)(_decX - X + X / zoomRatio); decY = (int)(_decY - Y + Y / zoomRatio); diff --git a/src/main/java/ui/ScalableTGComponent.java b/src/main/java/ui/ScalableTGComponent.java index a3f73b8842826216613039df59e22ddec4ac498b..7c80b527635a9bf2ad64387747df471f82375cf4 100644 --- a/src/main/java/ui/ScalableTGComponent.java +++ b/src/main/java/ui/ScalableTGComponent.java @@ -48,4 +48,5 @@ package ui; public interface ScalableTGComponent { void rescale(double scaleFactor); + void basicRescale(double scaleFactor); } \ No newline at end of file diff --git a/src/main/java/ui/TGScalableComponent.java b/src/main/java/ui/TGScalableComponent.java index 97c2ebc8a4e198580447c0711c095473623c0167..01c1b8d333947a391048582a840e023899bace08 100644 --- a/src/main/java/ui/TGScalableComponent.java +++ b/src/main/java/ui/TGScalableComponent.java @@ -246,7 +246,7 @@ public abstract class TGScalableComponent extends TGComponent implements Scalabl TGScalableComponent sc = (TGScalableComponent)tgc; double oldFactor = sc.getOldScaleFactor(); //TraceManager.addDev("Handling component:" + sc); - sc.rescale(zoomRatio * oldFactor); + sc.basicRescale(zoomRatio * oldFactor); sc.forceOldScaleFactor(sc.getTDiagramPanel().getZoom()); } } @@ -386,6 +386,63 @@ public abstract class TGScalableComponent extends TGComponent implements Scalabl maxY *= factor; } + public void basicForceScale(final double factor) { + 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; + + /*double basicFactor = getTDiagramPanel().getZoom(); + TraceManager.addDev("Found zoom:" + basicFactor + " textY=" + textY); + + textX = (int)(textX * basicFactor); + textY = (int)(textY * basicFactor);*/ + + + + /*dtextY = (textY + dtextY) * factor; + textY = (int) (dtextY); + dtextY = dtextY - textY; + + darc = (arc + darc) * factor; + arc = (int) (darc); + darc = darc - arc; + + dLineLength = (lineLength + dLineLength) * factor; + lineLength = (int) dLineLength; + dLineLength = dLineLength - lineLength; + + dLinebreak = (linebreak + dLinebreak) * factor; + linebreak = (int) dLinebreak; + dLinebreak = dLinebreak - linebreak;*/ + + // Issue #81: We also need to update max coordinate values + maxX *= factor; + maxY *= factor; + } + @Override public void rescale( final double scaleFactor ) { rescaled = true; @@ -418,6 +475,38 @@ public abstract class TGScalableComponent extends TGComponent implements Scalabl hasBeenResized(); } + + public void basicRescale( final double scaleFactor ) { + rescaled = true; + + final double factor = scaleFactor / oldScaleFactor; + basicForceScale(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]).basicRescale(scaleFactor); + } + } + + hasBeenResized(); + } + /** * Issue #31 * @return diff --git a/src/main/java/ui/avatarsmd/AvatarSMDSendSignal.java b/src/main/java/ui/avatarsmd/AvatarSMDSendSignal.java index 61fa93cd7269336e390111760a88cee64f1df600..526984e3b615b8081b610cd4b4a24b66202e8db1 100644 --- a/src/main/java/ui/avatarsmd/AvatarSMDSendSignal.java +++ b/src/main/java/ui/avatarsmd/AvatarSMDSendSignal.java @@ -125,6 +125,8 @@ public class AvatarSMDSendSignal extends AvatarSMDBasicCanBeDisabledComponent /* Color c = g.getColor(); + TraceManager.addDev("TextY=" + textY + " for value=" + value); + if (stateOfError > 0) { switch(stateOfError) {