Added call checks for subclass methods:
authorDaniel Kirschten <daniel.kirschten@gmx.de>
Wed, 19 Jun 2019 11:13:49 +0000 (13:13 +0200)
committerDaniel Kirschten <daniel.kirschten@gmx.de>
Wed, 19 Jun 2019 11:13:49 +0000 (13:13 +0200)
SubmodelComponents don't allow add / removePin,
SimpleRectangularSubmodelComponents don't allow add /
removeSubmodelInterface and setSize

net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/JsonExample.java
net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUICustomComponentCreator.java
net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SimpleRectangularSubmodelComponent.java
net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponent.java

index 793f0f7..eb3833b 100644 (file)
@@ -27,7 +27,7 @@ public class JsonExample
                {
                        super(model, 1, "Test");
                        setSubmodelScale(.4);
-                       setInputPins("Test input pin");
+                       setInputPins("Input pin #0");
                        GUICustomComponentCreator.create(submodelModifiable, "HalfAdder.json");
                }
        }
index 0f6fc1b..9d04092 100644 (file)
@@ -79,9 +79,9 @@ public final class GUICustomComponentCreator
                                        ((Number) m.get(SimpleRectangularSubmodelComponent.kLogicWidth)).intValue(),
                                        (String) m.get(SimpleRectangularSubmodelComponent.kLabel));
                        rect.setSubmodelScale(params.composition.innerScale);
-                       rect.setSize(params.width, params.height);
+                       // rect.setSize(params.width, params.height);
 
-                       // TODO names
+                       // TODO save & restore names
                        int inputCount = ((Number) m.get(SimpleRectangularSubmodelComponent.kInCount)).intValue();
                        String[] inputNames = new String[inputCount];
                        for (int i = 0; i < inputCount; i++)
index 558df24..f28723d 100644 (file)
@@ -55,17 +55,17 @@ public class SimpleRectangularSubmodelComponent extends SubmodelComponent
                int inputCount = pinNames.length;
                int oldInputCount = inputSupermodelPins.size();
                double height = Math.max(inputCount, outputSupermodelPins.size()) * pinDistance;
-               setSize(width, height);
+               super.setSize(width, height);
                if (oldInputCount > inputCount)
                        while (inputSupermodelPins.size() > inputCount)
                        {
                                inputSubmodelPins.remove(inputCount);
-                               removeSubmodelInterface(inputSupermodelPins.remove(inputCount));
+                               super.removeSubmodelInterface(inputSupermodelPins.remove(inputCount));
                        }
                else if (oldInputCount < inputCount)
                        for (int i = oldInputCount; i < inputCount; i++)
                        {
-                               Pin submodelPin = addSubmodelInterface(pinNames[i], logicWidth, 0, pinDistance / 2 + i * pinDistance);
+                               Pin submodelPin = super.addSubmodelInterface(pinNames[i], logicWidth, 0, pinDistance / 2 + i * pinDistance);
                                inputSubmodelPins.add(submodelPin);
                                inputSupermodelPins.add(getSupermodelPin(submodelPin));
                        }
@@ -73,8 +73,8 @@ public class SimpleRectangularSubmodelComponent extends SubmodelComponent
                {
                        if (!inputSubmodelPins.get(i).name.equals(pinNames[i]))
                        {
-                               removeSubmodelInterface(inputSupermodelPins.get(i));
-                               Pin submodelPin = addSubmodelInterface(pinNames[i], logicWidth, 0, pinDistance / 2 + i * pinDistance);
+                               super.removeSubmodelInterface(inputSupermodelPins.get(i));
+                               Pin submodelPin = super.addSubmodelInterface(pinNames[i], logicWidth, 0, pinDistance / 2 + i * pinDistance);
                                inputSubmodelPins.set(i, submodelPin);
                                inputSupermodelPins.set(i, getSupermodelPin(submodelPin));
                        }
@@ -85,17 +85,17 @@ public class SimpleRectangularSubmodelComponent extends SubmodelComponent
        {
                int outputCount = pinNames.length;
                int oldOutputCount = outputSupermodelPins.size();
-               setSize(width, Math.max(inputSupermodelPins.size(), outputCount) * pinDistance);
+               super.setSize(width, Math.max(inputSupermodelPins.size(), outputCount) * pinDistance);
                if (oldOutputCount > outputCount)
                        while (outputSupermodelPins.size() > outputCount)
                        {
                                outputSubmodelPins.remove(outputCount);
-                               removeSubmodelInterface(outputSupermodelPins.get(outputCount));
+                               super.removeSubmodelInterface(outputSupermodelPins.get(outputCount));
                        }
                else if (oldOutputCount < outputCount)
                        for (int i = oldOutputCount; i < outputCount; i++)
                        {
-                               Pin submodelPin = addSubmodelInterface(pinNames[i], logicWidth, width, pinDistance / 2 + i * pinDistance);
+                               Pin submodelPin = super.addSubmodelInterface(pinNames[i], logicWidth, width, pinDistance / 2 + i * pinDistance);
                                outputSubmodelPins.add(submodelPin);
                                outputSupermodelPins.add(getSupermodelPin(submodelPin));
                        }
@@ -103,8 +103,8 @@ public class SimpleRectangularSubmodelComponent extends SubmodelComponent
                {
                        if (!outputSubmodelPins.get(i).name.equals(pinNames[i]))
                        {
-                               removeSubmodelInterface(outputSupermodelPins.get(i));
-                               Pin submodelPin = addSubmodelInterface(pinNames[i], logicWidth, width, pinDistance / 2 + i * pinDistance);
+                               super.removeSubmodelInterface(outputSupermodelPins.get(i));
+                               Pin submodelPin = super.addSubmodelInterface(pinNames[i], logicWidth, width, pinDistance / 2 + i * pinDistance);
                                outputSubmodelPins.set(i, submodelPin);
                                outputSupermodelPins.set(i, getSupermodelPin(submodelPin));
                        }
@@ -177,4 +177,25 @@ public class SimpleRectangularSubmodelComponent extends SubmodelComponent
                ret.specialized = m;
                return ret;
        }
+
+       @Override
+       protected Pin addSubmodelInterface(String name, int logicWidth, double relX, double relY)
+       {
+               throw new UnsupportedOperationException(
+                               "Can't add submodel interfaces to a SimpleRectangularSubmodelComponent directly, call setInputPins / setOutputPins instead");
+       }
+
+       @Override
+       protected void removeSubmodelInterface(Pin supermodelPin)
+       {
+               throw new UnsupportedOperationException(
+                               "Can't remove submodel interfaces of a SimpleRectangularSubmodelComponent directly, call setInputPins / setOutputPins instead");
+       }
+
+       @Override
+       protected void setSize(double width, double height)
+       {
+               throw new UnsupportedOperationException(
+                               "Can't set the size of a SimpleRectangularSubmodelComponent directly, call setInputPins / setOutputPins instead");
+       }
 }
\ No newline at end of file
index 9fa933b..cfa505e 100644 (file)
@@ -82,7 +82,7 @@ public abstract class SubmodelComponent extends GUIComponent
                submodelInterface.addPin(submodelPin);
 
                MovablePin supermodelPin = new MovablePin(this, name, logicWidth, relX, relY);
-               addPin(supermodelPin);
+               super.addPin(supermodelPin);
 
                submodelPinsPerSupermodelPin.put(supermodelPin, submodelPin);
                supermodelPinsPerSubmodelPin.put(submodelPin, supermodelPin);
@@ -104,7 +104,7 @@ public abstract class SubmodelComponent extends GUIComponent
 
        protected void removeSubmodelInterface(Pin supermodelPin)
        {
-               removePin(supermodelPin);
+               super.removePin(supermodelPin);
                Pin submodelPin = getSubmodelMovablePin(supermodelPin);
                submodelInterface.removePin(submodelPin);
 
@@ -269,4 +269,16 @@ public abstract class SubmodelComponent extends GUIComponent
                params.innerWires = wires;
                return params;
        }
+
+       @Override
+       protected void addPin(Pin pin)
+       {
+               throw new UnsupportedOperationException("Can't add pins to a SubmodelComponent directly, call addSubmodelInterface instead");
+       }
+
+       @Override
+       protected void removePin(Pin pin)
+       {
+               throw new UnsupportedOperationException("Can't remove pins of a SubmodelComponent directly, call removeSubmodelInterface instead");
+       }
 }
\ No newline at end of file