From e1e1e3722dcfc79110c0d9d7d040ea741d35e4c8 Mon Sep 17 00:00:00 2001 From: Michael Musenbrock Date: Mon, 11 Jun 2018 17:46:20 +0200 Subject: [PATCH 01/67] [JENKINS-208] Use emulator_config values from current jobs --- buildScripts/emulator_config.ini | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/buildScripts/emulator_config.ini b/buildScripts/emulator_config.ini index 82af214819c..8483d38420c 100644 --- a/buildScripts/emulator_config.ini +++ b/buildScripts/emulator_config.ini @@ -2,16 +2,18 @@ system_image=system-images;android-24;default;x86_64 ## properties written to the avd config, prefix here with prop, so the script knows where to use them prop.hw.camera=yes -prop.hw.ramSize=800 +prop.hw.ramSize=2048 prop.hw.gpu.enabled=yes prop.hw.camera.front=emulated prop.hw.camera.back=emulated prop.hw.gps=yes +prop.hw.mainKeys=no +prop.hw.keyboard=yes prop.disk.dataPartition.size=512M ## dpi -screen.density=xhdpi +screen.density=xxhdpi ## sdcard sdcard.size=200M ## AVD startup -screen.resolution=768x1280 +screen.resolution=1080x1920 device.language=en_US From 7c85babb569f48fbaa10236bdd7436bdc7c71bca Mon Sep 17 00:00:00 2001 From: Robert Painsi Date: Sun, 24 Jun 2018 19:24:22 +0200 Subject: [PATCH 02/67] Add tests for UniqueNameProvider --- .../test/utils/UniqueNameProviderTest.java | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 catroid/src/androidTest/java/org/catrobat/catroid/test/utils/UniqueNameProviderTest.java diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/UniqueNameProviderTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/UniqueNameProviderTest.java new file mode 100644 index 00000000000..ff8b71721cd --- /dev/null +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/UniqueNameProviderTest.java @@ -0,0 +1,80 @@ +/* + * Catroid: An on-device visual programming system for Android devices + * Copyright (C) 2010-2018 The Catrobat Team + * () + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * An additional term exception under section 7 of the GNU Affero + * General Public License, version 3, is available at + * http://developer.catrobat.org/license_additional_term + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package org.catrobat.catroid.test.utils; + +import com.google.common.collect.Lists; + +import org.catrobat.catroid.ui.recyclerview.util.UniqueNameProvider; +import org.junit.Before; +import org.junit.Test; + +import java.util.ArrayList; + +import static org.junit.Assert.assertEquals; + +public class UniqueNameProviderTest { + + private UniqueNameProvider uniqueNameProvider; + + @Before + public void setUp() { + uniqueNameProvider = new UniqueNameProvider(); + } + + @Test + public void testNewName() { + assertEquals("Lion", + uniqueNameProvider.getUniqueName("Lion", Lists.newArrayList("Zebra", "Giraffe"))); + } + + @Test + public void testNewNameWithEmptyScope() { + assertEquals("Object", + uniqueNameProvider.getUniqueName("Object", new ArrayList())); + } + + @Test + public void testNameInScope() { + assertEquals("Object (1)", + uniqueNameProvider.getUniqueName("Object", Lists.newArrayList("Object"))); + } + + @Test + public void testNameAndEnumerationsInScope() { + assertEquals("Object (3)", + uniqueNameProvider.getUniqueName("Object", Lists.newArrayList("Object", "Object (1)", "Object (2)"))); + } + + @Test + public void testGapInEnumeration() { + assertEquals("Object (2)", + uniqueNameProvider.getUniqueName("Object", Lists.newArrayList("Object", "Object (1)", "Object (3)"))); + } + + @Test + public void testNewNameEnumerationGreaterThanOrigin() { + assertEquals("Object (4)", + uniqueNameProvider.getUniqueName("Object (3)", Lists.newArrayList("Object (3)"))); + } +} From 8d2935bf77ad0e86d0565f40d08acf3cf2d3e648 Mon Sep 17 00:00:00 2001 From: Robert Painsi Date: Sun, 24 Jun 2018 19:24:53 +0200 Subject: [PATCH 03/67] Simplify UniqueNameProvider by using regex groups --- .../ui/recyclerview/util/UniqueNameProvider.java | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/catroid/src/main/java/org/catrobat/catroid/ui/recyclerview/util/UniqueNameProvider.java b/catroid/src/main/java/org/catrobat/catroid/ui/recyclerview/util/UniqueNameProvider.java index e19746358b9..34cd82ef5aa 100644 --- a/catroid/src/main/java/org/catrobat/catroid/ui/recyclerview/util/UniqueNameProvider.java +++ b/catroid/src/main/java/org/catrobat/catroid/ui/recyclerview/util/UniqueNameProvider.java @@ -34,18 +34,14 @@ public String getUniqueName(String name, List scope) { return name; } - Pattern pattern = Pattern.compile("(\\(\\d+\\))"); + Pattern pattern = Pattern.compile("\\((\\d+)\\)"); Matcher matcher = pattern.matcher(name); int n = 1; if (matcher.find()) { - String match = matcher.group(0); - name = name.replace(match, ""); - name = name.trim(); - match = match.replace("(", ""); - match = match.replace(")", ""); - n = Integer.parseInt(match); + name = name.replace(matcher.group(0), "").trim(); + n = Integer.parseInt(matcher.group(1)); } while (n < Integer.MAX_VALUE) { From f6af4d6b5e62fcc72ab30b496559429503899823 Mon Sep 17 00:00:00 2001 From: Patrick Steyer Date: Fri, 18 May 2018 16:35:16 +0200 Subject: [PATCH 04/67] CAT-2717 Consistent pen size over any screen - thickness approximately 0.5mm for the default pen size --- .../brick/app/BrickValueParameterTest.java | 2 +- .../catrobat/catroid/common/BrickValues.java | 2 +- .../org/catrobat/catroid/stage/PenActor.java | 21 ++++++++++++++++--- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/BrickValueParameterTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/BrickValueParameterTest.java index 96a5284bf64..822584d4acd 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/BrickValueParameterTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/BrickValueParameterTest.java @@ -617,7 +617,7 @@ public void testPenBricksDefaultValues() { checkIfBrickAtPositionShowsText(SetPenSizeBrick.class, 0, R.string.brick_pen_size); - checkIfBrickShowsText(SetPenSizeBrick.class, "4"); + checkIfBrickShowsText(SetPenSizeBrick.class, "3.15"); checkIfBrickShowsText(ClearBackgroundBrick.class, R.string.brick_clear_background); } diff --git a/catroid/src/main/java/org/catrobat/catroid/common/BrickValues.java b/catroid/src/main/java/org/catrobat/catroid/common/BrickValues.java index e9382cbc649..dfe92e44e87 100644 --- a/catroid/src/main/java/org/catrobat/catroid/common/BrickValues.java +++ b/catroid/src/main/java/org/catrobat/catroid/common/BrickValues.java @@ -68,7 +68,7 @@ public final class BrickValues { public static final int SET_LOOK_BY_INDEX = 1; //constants Pen - public static final Float PEN_SIZE = 4f; + public static final Float PEN_SIZE = 3.15f; public static final Color PEN_COLOR = Color.BLUE; //constants Sounds diff --git a/catroid/src/main/java/org/catrobat/catroid/stage/PenActor.java b/catroid/src/main/java/org/catrobat/catroid/stage/PenActor.java index 92aac25258d..f7185623a16 100644 --- a/catroid/src/main/java/org/catrobat/catroid/stage/PenActor.java +++ b/catroid/src/main/java/org/catrobat/catroid/stage/PenActor.java @@ -23,7 +23,9 @@ package org.catrobat.catroid.stage; +import android.content.res.Resources; import android.graphics.PointF; +import android.util.DisplayMetrics; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.Pixmap; @@ -43,6 +45,7 @@ public class PenActor extends Actor { private FrameBuffer buffer; private Batch bufferBatch; private OrthographicCamera camera; + private Float screenRatio; public PenActor() { XmlHeader header = ProjectManager.getInstance().getCurrentProject().getXmlHeader(); @@ -50,6 +53,7 @@ public PenActor() { bufferBatch = new SpriteBatch(); camera = new OrthographicCamera(header.virtualScreenWidth, header.virtualScreenHeight); bufferBatch.setProjectionMatrix(camera.combined); + screenRatio = calculateScreenRatio(); } @Override @@ -104,9 +108,10 @@ private void drawLinesForSprite(Sprite sprite) { renderer.begin(ShapeRenderer.ShapeType.Filled); if (pen.penDown && (pen.previousPoint.x != sprite.look.getX() || pen.previousPoint.y != sprite.look.getY())) { - renderer.circle(pen.previousPoint.x, pen.previousPoint.y, pen.penSize / 2); - renderer.rectLine(pen.previousPoint.x, pen.previousPoint.y, x, y, pen.penSize); - renderer.circle(x, y, pen.penSize / 2); + Float penSize = pen.penSize * screenRatio; + renderer.circle(pen.previousPoint.x, pen.previousPoint.y, penSize / 2); + renderer.rectLine(pen.previousPoint.x, pen.previousPoint.y, x, y, penSize); + renderer.circle(x, y, penSize / 2); } renderer.end(); @@ -124,4 +129,14 @@ public void dispose() { bufferBatch = null; } } + + private float calculateScreenRatio() { + DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics(); + float deviceDiagonalPixel = (float) Math.sqrt(Math.pow(metrics.widthPixels, 2) + Math.pow(metrics.heightPixels, 2)); + + XmlHeader header = ProjectManager.getInstance().getCurrentProject().getXmlHeader(); + float creatorDiagonalPixel = (float) Math.sqrt(Math.pow(header.getVirtualScreenWidth(), 2) + + Math.pow(header.getVirtualScreenHeight(), 2)); + return creatorDiagonalPixel / deviceDiagonalPixel; + } } From 4e2db2f3a51a7d39796d7e93ba88f4436e4a5bfb Mon Sep 17 00:00:00 2001 From: Robert Painsi Date: Sun, 15 Jul 2018 21:16:05 +0200 Subject: [PATCH 05/67] Only use StringRes for ToastUtils --- .../src/main/java/org/catrobat/catroid/utils/ToastUtil.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/catroid/src/main/java/org/catrobat/catroid/utils/ToastUtil.java b/catroid/src/main/java/org/catrobat/catroid/utils/ToastUtil.java index 792e835e210..8a400f39eca 100644 --- a/catroid/src/main/java/org/catrobat/catroid/utils/ToastUtil.java +++ b/catroid/src/main/java/org/catrobat/catroid/utils/ToastUtil.java @@ -23,6 +23,7 @@ package org.catrobat.catroid.utils; import android.content.Context; +import android.support.annotation.StringRes; import com.github.johnpersano.supertoasts.library.Style; import com.github.johnpersano.supertoasts.library.SuperToast; @@ -39,7 +40,7 @@ public static void showError(Context context, String message) { createToast(context, message, true); } - public static void showError(Context context, int messageId) { + public static void showError(Context context, @StringRes int messageId) { createToast(context, context.getResources().getString(messageId), true); } @@ -47,7 +48,7 @@ public static void showSuccess(Context context, String message) { createToast(context, message, false); } - public static void showSuccess(Context context, int messageId) { + public static void showSuccess(Context context, @StringRes int messageId) { createToast(context, context.getResources().getString(messageId), false); } From 4f4743954c5123f2def393dd925d061ad5e0e592 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch <84n4n4@gmail.com> Date: Mon, 23 Jul 2018 13:13:07 +0200 Subject: [PATCH 06/67] [GSOC18] Formula element speed up for big lists --- .../catroid/formulaeditor/FormulaElement.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/catroid/src/main/java/org/catrobat/catroid/formulaeditor/FormulaElement.java b/catroid/src/main/java/org/catrobat/catroid/formulaeditor/FormulaElement.java index 3a01582da56..6e6b4b4f3b2 100644 --- a/catroid/src/main/java/org/catrobat/catroid/formulaeditor/FormulaElement.java +++ b/catroid/src/main/java/org/catrobat/catroid/formulaeditor/FormulaElement.java @@ -348,28 +348,28 @@ private Object interpretMultipleItemsUserList(List userListValues) { } } } - String concatenatedList = ""; + + StringBuilder stringBuilder = new StringBuilder(userListStringValues.size()); boolean isFirstListItem = true; for (String userListStringValue : userListStringValues) { if (!concatenateWithoutWhitespace && !isFirstListItem) { - concatenatedList += " "; + stringBuilder.append(' '); } if (isFirstListItem) { isFirstListItem = false; } - concatenatedList += userListStringValue; + stringBuilder.append(userListStringValue); } - return concatenatedList; + return stringBuilder.toString(); } - private boolean isNumberAIntegerBetweenZeroAndNine(Double valueToCheck) { - for (Double index = 0.0; index <= 9.0; index++) { - if (valueToCheck.equals(index)) { - return true; - } - } - return false; + public boolean isNumberAIntegerBetweenZeroAndNine(Double valueToCheck) { + return !valueToCheck.isNaN() + && !valueToCheck.isInfinite() + && Math.floor(valueToCheck) == valueToCheck + && valueToCheck <= 9.0 + && valueToCheck >= 0.0; } private Object interpretUserVariable(Sprite sprite) { From 03a6c8f103b074b8b326cacfbdb6f7ace396e45b Mon Sep 17 00:00:00 2001 From: Thomas Schranz Date: Tue, 24 Jul 2018 13:21:56 +0200 Subject: [PATCH 07/67] [GSoC18] Refactored Scripts (Language version update) - removed isUserScript from StartScript. - removed unnecessary overrides. --- .../org/catrobat/catroid/ProjectManager.java | 3 +++ .../catrobat/catroid/common/Constants.java | 2 +- .../org/catrobat/catroid/content/Script.java | 22 ++++----------- .../catrobat/catroid/content/StartScript.java | 14 +--------- .../catroid/content/WhenClonedScript.java | 6 ----- .../content/WhenGamepadButtonScript.java | 6 ----- .../content/bricks/BroadcastBrick.java | 25 +++++++++-------- .../content/bricks/BroadcastMessageBrick.java | 9 ++----- .../bricks/BroadcastReceiverBrick.java | 12 ++++++--- .../content/bricks/BroadcastWaitBrick.java | 15 +++++------ .../catroid/content/bricks/ScriptBrick.java | 1 + .../bricks/UserScriptDefinitionBrick.java | 2 +- .../bricks/WhenBackgroundChangesBrick.java | 6 ++--- .../catroid/content/bricks/WhenBrick.java | 15 +++-------- .../content/bricks/WhenClonedBrick.java | 15 +++-------- .../content/bricks/WhenConditionBrick.java | 5 ++-- .../bricks/WhenGamepadButtonBrick.java | 3 ++- .../catroid/content/bricks/WhenNfcBrick.java | 8 +++--- .../content/bricks/WhenTouchDownBrick.java | 27 ++----------------- .../catroid/io/XstreamSerializer.java | 1 + .../bricks/CollisionReceiverBrick.java | 6 ++--- 21 files changed, 63 insertions(+), 140 deletions(-) diff --git a/catroid/src/main/java/org/catrobat/catroid/ProjectManager.java b/catroid/src/main/java/org/catrobat/catroid/ProjectManager.java index 72e3aeb6078..f25e99e756a 100644 --- a/catroid/src/main/java/org/catrobat/catroid/ProjectManager.java +++ b/catroid/src/main/java/org/catrobat/catroid/ProjectManager.java @@ -162,6 +162,9 @@ public void loadProject(String projectName, Context context) throws LoadingProje project.setCatrobatLanguageVersion(0.996f); } if (project.getCatrobatLanguageVersion() == 0.996f) { + project.setCatrobatLanguageVersion(0.997f); + } + if (project.getCatrobatLanguageVersion() == 0.997f) { project.setCatrobatLanguageVersion(Constants.CURRENT_CATROBAT_LANGUAGE_VERSION); } diff --git a/catroid/src/main/java/org/catrobat/catroid/common/Constants.java b/catroid/src/main/java/org/catrobat/catroid/common/Constants.java index c8f2fa1e9ca..e3c4222fe19 100644 --- a/catroid/src/main/java/org/catrobat/catroid/common/Constants.java +++ b/catroid/src/main/java/org/catrobat/catroid/common/Constants.java @@ -32,7 +32,7 @@ public final class Constants { - public static final float CURRENT_CATROBAT_LANGUAGE_VERSION = Float.valueOf(0.996f); + public static final float CURRENT_CATROBAT_LANGUAGE_VERSION = Float.valueOf(0.997f); public static final String REMOTE_DISPLAY_APP_ID = "CEBB9229"; public static final int CAST_CONNECTION_TIMEOUT = 5000; //in milliseconds diff --git a/catroid/src/main/java/org/catrobat/catroid/content/Script.java b/catroid/src/main/java/org/catrobat/catroid/content/Script.java index 2becf3be84f..1d7a2d7bf13 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/Script.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/Script.java @@ -43,18 +43,16 @@ public abstract class Script implements Serializable { private static final long serialVersionUID = 1L; - protected ArrayList brickList; - protected transient ScriptBrick brick; + protected ArrayList brickList = new ArrayList<>(); protected boolean commentedOut = false; - protected Script() { - brickList = new ArrayList<>(); - } + protected transient ScriptBrick brick; public ArrayList getBrickList() { return brickList; } + @Override public abstract Script clone() throws CloneNotSupportedException; public abstract EventId createEventId(Sprite sprite); @@ -121,10 +119,6 @@ public List cloneBrickList() throws CloneNotSupportedException { return copies; } - protected Object readResolve() { - return this; - } - public abstract ScriptBrick getScriptBrick(); public void run(Sprite sprite, ScriptSequenceAction sequence) { @@ -187,20 +181,14 @@ public Brick getBrick(int index) { return brickList.get(index); } - public void setBrick(ScriptBrick brick) { - this.brick = brick; - } - public boolean isCommentedOut() { return commentedOut; } public void setCommentedOut(boolean commentedOut) { this.commentedOut = commentedOut; - if (commentedOut) { - for (Brick brick : brickList) { - brick.setCommentedOut(commentedOut); - } + for (Brick brick : brickList) { + brick.setCommentedOut(commentedOut); } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/StartScript.java b/catroid/src/main/java/org/catrobat/catroid/content/StartScript.java index 8b948235704..02d88616e7d 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/StartScript.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/StartScript.java @@ -29,26 +29,14 @@ public class StartScript extends Script { private static final long serialVersionUID = 1L; - private boolean isUserScript; public StartScript() { - super(); - } - - public StartScript(boolean isUserScript) { - this.isUserScript = isUserScript; } public StartScript(WhenStartedBrick brick) { this.brick = brick; } - @Override - protected Object readResolve() { - super.readResolve(); - return this; - } - @Override public ScriptBrick getScriptBrick() { if (brick == null) { @@ -60,7 +48,7 @@ public ScriptBrick getScriptBrick() { @Override public Script clone() throws CloneNotSupportedException { - Script clone = new StartScript(isUserScript); + Script clone = new StartScript(); clone.getBrickList().addAll(cloneBrickList()); return clone; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/WhenClonedScript.java b/catroid/src/main/java/org/catrobat/catroid/content/WhenClonedScript.java index e03e57480f9..1844293090a 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/WhenClonedScript.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/WhenClonedScript.java @@ -30,12 +30,6 @@ public class WhenClonedScript extends Script { private static final long serialVersionUID = 1L; - @Override - protected Object readResolve() { - super.readResolve(); - return this; - } - @Override public ScriptBrick getScriptBrick() { if (brick == null) { diff --git a/catroid/src/main/java/org/catrobat/catroid/content/WhenGamepadButtonScript.java b/catroid/src/main/java/org/catrobat/catroid/content/WhenGamepadButtonScript.java index 9d4e99a3568..460f8503df1 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/WhenGamepadButtonScript.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/WhenGamepadButtonScript.java @@ -37,12 +37,6 @@ public WhenGamepadButtonScript(String action) { this.action = action; } - @Override - protected Object readResolve() { - super.readResolve(); - return this; - } - public void setAction(String action) { this.action = action; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastBrick.java index 5dad0244e0f..e203c9b5eb9 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastBrick.java @@ -30,19 +30,19 @@ import java.util.List; public class BroadcastBrick extends BroadcastMessageBrick { + private static final long serialVersionUID = 1L; protected String broadcastMessage; public BroadcastBrick(String broadcastMessage) { this.broadcastMessage = broadcastMessage; - this.viewId = R.layout.brick_broadcast; } - protected Object readResolve() { - super.readResolve(); - this.viewId = R.layout.brick_broadcast; - return this; + @Override + public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { + sequence.addAction(sprite.getActionFactory().createBroadcastAction(broadcastMessage, EventWrapper.NO_WAIT)); + return null; } @Override @@ -51,19 +51,18 @@ public Brick clone() { } @Override - public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createBroadcastAction(broadcastMessage, EventWrapper.NO_WAIT)); - return null; + public int getViewResource() { + return R.layout.brick_broadcast; } @Override - public void setBroadcastMessage(String newBroadcastMessage) { - this.broadcastMessage = newBroadcastMessage; - messageAdapter.add(newBroadcastMessage); + public String getBroadcastMessage() { + return broadcastMessage; } @Override - public String getBroadcastMessage() { - return broadcastMessage; + public void setBroadcastMessage(String broadcastMessage) { + this.broadcastMessage = broadcastMessage; + messageAdapter.add(broadcastMessage); } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastMessageBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastMessageBrick.java index 38c26b945f9..02ac429a4b1 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastMessageBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastMessageBrick.java @@ -32,10 +32,10 @@ import org.catrobat.catroid.ui.adapter.BroadcastSpinnerAdapter; import org.catrobat.catroid.ui.recyclerview.dialog.NewBroadcastMessageDialog; -public abstract class BroadcastMessageBrick extends BrickBaseType implements NewBroadcastMessageDialog.NewBroadcastMessageInterface { +public abstract class BroadcastMessageBrick extends BrickBaseType implements + NewBroadcastMessageDialog.NewBroadcastMessageInterface { transient BroadcastSpinnerAdapter messageAdapter; - transient int viewId; private transient int spinnerId = R.id.brick_broadcast_spinner; protected Object readResolve() { @@ -76,11 +76,6 @@ public View getPrototypeView(Context context) { return prototypeView; } - @Override - public int getViewResource() { - return viewId; - } - @Override public View getView(Context context) { super.getView(context); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastReceiverBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastReceiverBrick.java index 1d7beeb33d2..b63d13f58a1 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastReceiverBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastReceiverBrick.java @@ -31,15 +31,16 @@ import java.util.List; -public class BroadcastReceiverBrick extends BroadcastMessageBrick implements ScriptBrick, NewBroadcastMessageDialog.NewBroadcastMessageInterface { +public class BroadcastReceiverBrick extends BroadcastMessageBrick implements + ScriptBrick, NewBroadcastMessageDialog.NewBroadcastMessageInterface { + private static final long serialVersionUID = 1L; private final BroadcastScript broadcastScript; public BroadcastReceiverBrick(BroadcastScript broadcastScript) { this.broadcastScript = broadcastScript; - setCommentedOut(broadcastScript.isCommentedOut()); - this.viewId = R.layout.brick_broadcast_receive; + commentedOut = broadcastScript.isCommentedOut(); } @Override @@ -54,6 +55,11 @@ public List addActionToSequence(Sprite sprite, ScriptSeque return null; } + @Override + public int getViewResource() { + return R.layout.brick_broadcast_receive; + } + @Override public void setCommentedOut(boolean commentedOut) { super.setCommentedOut(commentedOut); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastWaitBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastWaitBrick.java index e3ada35d5cc..02405198774 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastWaitBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastWaitBrick.java @@ -30,17 +30,17 @@ import java.util.List; public class BroadcastWaitBrick extends BroadcastBrick { + private static final long serialVersionUID = 1L; public BroadcastWaitBrick(String broadcastMessage) { super(broadcastMessage); - this.viewId = R.layout.brick_broadcast_wait; } - protected Object readResolve() { - super.readResolve(); - this.viewId = R.layout.brick_broadcast_wait; - return this; + @Override + public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { + sequence.addAction(sprite.getActionFactory().createBroadcastAction(broadcastMessage, EventWrapper.WAIT)); + return null; } @Override @@ -49,8 +49,7 @@ public Brick clone() { } @Override - public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createBroadcastAction(broadcastMessage, EventWrapper.WAIT)); - return null; + public int getViewResource() { + return R.layout.brick_broadcast_wait; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ScriptBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ScriptBrick.java index b5177287c88..aa0fa9c8e2b 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ScriptBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ScriptBrick.java @@ -25,5 +25,6 @@ import org.catrobat.catroid.content.Script; public interface ScriptBrick extends AllowedAfterDeadEndBrick, Brick { + Script getScriptSafe(); } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/UserScriptDefinitionBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/UserScriptDefinitionBrick.java index f7911247f14..073b0e6bedb 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/UserScriptDefinitionBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/UserScriptDefinitionBrick.java @@ -70,7 +70,7 @@ public class UserScriptDefinitionBrick extends BrickBaseType implements ScriptBr private List userScriptDefinitionBrickElements; public UserScriptDefinitionBrick() { - this.script = new StartScript(true); + this.script = new StartScript(); this.userScriptDefinitionBrickElements = new ArrayList<>(); } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenBackgroundChangesBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenBackgroundChangesBrick.java index d35e4c92606..0cd6b075873 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenBackgroundChangesBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenBackgroundChangesBrick.java @@ -44,9 +44,7 @@ import java.util.List; public class WhenBackgroundChangesBrick extends BrickBaseType implements - ScriptBrick, - SpinnerAdapterWithNewOption.OnNewOptionInDropDownClickListener, - NewItemInterface { + ScriptBrick, SpinnerAdapterWithNewOption.OnNewOptionInDropDownClickListener, NewItemInterface { private static final long serialVersionUID = 1L; @@ -74,7 +72,7 @@ public void setLook(LookData lookData) { @Override public Script getScriptSafe() { if (script == null) { - this.script = new WhenBackgroundChangesScript(); + script = new WhenBackgroundChangesScript(); } return script; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenBrick.java index 6282fe48fc0..98a01db8c51 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenBrick.java @@ -22,9 +22,6 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; - import org.catrobat.catroid.R; import org.catrobat.catroid.content.Script; import org.catrobat.catroid.content.Sprite; @@ -38,6 +35,9 @@ public class WhenBrick extends BrickBaseType implements ScriptBrick { protected WhenScript whenScript; private static final long serialVersionUID = 1L; + public WhenBrick() { + } + public WhenBrick(WhenScript whenScript) { this.whenScript = whenScript; @@ -46,20 +46,11 @@ public WhenBrick(WhenScript whenScript) { } } - public WhenBrick() { - } - @Override public int getViewResource() { return R.layout.brick_when; } - @Override - public View getView(final Context context) { - super.getView(context); - return view; - } - @Override public Brick clone() { return new WhenBrick(null); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenClonedBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenClonedBrick.java index 8636c88e898..9b206ff196b 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenClonedBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenClonedBrick.java @@ -22,9 +22,6 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; - import org.catrobat.catroid.R; import org.catrobat.catroid.content.Script; import org.catrobat.catroid.content.Sprite; @@ -39,11 +36,11 @@ public class WhenClonedBrick extends BrickBaseType implements ScriptBrick { protected WhenClonedScript whenClonedScript; private static final long serialVersionUID = 1L; - public WhenClonedBrick(WhenClonedScript whenScript) { - this.whenClonedScript = whenScript; + public WhenClonedBrick() { } - public WhenClonedBrick() { + public WhenClonedBrick(WhenClonedScript whenScript) { + this.whenClonedScript = whenScript; } @Override @@ -51,12 +48,6 @@ public int getViewResource() { return R.layout.brick_when_cloned; } - @Override - public View getView(final Context context) { - super.getView(context); - return view; - } - @Override public Brick clone() { return new WhenClonedBrick(null); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenConditionBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenConditionBrick.java index 0bd18a10777..fb80de9a354 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenConditionBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenConditionBrick.java @@ -79,8 +79,7 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - BrickViewProvider.setAlphaOnView(view, alphaValue); - TextView conditionEditText = (TextView) view.findViewById(R.id.brick_when_condition_edit_text); + TextView conditionEditText = view.findViewById(R.id.brick_when_condition_edit_text); getFormulaWithBrickField(BrickField.IF_CONDITION).setTextFieldId(R.id.brick_when_condition_edit_text); getFormulaWithBrickField(BrickField.IF_CONDITION).refreshTextField(view); @@ -97,7 +96,7 @@ public Formula getConditionFormula() { @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - TextView textView = (TextView) prototypeView.findViewById(R.id.brick_when_condition_edit_text); + TextView textView = prototypeView.findViewById(R.id.brick_when_condition_edit_text); textView.setText(BrickValues.IF_CONDITION); return prototypeView; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenGamepadButtonBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenGamepadButtonBrick.java index 791aac8a605..e916a609cef 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenGamepadButtonBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenGamepadButtonBrick.java @@ -40,6 +40,7 @@ import java.util.List; public class WhenGamepadButtonBrick extends BrickBaseType implements ScriptBrick { + private static final long serialVersionUID = 1L; private WhenGamepadButtonScript whenGamepadButtonScript; private List actions = Arrays.asList(CatroidApplication.getAppContext().getResources().getStringArray(R.array.gamepad_buttons_array)); @@ -61,7 +62,7 @@ public int getViewResource() { @Override public View getView(final Context context) { super.getView(context); - final Spinner actionSpinner = (Spinner) view.findViewById(R.id.brick_when_gamepad_button_spinner); + final Spinner actionSpinner = view.findViewById(R.id.brick_when_gamepad_button_spinner); ArrayAdapter arrayAdapter = ArrayAdapter.createFromResource(context, R.array.gamepad_buttons_array, android.R.layout.simple_spinner_item); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenNfcBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenNfcBrick.java index bf214114ea2..211905c2b4a 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenNfcBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenNfcBrick.java @@ -47,7 +47,6 @@ public class WhenNfcBrick extends BrickBaseType implements ScriptBrick { protected WhenNfcScript whenNfcScript; - private transient View prototypeView; private transient NfcTagData nfcTag; private transient NfcTagData oldSelectedNfcTag; private static final long serialVersionUID = 1L; @@ -93,7 +92,7 @@ public View getView(final Context context) { whenNfcScript = new WhenNfcScript(nfcTag); } super.getView(context); - final Spinner nfcSpinner = (Spinner) view.findViewById(R.id.brick_when_nfc_spinner); + final Spinner nfcSpinner = view.findViewById(R.id.brick_when_nfc_spinner); final ArrayAdapter spinnerAdapter = createNfcTagAdapter(context); @@ -179,8 +178,8 @@ private ArrayAdapter createNfcTagAdapter(Context context) { @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - Spinner nfcSpinner = (Spinner) prototypeView.findViewById(R.id.brick_when_nfc_spinner); + View prototypeView = super.getPrototypeView(context); + Spinner nfcSpinner = prototypeView.findViewById(R.id.brick_when_nfc_spinner); SpinnerAdapter nfcSpinnerAdapter = createNfcTagAdapter(context); //NfcTagContainer.getMessageAdapter(context); nfcSpinner.setAdapter(nfcSpinnerAdapter); @@ -240,7 +239,6 @@ public boolean hasStableIds() { public View getView(int paramInt, View paramView, ViewGroup paramViewGroup) { if (isTouchInDropDownView) { isTouchInDropDownView = false; - //TODO: Switch to NFC Tag Fragment } return spinnerAdapter.getView(paramInt, paramView, paramViewGroup); } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenTouchDownBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenTouchDownBrick.java index 93b606616e6..08c63483624 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenTouchDownBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenTouchDownBrick.java @@ -22,9 +22,6 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; - import org.catrobat.catroid.R; import org.catrobat.catroid.content.Script; import org.catrobat.catroid.content.Sprite; @@ -34,8 +31,8 @@ import java.util.List; public class WhenTouchDownBrick extends BrickBaseType implements ScriptBrick { + protected WhenTouchDownScript whenTouchDownScript; - private transient View prototypeView; private static final long serialVersionUID = 1L; public WhenTouchDownBrick() { @@ -53,7 +50,7 @@ public WhenTouchDownBrick(WhenTouchDownScript script) { @Override public Script getScriptSafe() { if (whenTouchDownScript == null) { - setWhenTouchDownScript(new WhenTouchDownScript()); + whenTouchDownScript = new WhenTouchDownScript(); } return whenTouchDownScript; } @@ -68,31 +65,11 @@ public int getViewResource() { return R.layout.brick_screen_touched; } - @Override - public View getView(final Context context) { - super.getView(context); - return view; - } - - @Override - public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - return prototypeView; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { return null; } - public WhenTouchDownScript getWhenTouchDownScript() { - return whenTouchDownScript; - } - - public void setWhenTouchDownScript(WhenTouchDownScript whenTouchDownScript) { - this.whenTouchDownScript = whenTouchDownScript; - } - @Override public void setCommentedOut(boolean commentedOut) { super.setCommentedOut(commentedOut); diff --git a/catroid/src/main/java/org/catrobat/catroid/io/XstreamSerializer.java b/catroid/src/main/java/org/catrobat/catroid/io/XstreamSerializer.java index 097358ed6f7..ef53d01555e 100644 --- a/catroid/src/main/java/org/catrobat/catroid/io/XstreamSerializer.java +++ b/catroid/src/main/java/org/catrobat/catroid/io/XstreamSerializer.java @@ -296,6 +296,7 @@ private void prepareXstream(Class projectClass, Class dataContainerClass) { xstream.omitField(RaspiInterruptScript.class, "receivedMessage"); xstream.omitField(WhenScript.class, "action"); + xstream.omitField(StartScript.class, "isUserScript"); xstream.alias("look", LookData.class); xstream.alias("droneLook", DroneVideoLookData.class); diff --git a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/CollisionReceiverBrick.java b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/CollisionReceiverBrick.java index cb038d6fb4d..9b041c3947c 100644 --- a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/CollisionReceiverBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/CollisionReceiverBrick.java @@ -78,7 +78,7 @@ public View getView(final Context context) { collisionScript = new CollisionScript(getSpriteToCollideWithName()); } - final Spinner broadcastSpinner = (Spinner) view.findViewById(R.id.brick_collision_receive_spinner); + final Spinner broadcastSpinner = view.findViewById(R.id.brick_collision_receive_spinner); broadcastSpinner.setAdapter(getCollisionObjectAdapter(context)); broadcastSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { @@ -104,9 +104,9 @@ public void onNothingSelected(AdapterView arg0) { @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - Spinner broadcastReceiverSpinner = (Spinner) prototypeView.findViewById(R.id.brick_collision_receive_spinner); - + Spinner broadcastReceiverSpinner = prototypeView.findViewById(R.id.brick_collision_receive_spinner); SpinnerAdapter collisionReceiverSpinnerAdapter = getCollisionObjectAdapter(context); + broadcastReceiverSpinner.setAdapter(collisionReceiverSpinnerAdapter); setSpinnerSelection(broadcastReceiverSpinner); return prototypeView; From a3074235d6f3770968f83c31f7bd61fbad47cdc2 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch <84n4n4@gmail.com> Date: Thu, 21 Jun 2018 16:09:23 +0200 Subject: [PATCH 08/67] [GSOC18] Clean up exception handling in tests --- .../catroid/test/ProjectManagerTest.java | 22 +- .../catroid/test/common/LookDataTest.java | 8 +- .../ChangeBrightnessByNActionTest.java | 13 +- .../actions/ChangeColorByNActionTest.java | 13 +- .../actions/ChangeSizeByNActionTest.java | 13 +- .../ChangeTransparencyByNActionTest.java | 13 +- .../content/actions/ChangeXByNActionTest.java | 13 +- .../content/actions/ChangeYByNActionTest.java | 12 +- .../actions/ClearGraphicEffectActionTest.java | 13 +- .../actions/ComeToFrontActionTest.java | 13 +- .../content/actions/GlideToActionTest.java | 13 +- .../actions/GoNStepsBackActionTest.java | 13 +- .../GoToOtherSpritePositionActionTest.java | 13 +- .../actions/GoToRandomPositionActionTest.java | 12 +- .../actions/GoToTouchPositionActionTest.java | 13 +- .../test/content/actions/HideActionTest.java | 13 +- .../content/actions/IfLogicActionTest.java | 2 +- .../content/actions/PlaceAtBrickTest.java | 13 +- .../content/actions/PlaySoundActionTest.java | 6 +- .../content/actions/RepeatActionTest.java | 6 +- .../actions/SetBrightnessActionTest.java | 13 +- .../content/actions/SetColorActionTest.java | 13 +- .../content/actions/SetSizeToActionTest.java | 13 +- .../actions/SetTransparencyActionTest.java | 13 +- .../test/content/actions/SetXActionTest.java | 13 +- .../test/content/actions/SetYActionTest.java | 13 +- .../test/content/actions/ShowActionTest.java | 13 +- .../test/content/actions/SpeakActionTest.java | 8 +- .../actions/StopAllSoundsActionTest.java | 6 +- .../test/content/bricks/BrickCloneTest.java | 34 +-- .../test/content/project/ProjectTest.java | 5 +- .../catroid/test/content/sprite/LookTest.java | 10 +- .../mindstorms/ev3/LegoEV3SensorTest.java | 27 +- .../nxt/MindstormsConnectionTest.java | 4 +- .../FaceDetectionHandlerTest.java | 2 +- .../test/facedetection/FaceDetectorTest.java | 17 +- .../facedetection/IcsFaceDetectorTest.java | 105 ++----- .../SlowFaceDetectorCameraTest.java | 66 +++++ .../facedetection/SlowFaceDetectorTest.java | 78 ++--- .../formulaeditor/FormulaEditorTestUtil.java | 75 ++--- .../test/formulaeditor/InternFormulaTest.java | 20 +- .../InternFormulaTokenSelectionTest.java | 4 +- .../formulaeditor/InternFormulaUtilsTest.java | 1 - .../LookSensorValuesInterpretationTest.java | 37 +-- .../ParserTestErrorDedection.java | 9 +- .../formulaeditor/ParserTestFunctions.java | 15 +- .../test/formulaeditor/ParserTestObject.java | 20 +- .../formulaeditor/ParserTestOperators.java | 9 +- .../test/formulaeditor/ParserTestSensors.java | 26 +- .../ParserTestStringFunctions.java | 18 +- .../formulaeditor/ParserTestUserLists.java | 3 +- .../ParserTestUserVariables.java | 8 +- .../formulaeditor/SensorLoudnessTest.java | 2 +- .../test/io/CatroidFieldKeySorterTest.java | 20 +- .../catroid/test/io/SoundManagerTest.java | 30 +- .../test/io/XstreamSerializerTest.java | 27 +- .../test/physics/PhysicsBricksCloneTest.java | 17 +- .../physics/PhysicsCollisionBetweenTest.java | 4 +- .../catroid/test/physics/PhysicsLookTest.java | 171 ++++------- .../physics/PhysicsObjectCollisionTest.java | 2 +- .../test/physics/PhysicsObjectTest.java | 64 ++-- .../test/physics/PhysicsShapeBuilderTest.java | 36 +-- .../physics/PhysicsShapeScaleUtilsTest.java | 2 +- .../test/physics/PhysicsSpriteCloneTest.java | 14 +- .../test/physics/PhysicsWorldTest.java | 23 +- .../physics/actions/GravityActionTest.java | 11 +- .../IfOnEdgeBouncePhysicsActionTest.java | 12 +- .../actions/PhysicsObjectStateTest.java | 18 +- .../actions/SetBounceFactorActionTest.java | 7 +- .../physics/actions/SetGravityActionTest.java | 14 +- .../physics/actions/SetMassActionTest.java | 7 +- .../actions/TurnLeftRightSpeedActionTest.java | 10 +- .../HideActionAndCollisionTest.java | 13 +- .../scratchconverter/WebSocketClientTest.java | 21 +- .../protocol/JobHandlerTest.java | 4 - .../WebSocketMessageListenerTest.java | 28 +- .../CollisionFormulaConversionTest.java | 51 ++-- .../catroid/test/ui/ViewSwitchLockTest.java | 61 ++-- .../catroid/test/utils/PhysicsTestUtils.java | 10 +- .../catroid/test/utils/Reflection.java | 54 ++-- .../test/utils/SimulatedSensorManager.java | 278 ------------------ .../StatusBarNotificationManagerTest.java | 20 +- .../catroid/test/utils/TestUtils.java | 2 +- .../test/utiltests/ImageEditingTest.java | 99 ++----- .../test/utiltests/StringFinderTest.java | 27 +- .../catroid/test/utiltests/UtilsTest.java | 48 +-- .../reflection/ReflectionExceptionsTest.java | 199 +++++++++++++ .../{ => reflection}/ReflectionTest.java | 132 +-------- .../catroid/test/web/ServerCallsTest.java | 219 ++++++-------- .../BaseActivityInstrumentationRule.java | 10 +- 90 files changed, 1111 insertions(+), 1591 deletions(-) create mode 100644 catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/SlowFaceDetectorCameraTest.java delete mode 100644 catroid/src/androidTest/java/org/catrobat/catroid/test/utils/SimulatedSensorManager.java create mode 100644 catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/reflection/ReflectionExceptionsTest.java rename catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/{ => reflection}/ReflectionTest.java (62%) diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/ProjectManagerTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/ProjectManagerTest.java index edbb91ece7c..5da0090e63e 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/ProjectManagerTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/ProjectManagerTest.java @@ -38,7 +38,9 @@ import org.catrobat.catroid.utils.ScreenValueHandler; import org.junit.After; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import java.io.File; @@ -58,6 +60,9 @@ @RunWith(AndroidJUnit4.class) public class ProjectManagerTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + private static final String OLD_PROJECT = "OLD_PROJECT"; private static final String NEW_PROJECT = "NEW_PROJECT"; private static final String DOES_NOT_EXIST = "DOES_NOT_EXIST"; @@ -82,26 +87,20 @@ public void tearDown() throws Exception { } @Test - public void testShouldReturnFalseIfCatrobatLanguageVersionNotSupported() throws IOException { + public void testShouldReturnFalseIfCatrobatLanguageVersionNotSupported() throws IOException, ProjectException { TestUtils.createTestProjectOnLocalStorageWithCatrobatLanguageVersion(CATROBAT_LANGUAGE_VERSION_NOT_SUPPORTED); try { projectManager.loadProject(TestUtils.DEFAULT_TEST_PROJECT_NAME, InstrumentationRegistry.getTargetContext()); fail("Project shouldn't be compatible"); } catch (CompatibilityProjectException expected) { - } catch (ProjectException projectException) { - fail("Failed to identify incompatible project"); } TestUtils.deleteProjects(); TestUtils.createTestProjectOnLocalStorageWithCatrobatLanguageVersion(CURRENT_CATROBAT_LANGUAGE_VERSION); - try { - projectManager.loadProject(TestUtils.DEFAULT_TEST_PROJECT_NAME, InstrumentationRegistry.getTargetContext()); - } catch (ProjectException projectException) { - fail("Error loading project"); - } + projectManager.loadProject(TestUtils.DEFAULT_TEST_PROJECT_NAME, InstrumentationRegistry.getTargetContext()); } @Test @@ -133,11 +132,8 @@ public void testShouldKeepExistingProjectIfCannotLoadNewProject() throws IOExcep public void testLoadProjectException() throws Exception { assertNull(projectManager.getCurrentProject()); - try { - projectManager.loadProject(DOES_NOT_EXIST, InstrumentationRegistry.getTargetContext()); - fail("Expected ProjectException while loading project " + DOES_NOT_EXIST); - } catch (ProjectException expected) { - } + exception.expect(ProjectException.class); + projectManager.loadProject(DOES_NOT_EXIST, InstrumentationRegistry.getTargetContext()); } @Test diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/common/LookDataTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/common/LookDataTest.java index 732e19eeb1c..add0e2e980f 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/common/LookDataTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/common/LookDataTest.java @@ -33,8 +33,6 @@ import org.junit.Test; import org.junit.runner.RunWith; -import static junit.framework.Assert.fail; - import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -61,10 +59,6 @@ public void testPixmapAndTextureRegionDisposal() { @Test public void testNoExceptionThrownOnCallingResetLookData() { LookData lookData = new LookData(); - try { - lookData.dispose(); - } catch (Exception error) { - fail(); - } + lookData.dispose(); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ChangeBrightnessByNActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ChangeBrightnessByNActionTest.java index 5e2aefdcaca..9b9843d153b 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ChangeBrightnessByNActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ChangeBrightnessByNActionTest.java @@ -30,15 +30,19 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.formulaeditor.Formula; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class ChangeBrightnessByNActionTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + private static final float INITIALIZED_VALUE = 100f; private static final String NOT_NUMERICAL_STRING = "brightness"; private static final float BRIGHTER_VALUE = 50.5f; @@ -64,11 +68,8 @@ public void testNormalBehavior() { @Test public void testNullSprite() { Action action = sprite.getActionFactory().createChangeBrightnessByNAction(null, new Formula(BRIGHTER_VALUE)); - try { - action.act(1.0f); - fail("Execution of ChangeBrightnessByNBrick with null Sprite did not cause a NullPointerException to be thrown"); - } catch (NullPointerException expected) { - } + exception.expect(NullPointerException.class); + action.act(1.0f); } @Test diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ChangeColorByNActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ChangeColorByNActionTest.java index cb02d07e786..0c6698eb5a3 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ChangeColorByNActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ChangeColorByNActionTest.java @@ -30,15 +30,19 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.formulaeditor.Formula; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class ChangeColorByNActionTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + private static final float INITIALIZED_VALUE = 0; private static final String NOT_NUMERICAL_STRING = "color"; private static final float DELTA = 1; @@ -65,11 +69,8 @@ public void testNormalBehavior() { @Test public void testNullSprite() { Action action = sprite.getActionFactory().createChangeColorByNAction(null, new Formula(DELTA)); - try { - action.act(1.0f); - fail("Execution of ChangeColorByN with null Sprite did not cause a NullPointerException to be thrown"); - } catch (NullPointerException expected) { - } + exception.expect(NullPointerException.class); + action.act(1.0f); } @Test diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ChangeSizeByNActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ChangeSizeByNActionTest.java index 04805c7591d..e9c227718a6 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ChangeSizeByNActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ChangeSizeByNActionTest.java @@ -31,15 +31,19 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.formulaeditor.Formula; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class ChangeSizeByNActionTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + private static final float INITIALIZED_VALUE = 100f; private static final float CHANGE_VALUE = 44.4f; private static final String NOT_NUMERICAL_STRING = "size"; @@ -67,11 +71,8 @@ public void testSize() { public void testNullSprite() { ActionFactory factory = new ActionFactory(); Action action = factory.createChangeSizeByNAction(null, new Formula(CHANGE_SIZE)); - try { - action.act(1.0f); - fail("Execution of ChangeSizeByNBrick with null Sprite did not cause a NullPointerException to be thrown"); - } catch (NullPointerException expected) { - } + exception.expect(NullPointerException.class); + action.act(1.0f); } @Test diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ChangeTransparencyByNActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ChangeTransparencyByNActionTest.java index f1071ff6973..6b9a4b78461 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ChangeTransparencyByNActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ChangeTransparencyByNActionTest.java @@ -30,15 +30,19 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.formulaeditor.Formula; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class ChangeTransparencyByNActionTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + private static final float DELTA = 0.01f; private static final float INCREASE_VALUE = 98.7f; private static final float DECREASE_VALUE = -33.3f; @@ -64,11 +68,8 @@ public void testNormalBehavior() { @Test public void testNullSprite() { Action action = sprite.getActionFactory().createChangeTransparencyByNAction(null, new Formula(INCREASE_VALUE)); - try { - action.act(1.0f); - fail("Execution of ChangeTransparencyByNBrick with null Sprite did not cause a NullPointerException to be thrown"); - } catch (NullPointerException expected) { - } + exception.expect(NullPointerException.class); + action.act(1.0f); } @Test diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ChangeXByNActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ChangeXByNActionTest.java index b23d6131068..0c227ce9519 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ChangeXByNActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ChangeXByNActionTest.java @@ -30,15 +30,19 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.formulaeditor.Formula; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class ChangeXByNActionTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + private static final float CHANGE_VALUE = 55.5f; private static final String NOT_NUMERICAL_STRING = "xPosition"; private Sprite sprite; @@ -58,11 +62,8 @@ public void testNormalBehavior() { @Test public void testNullSprite() { Action action = sprite.getActionFactory().createChangeXByNAction(null, new Formula(CHANGE_VALUE)); - try { - action.act(1.0f); - fail("Execution of ChangeXByNBrick with null Sprite did not cause a " + "NullPointerException to be thrown"); - } catch (NullPointerException expected) { - } + exception.expect(NullPointerException.class); + action.act(1.0f); } @Test diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ChangeYByNActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ChangeYByNActionTest.java index 26aaefa6ef4..349a6e20352 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ChangeYByNActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ChangeYByNActionTest.java @@ -30,14 +30,17 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.formulaeditor.Formula; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class ChangeYByNActionTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); private static final float CHANGE_VALUE = 66.6f; private static final String NOT_NUMERICAL_STRING = "yPosition"; @@ -59,11 +62,8 @@ public void testNormalBehavior() { @Test public void testNullSprite() { Action action = sprite.getActionFactory().createChangeYByNAction(null, new Formula(CHANGE_VALUE)); - try { - action.act(1.0f); - fail("Execution of ChangeYByNBrick with null Sprite did not cause a " + "NullPointerException to be thrown"); - } catch (NullPointerException expected) { - } + exception.expect(NullPointerException.class); + action.act(1.0f); } @Test diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ClearGraphicEffectActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ClearGraphicEffectActionTest.java index aa3bc571185..396e4bf0406 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ClearGraphicEffectActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ClearGraphicEffectActionTest.java @@ -29,15 +29,19 @@ import org.catrobat.catroid.content.ActionFactory; import org.catrobat.catroid.content.SingleSprite; import org.catrobat.catroid.content.Sprite; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class ClearGraphicEffectActionTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + @Test public void testClearGraphicEffect() { float value = 80f; @@ -58,10 +62,7 @@ public void testClearGraphicEffect() { public void testNullSprite() { ActionFactory factory = new ActionFactory(); Action action = factory.createClearGraphicEffectAction(null); - try { - action.act(1.0f); - fail("Execution of ClearGraphicEffectBrick with null Sprite did not cause a NullPointerException to be thrown"); - } catch (NullPointerException expected) { - } + exception.expect(NullPointerException.class); + action.act(1.0f); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ComeToFrontActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ComeToFrontActionTest.java index 183140a4c48..01b2c71f1fd 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ComeToFrontActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ComeToFrontActionTest.java @@ -35,18 +35,22 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.test.utils.TestUtils; import org.junit.After; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import java.util.List; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertTrue; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class ComeToFrontActionTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + private String projectName = "testProject"; @After @@ -122,11 +126,8 @@ public void testNullSprite() { ActionFactory factory = new ActionFactory(); Action action = factory.createComeToFrontAction(null); - try { - action.act(1.0f); - fail("Execution of ComeToFrontBrick with null Sprite did not cause a NullPointerException to be thrown"); - } catch (NullPointerException expected) { - } + exception.expect(NullPointerException.class); + action.act(1.0f); } @Test diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/GlideToActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/GlideToActionTest.java index dd519f5a553..1a126e46cbb 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/GlideToActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/GlideToActionTest.java @@ -31,15 +31,19 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.formulaeditor.Formula; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class GlideToActionTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + private static final float X_POSITION = 12f; private static final float Y_POSITION = 150f; private static final float DURATION = 225f; @@ -77,11 +81,8 @@ public void testNormalBehavior() throws InterruptedException { public void testNullActor() { ActionFactory factory = new ActionFactory(); Action action = factory.createGlideToAction(null, xPosition, yPosition, duration); - try { - action.act(1.0f); - fail("Execution of GlideToBrick with null Sprite did not cause a " + "NullPointerException to be thrown"); - } catch (NullPointerException expected) { - } + exception.expect(NullPointerException.class); + action.act(1.0f); } @Test diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/GoNStepsBackActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/GoNStepsBackActionTest.java index 9d06d1fbc49..705d37aa670 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/GoNStepsBackActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/GoNStepsBackActionTest.java @@ -36,18 +36,22 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.formulaeditor.Formula; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import java.util.List; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertTrue; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class GoNStepsBackActionTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + private static final int STEPS = 13; private static final String NOT_NUMERICAL_STRING = "NOT_NUMERICAL_STRING"; private final Formula steps = new Formula(STEPS); @@ -126,11 +130,8 @@ private void checkIfEveryZIndexUsedOnlyOnceFromZeroToNMinus1(List sprite public void testNullSprite() { ActionFactory factory = new ActionFactory(); Action action = factory.createGoNStepsBackAction(null, steps); - try { - action.act(1.0f); - fail("Execution of GoNStepsBackBrick with null Sprite did not cause a NullPointerException to be thrown"); - } catch (NullPointerException expected) { - } + exception.expect(NullPointerException.class); + action.act(1.0f); } @Test diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/GoToOtherSpritePositionActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/GoToOtherSpritePositionActionTest.java index 632919bd8cc..5bcaea47fce 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/GoToOtherSpritePositionActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/GoToOtherSpritePositionActionTest.java @@ -31,15 +31,19 @@ import org.catrobat.catroid.content.ActionFactory; import org.catrobat.catroid.content.Sprite; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class GoToOtherSpritePositionActionTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + private static final float DESTINATION_X_POSITION = 150f; private static final float DESTINATION_Y_POSITION = 300f; private Sprite sprite; @@ -75,10 +79,7 @@ public void testGoToOtherSpritePositionAction() throws InterruptedException { public void testNullActor() { ActionFactory factory = new ActionFactory(); Action action = factory.createGoToAction(null, destinationSprite, BrickValues.GO_TO_OTHER_SPRITE_POSITION); - try { - action.act(1.0f); - fail("Execution of GoToBrick with null Sprite did not cause a " + "NullPointerException to be thrown"); - } catch (NullPointerException expected) { - } + exception.expect(NullPointerException.class); + action.act(1.0f); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/GoToRandomPositionActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/GoToRandomPositionActionTest.java index 7dd9b66f953..8615d84be31 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/GoToRandomPositionActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/GoToRandomPositionActionTest.java @@ -32,14 +32,17 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.GoToRandomPositionAction; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class GoToRandomPositionActionTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); private Sprite sprite; private Sprite dummySprite; @@ -71,10 +74,7 @@ public void testGoToOtherSpriteAction() throws InterruptedException { public void testNullActor() { ActionFactory factory = new ActionFactory(); Action action = factory.createGoToAction(null, dummySprite, BrickValues.GO_TO_RANDOM_POSITION); - try { - action.act(1.0f); - fail("Execution of GoToBrick with null Sprite did not cause a " + "NullPointerException to be thrown"); - } catch (NullPointerException expected) { - } + exception.expect(NullPointerException.class); + action.act(1.0f); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/GoToTouchPositionActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/GoToTouchPositionActionTest.java index a5df301c70d..dc0de1f40a4 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/GoToTouchPositionActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/GoToTouchPositionActionTest.java @@ -32,15 +32,19 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.utils.TouchUtil; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class GoToTouchPositionActionTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + private static final float EXPECTED_X_POSITION = 20f; private static final float EXPECTED_Y_POSITION = 25f; private Sprite sprite; @@ -74,10 +78,7 @@ public void testGoToTouchPositionAction() throws InterruptedException { public void testNullActor() { ActionFactory factory = new ActionFactory(); Action action = factory.createGoToAction(null, dummySprite, BrickValues.GO_TO_TOUCH_POSITION); - try { - action.act(1.0f); - fail("Execution of GoToBrick with null Sprite did not cause a " + "NullPointerException to be thrown"); - } catch (NullPointerException expected) { - } + exception.expect(NullPointerException.class); + action.act(1.0f); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/HideActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/HideActionTest.java index 62539c0a2a3..d0830cbafb0 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/HideActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/HideActionTest.java @@ -29,16 +29,20 @@ import org.catrobat.catroid.content.ActionFactory; import org.catrobat.catroid.content.SingleSprite; import org.catrobat.catroid.content.Sprite; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertTrue; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class HideActionTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + @Test public void testHide() { Sprite sprite = new SingleSprite("new SingleSprite"); @@ -53,10 +57,7 @@ public void testHide() { public void testNullSprite() { ActionFactory factory = new ActionFactory(); Action action = factory.createHideAction(null); - try { - action.act(1.0f); - fail("Execution of HideBrick with null Sprite did not cause a NullPointerException to be thrown"); - } catch (NullPointerException expected) { - } + exception.expect(NullPointerException.class); + action.act(1.0f); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/IfLogicActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/IfLogicActionTest.java index a163023c56b..bfad4e061ff 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/IfLogicActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/IfLogicActionTest.java @@ -201,7 +201,7 @@ public void testBrickWithInValidStringFormula() { } @Test - public void testNullFormula() { + public void testNullFormula() throws Exception { Object userVariableExpected = userVariable.getValue(); Action ifAction = testSprite.getActionFactory().createSetVariableAction(testSprite, new Formula(IF_TRUE_VALUE), userVariable); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/PlaceAtBrickTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/PlaceAtBrickTest.java index f73aad4e566..ccd04a5a2aa 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/PlaceAtBrickTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/PlaceAtBrickTest.java @@ -28,15 +28,19 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.formulaeditor.Formula; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class PlaceAtBrickTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + private static final int Y_POSITION_VALUE = 200; private static final int X_POSITION_VALUE = 100; private Formula xPosition = new Formula(X_POSITION_VALUE); @@ -62,11 +66,8 @@ public void testNormalBehavior() { @Test public void testNullSprite() { - try { - sprite.getActionFactory().createPlaceAtAction(null, xPosition, yPosition).act(1.0f); - fail("Execution of PlaceAtBrick with null Sprite did not cause a " + "NullPointerException to be thrown"); - } catch (NullPointerException expected) { - } + exception.expect(NullPointerException.class); + sprite.getActionFactory().createPlaceAtAction(null, xPosition, yPosition).act(1.0f); } @Test diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/PlaySoundActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/PlaySoundActionTest.java index eb134ab1d98..2d193d2e0bf 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/PlaySoundActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/PlaySoundActionTest.java @@ -76,7 +76,7 @@ public void tearDown() throws Exception { } @Test - public void testPlaySound() throws InterruptedException { + public void testPlaySound() throws Exception { Sprite testSprite = new SingleSprite("testSprite"); SoundInfo soundInfo = createSoundInfo(soundFile); testSprite.getSoundList().add(soundInfo); @@ -91,7 +91,7 @@ public void testPlaySound() throws InterruptedException { } @Test - public void testPlaySimultaneousSounds() { + public void testPlaySimultaneousSounds() throws Exception { Sprite testSprite = new SingleSprite("testSprite"); SoundInfo soundInfo = createSoundInfo(soundFile); testSprite.getSoundList().add(soundInfo); @@ -128,7 +128,7 @@ private SoundInfo createSoundInfo(File soundFile) { } @SuppressWarnings("unchecked") - private List getMediaPlayers() { + private List getMediaPlayers() throws Exception { return (List) Reflection.getPrivateField(soundManager, "mediaPlayers"); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/RepeatActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/RepeatActionTest.java index 4d683e09ffe..3d1fd0557ac 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/RepeatActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/RepeatActionTest.java @@ -175,7 +175,7 @@ public void testNestedRepeatBrick() throws InterruptedException { } @Test - public void testNegativeRepeats() { + public void testNegativeRepeats() throws Exception { Sprite testSprite = new SingleSprite("sprite"); RepeatBrick repeatBrick = new RepeatBrick(-1); @@ -193,7 +193,7 @@ public void testNegativeRepeats() { } @Test - public void testZeroRepeats() { + public void testZeroRepeats() throws Exception { final float decoyDeltaY = -150f; final float expectedDeltaY = 150f; @@ -222,7 +222,7 @@ public void testBrickWithInValidStringFormula() { } @Test - public void testNullFormula() { + public void testNullFormula() throws Exception { Action repeatedAction = testSprite.getActionFactory().createSetXAction(testSprite, new Formula(10)); Action repeatAction = testSprite.getActionFactory().createRepeatAction(testSprite, null, repeatedAction); repeatAction.act(1.0f); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetBrightnessActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetBrightnessActionTest.java index 73fd014f10a..6351063f0e2 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetBrightnessActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetBrightnessActionTest.java @@ -30,15 +30,19 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.formulaeditor.Formula; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class SetBrightnessActionTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + private static final float BRIGHTNESS = 91f; private Formula brightness = new Formula(BRIGHTNESS); private static final String NOT_NUMERICAL_STRING = "NOT_NUMERICAL_STRING"; @@ -59,11 +63,8 @@ public void testBrightnessEffect() { @Test public void testNullSprite() { Action action = sprite.getActionFactory().createSetBrightnessAction(null, brightness); - try { - action.act(1.0f); - fail("Execution of SetBrightnessBrick with null Sprite did not cause a NullPointerException to be thrown"); - } catch (NullPointerException expected) { - } + exception.expect(NullPointerException.class); + action.act(1.0f); } @Test diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetColorActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetColorActionTest.java index 4795cbfbe70..8394a2f32ea 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetColorActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetColorActionTest.java @@ -31,15 +31,19 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.formulaeditor.Formula; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class SetColorActionTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + private static final float COLOR = 100.0f; private Formula color = new Formula(COLOR); private static final String NOT_NUMERICAL_STRING = "NOT_NUMERICAL_STRING"; @@ -70,11 +74,8 @@ public void testValueAboveMax() { @Test public void testNullSprite() { Action action = sprite.getActionFactory().createSetColorAction(null, color); - try { - action.act(1.0f); - fail("Execution of SetColorToBrick with null Sprite did not cause a NullPointerException to be thrown"); - } catch (NullPointerException expected) { - } + exception.expect(NullPointerException.class); + action.act(1.0f); } @Test diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetSizeToActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetSizeToActionTest.java index 2b6798b3838..3eabf589ef8 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetSizeToActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetSizeToActionTest.java @@ -31,15 +31,19 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.formulaeditor.Formula; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class SetSizeToActionTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + private static final float SIZE = 70.7f; private final Formula size = new Formula(SIZE); private static final String NOT_NUMERICAL_STRING = "NOT_NUMERICAL_STRING"; @@ -73,11 +77,8 @@ public void testNegativeSize() { public void testNullSprite() { ActionFactory factory = new ActionFactory(); Action action = factory.createSetSizeToAction(null, size); - try { - action.act(1.0f); - fail("Execution of SetSizeToBrick with null Sprite did not cause a NullPointerException to be thrown"); - } catch (NullPointerException expected) { - } + exception.expect(NullPointerException.class); + action.act(1.0f); } @Test diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetTransparencyActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetTransparencyActionTest.java index 3f3204aa9e6..8cbf3993def 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetTransparencyActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetTransparencyActionTest.java @@ -30,15 +30,19 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.formulaeditor.Formula; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class SetTransparencyActionTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + private static final float TRANSPARENCY = 91f; private Formula effect = new Formula(TRANSPARENCY); private static final String NOT_NUMERICAL_STRING = "NOT_NUMERICAL_STRING"; @@ -66,11 +70,8 @@ public void testTransparency() { @Test public void testNullSprite() { Action action = sprite.getActionFactory().createSetTransparencyAction(null, effect); - try { - action.act(1.0f); - fail("Execution of SetTransparencyBrick with null Sprite did not cause a NullPointerException to be thrown"); - } catch (NullPointerException expected) { - } + exception.expect(NullPointerException.class); + action.act(1.0f); } @Test diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetXActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetXActionTest.java index bf421a73640..63bc9115dec 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetXActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetXActionTest.java @@ -31,15 +31,19 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.formulaeditor.Formula; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class SetXActionTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + private static final float X_POSITION = 91.1f; private Formula xPosition = new Formula(X_POSITION); private static final String NOT_NUMERICAL_STRING = "NOT_NUMERICAL_STRING"; @@ -63,11 +67,8 @@ public void testNormalBehavior() { public void testNullSprite() { ActionFactory factory = new ActionFactory(); Action action = factory.createSetXAction(null, xPosition); - try { - action.act(1.0f); - fail("Execution of PlaceAtBrick with null Sprite did not cause a " + "NullPointerException to be thrown"); - } catch (NullPointerException expected) { - } + exception.expect(NullPointerException.class); + action.act(1.0f); } @Test diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetYActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetYActionTest.java index 0a73b314513..d102229ee92 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetYActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetYActionTest.java @@ -31,15 +31,19 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.formulaeditor.Formula; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class SetYActionTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + private static final float Y_POSITION = 73.3f; private Formula yPosition = new Formula(Y_POSITION); private static final String NOT_NUMERICAL_STRING = "NOT_NUMERICAL_STRING"; @@ -63,11 +67,8 @@ public void testNormalBehavior() { public void testNullSprite() { ActionFactory factory = new ActionFactory(); Action action = factory.createSetYAction(null, yPosition); - try { - action.act(1.0f); - fail("Execution of SetYBrick with null Sprite did not cause a NullPointerException to be thrown"); - } catch (NullPointerException expected) { - } + exception.expect(NullPointerException.class); + action.act(1.0f); } @Test diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ShowActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ShowActionTest.java index c46c6da2234..252fdf0f1da 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ShowActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/ShowActionTest.java @@ -29,16 +29,20 @@ import org.catrobat.catroid.content.ActionFactory; import org.catrobat.catroid.content.SingleSprite; import org.catrobat.catroid.content.Sprite; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertTrue; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class ShowActionTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + @Test public void testShow() { Sprite sprite = new SingleSprite("new SingleSprite"); @@ -55,10 +59,7 @@ public void testShow() { public void testNullSprite() { ActionFactory factory = new ActionFactory(); Action action = factory.createShowAction(null); - try { - action.act(1.0f); - fail("Execution of ShowBrick with null Sprite did not cause a NullPointerException to be thrown"); - } catch (NullPointerException expected) { - } + exception.expect(NullPointerException.class); + action.act(1.0f); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SpeakActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SpeakActionTest.java index 91b89b3ef36..06d6fb3e2bf 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SpeakActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SpeakActionTest.java @@ -59,7 +59,7 @@ public void setUp() throws Exception { } @Test - public void testSpeak() { + public void testSpeak() throws Exception { SpeakBrick speakBrick = new SpeakBrick(text); Action action = factory.createSpeakAction(sprite, text); Formula textAfterExecution = (Formula) Reflection.getPrivateField(action, "text"); @@ -95,7 +95,7 @@ public void testRequirements() { } @Test - public void testBrickWithStringFormula() { + public void testBrickWithStringFormula() throws Exception { SpeakBrick speakBrick = new SpeakBrick(textString); Action action = factory.createSpeakAction(sprite, textString); Reflection.invokeMethod(action, "begin"); @@ -105,7 +105,7 @@ public void testBrickWithStringFormula() { } @Test - public void testNullFormula() { + public void testNullFormula() throws Exception { Action action = factory.createSpeakAction(sprite, (Formula) null); Reflection.invokeMethod(action, "begin"); @@ -113,7 +113,7 @@ public void testNullFormula() { } @Test - public void testNotANumberFormula() { + public void testNotANumberFormula() throws Exception { Action action = factory.createSpeakAction(sprite, new Formula(Double.NaN)); Reflection.invokeMethod(action, "begin"); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/StopAllSoundsActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/StopAllSoundsActionTest.java index 724e34d6ca9..fe964bbbb54 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/StopAllSoundsActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/StopAllSoundsActionTest.java @@ -76,7 +76,7 @@ public void tearDown() throws Exception { } @Test - public void testStopOneSound() { + public void testStopOneSound() throws Exception { Sprite testSprite = new SingleSprite("testSprite"); SoundInfo soundInfo = createSoundInfo(soundFile); testSprite.getSoundList().add(soundInfo); @@ -98,7 +98,7 @@ public void testStopOneSound() { } @Test - public void testStopSimultaneousPlayingSounds() throws InterruptedException { + public void testStopSimultaneousPlayingSounds() throws Exception { Sprite testSprite = new SingleSprite("testSprite"); SoundInfo soundInfo = createSoundInfo(soundFile); testSprite.getSoundList().add(soundInfo); @@ -143,7 +143,7 @@ private SoundInfo createSoundInfo(File soundFile) { } @SuppressWarnings("unchecked") - private List getMediaPlayers() { + private List getMediaPlayers() throws Exception { return (List) Reflection.getPrivateField(soundManager, "mediaPlayers"); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/bricks/BrickCloneTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/bricks/BrickCloneTest.java index f9ffec3f65a..487ca3ddef6 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/bricks/BrickCloneTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/bricks/BrickCloneTest.java @@ -24,7 +24,6 @@ import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; -import android.util.Log; import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.content.Project; @@ -83,7 +82,6 @@ import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertNotSame; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class BrickCloneTest { @@ -91,7 +89,6 @@ public class BrickCloneTest { private static final int BRICK_FORMULA_VALUE = 1; private static final String CLONE_BRICK_FORMULA_VALUE = "2"; private static final String VARIABLE_NAME = "test_variable"; - private static final String TAG = null; private Sprite sprite; @Before @@ -100,7 +97,7 @@ public void setUp() throws Exception { } @Test - public void testBrickCloneWithFormula() { + public void testBrickCloneWithFormula() throws CloneNotSupportedException, InterpretationException { Brick brick = new ChangeBrightnessByNBrick(new Formula(BRICK_FORMULA_VALUE)); brickClone(brick, Brick.BrickField.BRIGHTNESS_CHANGE); @@ -201,15 +198,15 @@ public void testBrickCloneWithFormula() { @Test public void testVariableReferencesChangeVariableBrick() throws Exception { - testVariableReferences(ChangeVariableBrick.class); + checkVariableReferences(ChangeVariableBrick.class); } @Test public void testVariableReferencesSetVariableBrick() throws Exception { - testVariableReferences(SetVariableBrick.class); + checkVariableReferences(SetVariableBrick.class); } - private void testVariableReferences(Class typeOfBrick) throws Exception { + private void checkVariableReferences(Class typeOfBrick) throws Exception { Project project = new Project(InstrumentationRegistry.getTargetContext(), TestUtils.DEFAULT_TEST_PROJECT_NAME); ProjectManager.getInstance().setProject(project); project.getDefaultScene().addSprite(sprite); @@ -242,22 +239,13 @@ private void testVariableReferences(Class typeOfBrick) thro assertEquals(clonedVariable, clonedVariableFromBrick); } - private void brickClone(Brick brick, Brick.BrickField... brickFields) { - try { - Brick cloneBrick = brick.clone(); - for (Brick.BrickField brickField : brickFields) { - Formula brickFormula = ((FormulaBrick) brick).getFormulaWithBrickField(brickField); - Formula cloneBrickFormula = ((FormulaBrick) cloneBrick).getFormulaWithBrickField(brickField); - cloneBrickFormula.setRoot(new FormulaElement(ElementType.NUMBER, CLONE_BRICK_FORMULA_VALUE, null)); - assertNotSame("Error - brick.clone() not working properly", brickFormula.interpretInteger(sprite), - cloneBrickFormula.interpretInteger(sprite)); - } - } catch (CloneNotSupportedException exception) { - Log.e(TAG, Log.getStackTraceString(exception)); - fail("cloning the brick failed"); - } catch (InterpretationException interpretationException) { - Log.e(TAG, Log.getStackTraceString(interpretationException)); - fail("Cloning of the brick failed: Formula interpretation failed."); + private void brickClone(Brick brick, Brick.BrickField... brickFields) throws CloneNotSupportedException, InterpretationException { + Brick cloneBrick = brick.clone(); + for (Brick.BrickField brickField : brickFields) { + Formula brickFormula = ((FormulaBrick) brick).getFormulaWithBrickField(brickField); + Formula cloneBrickFormula = ((FormulaBrick) cloneBrick).getFormulaWithBrickField(brickField); + cloneBrickFormula.setRoot(new FormulaElement(ElementType.NUMBER, CLONE_BRICK_FORMULA_VALUE, null)); + assertNotSame(brickFormula.interpretInteger(sprite), cloneBrickFormula.interpretInteger(sprite)); } } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/project/ProjectTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/project/ProjectTest.java index 2700f7a23a5..2e66af329c2 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/project/ProjectTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/project/ProjectTest.java @@ -23,7 +23,6 @@ package org.catrobat.catroid.test.content.project; import android.content.pm.PackageInfo; -import android.content.pm.PackageManager.NameNotFoundException; import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; @@ -50,7 +49,7 @@ public class ProjectTest { private static final String OLD_PLATFORM = "iOS"; @Test - public void testVersionName() throws NameNotFoundException { + public void testVersionName() throws Exception { Project project = new Project(InstrumentationRegistry.getTargetContext(), "testProject"); PackageInfo packageInfo = InstrumentationRegistry.getTargetContext().getPackageManager() .getPackageInfo(InstrumentationRegistry.getTargetContext().getPackageName(), 0); @@ -104,7 +103,7 @@ public void testAddRemoveScene() { } @Test - public void testSetDeviceData() { + public void testSetDeviceData() throws Exception { Project project = new Project(); XmlHeader header = project.getXmlHeader(); Reflection.setPrivateField(header, "catrobatLanguageVersion", OLD_LANGUAGE_VERSION); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/sprite/LookTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/sprite/LookTest.java index f20d677fe8a..c7382b88aa0 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/sprite/LookTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/sprite/LookTest.java @@ -126,7 +126,7 @@ private float convertNegativeZeroToPosigiveZero(float value) { } @Test - public void testBreakDownCatroidAngle() { + public void testBreakDownCatroidAngle() throws Exception { Look look = new Look(new SingleSprite("testsprite")); float[] posigiveInputAngles = {0.0f, 45.0f, 90.0f, 135.0f, 180.0f, 225.0f, 270.0f, 315.0f, 360.0f}; @@ -179,7 +179,7 @@ public void testBreakDownCatroidAngle() { } @Test - public void testCatroidAngleToStageAngle() { + public void testCatroidAngleToStageAngle() throws Exception { float[] positiveAngles = {0.0f, 45.0f, 90.0f, 135.0f, 180.0f, 225.0f, 270.0f, 315.0f, 360.0f}; float[] positiveHighAngles = {360.0f, 405.0f, 450.0f, 495.0f, 540.0f, 585.0f, 630.0f, 675.0f, 720.0f}; @@ -217,7 +217,7 @@ public void testCatroidAngleToStageAngle() { } @Test - public void testStageAngleToCatroidAngle() { + public void testStageAngleToCatroidAngle() throws Exception { float[] positiveStageAngles = {0.0f, 45.0f, 90.0f, 135.0f, 180.0f, 225.0f, 270.0f, 315.0f, 360.0f}; float[] positiveHighStagedAngles = {360.0f, 405.0f, 450.0f, 495.0f, 540.0f, 585.0f, 630.0f, 675.0f, 720.0f}; @@ -297,7 +297,7 @@ public void testSize() { } @Test - public void testTransparency() { + public void testTransparency() throws Exception { float transparency = 20f; look.setTransparencyInUserInterfaceDimensionUnit(transparency); assertEquals(transparency, look.getTransparencyInUserInterfaceDimensionUnit(), 1e-5); @@ -317,7 +317,7 @@ public void testTransparency() { } @Test - public void testBrightness() { + public void testBrightness() throws Exception { float brightness = 42f; look.setBrightnessInUserInterfaceDimensionUnit(brightness); assertEquals(brightness, look.getBrightnessInUserInterfaceDimensionUnit()); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/devices/mindstorms/ev3/LegoEV3SensorTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/devices/mindstorms/ev3/LegoEV3SensorTest.java index 02e57369ce3..05c4072104e 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/devices/mindstorms/ev3/LegoEV3SensorTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/devices/mindstorms/ev3/LegoEV3SensorTest.java @@ -46,9 +46,13 @@ import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertTrue; +import static org.hamcrest.Matchers.allOf; +import static org.hamcrest.Matchers.greaterThanOrEqualTo; +import static org.hamcrest.Matchers.lessThanOrEqualTo; +import static org.junit.Assert.assertThat; + @RunWith(AndroidJUnit4.class) public class LegoEV3SensorTest { @@ -94,7 +98,8 @@ public void testEV3IRSensor() { ev3TestModel.generateSensorValue(PORT_NR_0); int sensorValue = (int) sensor.getValue(); - assertFalse((sensorValue < 0 || sensorValue > 100)); + + assertThat(sensorValue, allOf(greaterThanOrEqualTo(0), lessThanOrEqualTo(100))); final int expectedSensorValue = 12; ev3TestModel.setSensorValue(PORT_NR_0, expectedSensorValue); @@ -112,7 +117,8 @@ public void testEV3ColorSensor() { ev3TestModel.generateSensorValue(PORT_NR_1); int sensorValue = (int) sensor.getValue(); - assertFalse((sensorValue < 0 || sensorValue > 7)); + + assertThat(sensorValue, allOf(greaterThanOrEqualTo(0), lessThanOrEqualTo(7))); final int expectedSensorValue = 3; ev3TestModel.setSensorValue(PORT_NR_1, expectedSensorValue); @@ -130,7 +136,8 @@ public void testEV3ColorSensorAmbient() { ev3TestModel.generateSensorValue(PORT_NR_2); int sensorValue = (int) sensor.getValue(); - assertFalse((sensorValue < 0 || sensorValue > 100)); + + assertThat(sensorValue, allOf(greaterThanOrEqualTo(0), lessThanOrEqualTo(100))); final int expectedSensorValue = 33; ev3TestModel.setSensorValue(PORT_NR_2, expectedSensorValue); @@ -148,7 +155,8 @@ public void testEV3ColorSensorReflected() { ev3TestModel.generateSensorValue(PORT_NR_3); int sensorValue = (int) sensor.getValue(); - assertFalse((sensorValue < 0 || sensorValue > 100)); + + assertThat(sensorValue, allOf(greaterThanOrEqualTo(0), lessThanOrEqualTo(100))); final int expectedSensorValue = 42; ev3TestModel.setSensorValue(PORT_NR_3, expectedSensorValue); @@ -166,7 +174,8 @@ public void testEV3TouchSensor() { ev3TestModel.generateSensorValue(PORT_NR_3); int sensorValue = (int) sensor.getValue(); - assertFalse((sensorValue < 0 || sensorValue > 1)); + + assertThat(sensorValue, allOf(greaterThanOrEqualTo(0), lessThanOrEqualTo(1))); final int expectedSensorValue = 1; final int touchPercentValue = 82; @@ -193,11 +202,11 @@ public void testEV3TemperatureSensor() { ev3TestModel.generateSensorValue(PORT_NR_2); float sensorValueC = tempSensC.getValue(); - assertFalse((sensorValueC < -550 || sensorValueC > 1280)); + assertThat(sensorValueC, allOf(greaterThanOrEqualTo(-550f), lessThanOrEqualTo(1280f))); ev3TestModel.generateSensorValue(PORT_NR_3); float sensorValueF = tempSensF.getValue(); - assertFalse((sensorValueF < -670 || sensorValueF > 2624)); + assertThat(sensorValueF, allOf(greaterThanOrEqualTo(-670f), lessThanOrEqualTo(2624f))); final float expectedSensorValueC = 27.53f; ev3TestModel.setSensorValue(PORT_NR_2, expectedSensorValueC); @@ -219,7 +228,7 @@ public void testEV3hitecColorSensor() { ev3TestModel.generateSensorValue(PORT_NR_1); float sensorValue = sensor.getValue(); - assertFalse((sensorValue < 0 || sensorValue > 17)); + assertThat(sensorValue, allOf(greaterThanOrEqualTo(0f), lessThanOrEqualTo(17f))); final float expectedSensorValue = 13; ev3TestModel.setSensorValue(PORT_NR_1, expectedSensorValue); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/devices/mindstorms/nxt/MindstormsConnectionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/devices/mindstorms/nxt/MindstormsConnectionTest.java index 67a83be8f8f..131ec3e7164 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/devices/mindstorms/nxt/MindstormsConnectionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/devices/mindstorms/nxt/MindstormsConnectionTest.java @@ -45,7 +45,7 @@ public class MindstormsConnectionTest { public static final int HEADER_SIZE = 2; @Test - public void testSend() { + public void testSend() throws Exception { ByteArrayOutputStream outStream = new ByteArrayOutputStream(); MindstormsConnectionImpl connection = new MindstormsConnectionImpl(null); @@ -72,7 +72,7 @@ public void testSend() { } @Test - public void testSendAndReceive() { + public void testSendAndReceive() throws Exception { byte[] inputBuffer = new byte[] {4, 0, 3, 4, 5, 7}; ByteArrayInputStream inStream = new ByteArrayInputStream(inputBuffer); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/FaceDetectionHandlerTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/FaceDetectionHandlerTest.java index 738871b9343..3b161afe5bb 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/FaceDetectionHandlerTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/FaceDetectionHandlerTest.java @@ -37,7 +37,7 @@ public class FaceDetectionHandlerTest { @Test - public void testResume() { + public void testResume() throws Exception { TestFaceDetector detector = new TestFaceDetector(); Reflection.setPrivateField(FaceDetectionHandler.class, "faceDetector", detector); assertFalse(detector.started); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/FaceDetectorTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/FaceDetectorTest.java index eb59eaa4020..a9ddc5c0926 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/FaceDetectorTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/FaceDetectorTest.java @@ -33,7 +33,11 @@ import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertTrue; -import static junit.framework.Assert.fail; + +import static org.hamcrest.Matchers.anyOf; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.lessThanOrEqualTo; +import static org.junit.Assert.assertThat; @RunWith(AndroidJUnit4.class) public class FaceDetectorTest { @@ -45,13 +49,8 @@ public class FaceDetectorTest { public void onCustomSensorChanged(SensorCustomEvent event) { numberOfCalls++; - if (event.values[0] == 1.0f) { - statusFaceDetected = true; - } else if (event.values[0] == 0.0f) { - statusFaceDetected = false; - } else { - fail("Unexpected value for face detected. Should be 1 for \"detected\" or 0 for \"not detected\"."); - } + assertThat(event.values[0], anyOf(is(1.0f), is(0.0f))); + statusFaceDetected = event.values[0] == 1.0f; } }; @@ -67,7 +66,7 @@ public void testStatusListenerCallback() { assertFalse(statusFaceDetected); detector.sendFaceDetected(true); assertTrue(statusFaceDetected); - assertTrue(numberOfCalls <= 1); + assertThat(numberOfCalls, is(lessThanOrEqualTo(1))); assertEquals(1, numberOfCalls); detector.sendFaceDetected(true); assertEquals(1, numberOfCalls); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/IcsFaceDetectorTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/IcsFaceDetectorTest.java index 4e1d2904475..36050d20d5d 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/IcsFaceDetectorTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/IcsFaceDetectorTest.java @@ -26,7 +26,6 @@ import android.hardware.Camera; import android.hardware.Camera.Face; import android.support.test.runner.AndroidJUnit4; -import android.util.Log; import org.catrobat.catroid.common.ScreenValues; import org.catrobat.catroid.facedetection.IcsFaceDetector; @@ -34,6 +33,7 @@ import org.catrobat.catroid.formulaeditor.SensorCustomEventListener; import org.catrobat.catroid.formulaeditor.Sensors; import org.catrobat.catroid.uiespresso.annotations.Device; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -41,14 +41,18 @@ import java.util.Random; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertFalse; -import static junit.framework.Assert.assertTrue; import static junit.framework.Assert.fail; +import static org.hamcrest.Matchers.allOf; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.core.IsNot.not; +import static org.hamcrest.number.OrderingComparison.greaterThanOrEqualTo; +import static org.hamcrest.number.OrderingComparison.lessThanOrEqualTo; +import static org.junit.Assert.assertThat; + @RunWith(AndroidJUnit4.class) public class IcsFaceDetectorTest { - private static final String TAG = IcsFaceDetectorTest.class.getSimpleName(); private static final int FACE_RECT_SIZE = 2000; // see reference of Camera.Face.rect (1000 - -1000 = 2000) private static final int COUNTER_INDEX = 0; @@ -61,79 +65,21 @@ public class IcsFaceDetectorTest { private static final int FACE_TOP = -100; private static final int FACE_BOTTOM = 300; private static final int LOW_SCORE_FACE_WIDTH = 10; + private Camera camera; + private IcsFaceDetector detector; @Before public void setUp() throws Exception { ScreenValues.SCREEN_WIDTH = 720; ScreenValues.SCREEN_HEIGHT = 1080; + camera = Camera.open(); + detector = new IcsFaceDetector(); } - // does not run on emulator, and nexus 7 - @Device - @Test - public void testDeviceFaceDetectionSupport() { - - int possibleFaces = 0; - Camera camera = null; - - try { - camera = Camera.open(); - possibleFaces = camera.getParameters().getMaxNumDetectedFaces(); - camera.release(); - } catch (Exception exc) { - Log.e(TAG, Log.getStackTraceString(exc)); - } finally { - if (camera != null) { - camera.release(); - } - } - if (possibleFaces == 0) { - Log.w(TAG, "The hardware does not support facedetection"); - } - } - - @Device - @Test - public void testNotAvailable() { - Camera camera = null; - try { - camera = Camera.open(); - IcsFaceDetector detector = new IcsFaceDetector(); - if ((camera.getParameters()).getMaxNumDetectedFaces() > 0) { - assertFalse(detector.startFaceDetection()); - } - } catch (Exception exc) { - fail("Camera not available (" + exc.getMessage() + ")"); - } finally { - if (camera != null) { - camera.release(); - } - } - } - - @Device - @Test - public void testDoubleStart() { + @After + public void tearDown() { + detector.stopFaceDetection(); - Camera camera = null; - try { - camera = Camera.open(); - } catch (Exception exc) { - fail("Camera not available (" + exc.getMessage() + ")"); - } - IcsFaceDetector detector = new IcsFaceDetector(); - if ((camera.getParameters()).getMaxNumDetectedFaces() > 0) { - detector.startFaceDetection(); - try { - detector.startFaceDetection(); - } catch (Exception e) { - fail("Second start of face detector should be ignored and not cause errors: " + e.getMessage()); - } finally { - detector.stopFaceDetection(); - camera.release(); - camera = null; - } - } if (camera != null) { camera.release(); } @@ -142,8 +88,6 @@ public void testDoubleStart() { @Device @Test public void testOnFaceDetectionStatusListener() { - - IcsFaceDetector detector = new IcsFaceDetector(); final float[] detected = new float[1]; SensorCustomEventListener listener = new SensorCustomEventListener() { public void onCustomSensorChanged(SensorCustomEvent event) { @@ -167,9 +111,6 @@ public void onCustomSensorChanged(SensorCustomEvent event) { @Device @Test public void testOnFaceDetectedListener() { - - IcsFaceDetector detector = new IcsFaceDetector(); - final int[] detectedFaces = new int[4]; SensorCustomEventListener detectionListener = new SensorCustomEventListener() { @@ -209,10 +150,7 @@ public void onCustomSensorChanged(SensorCustomEvent event) { detector.onFaceDetection(faces, null); assertEquals(3, detectedFaces[COUNTER_INDEX]); - int lowScoreFaceSize = LOW_SCORE_FACE_WIDTH * 100 * 2 / FACE_RECT_SIZE; - if (detectedFaces[SIZE_INDEX] == lowScoreFaceSize) { - fail("Wrong face used for face detection"); - } + assertThat(LOW_SCORE_FACE_WIDTH * 100 * 2 / FACE_RECT_SIZE, is(not(detectedFaces[SIZE_INDEX]))); int expectedSize = (FACE_RIGHT - FACE_LEFT) * 100 * 2 / FACE_RECT_SIZE; assertEquals(expectedSize, detectedFaces[SIZE_INDEX]); @@ -226,7 +164,7 @@ public void onCustomSensorChanged(SensorCustomEvent event) { assertEquals(expectedYPosition, Math.abs(detectedFaces[Y_POSITION_INDEX])); detector.onFaceDetection(faces, null); - assertTrue(detectedFaces[COUNTER_INDEX] <= 6); + assertEquals(6, detectedFaces[COUNTER_INDEX]); detector.removeOnFaceDetectedListener(detectionListener); @@ -235,9 +173,6 @@ public void onCustomSensorChanged(SensorCustomEvent event) { @Device @Test public void testFaceSizeBounds() { - - IcsFaceDetector detector = new IcsFaceDetector(); - final float[] faceSize = new float[1]; SensorCustomEventListener detectionListener = new SensorCustomEventListener() { public void onCustomSensorChanged(SensorCustomEvent event) { @@ -254,8 +189,7 @@ public void onCustomSensorChanged(SensorCustomEvent event) { faces[0].rect = faceBounds; detector.onFaceDetection(faces, null); - assertTrue(faceSize[0] >= 0); - assertTrue(faceSize[0] <= 100); + assertThat(faceSize[0], allOf(greaterThanOrEqualTo(0f), lessThanOrEqualTo(100f))); Random random = new Random(); int left = random.nextInt(FACE_RECT_SIZE - 1); @@ -267,8 +201,7 @@ public void onCustomSensorChanged(SensorCustomEvent event) { faces[0].rect = faceBounds; detector.onFaceDetection(faces, null); - assertTrue(faceSize[0] >= 0); - assertTrue(faceSize[0] <= 100); + assertThat(faceSize[0], allOf(greaterThanOrEqualTo(0f), lessThanOrEqualTo(100f))); detector.removeOnFaceDetectedListener(detectionListener); } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/SlowFaceDetectorCameraTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/SlowFaceDetectorCameraTest.java new file mode 100644 index 00000000000..0b896bbea6e --- /dev/null +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/SlowFaceDetectorCameraTest.java @@ -0,0 +1,66 @@ +/* + * Catroid: An on-device visual programming system for Android devices + * Copyright (C) 2010-2018 The Catrobat Team + * () + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * An additional term exception under section 7 of the GNU Affero + * General Public License, version 3, is available at + * http://developer.catrobat.org/license_additional_term + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +package org.catrobat.catroid.test.facedetection; + +import android.hardware.Camera; +import android.support.test.runner.AndroidJUnit4; + +import org.catrobat.catroid.common.ScreenValues; +import org.catrobat.catroid.facedetection.SlowFaceDetector; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import static junit.framework.Assert.assertNotNull; + +@RunWith(AndroidJUnit4.class) +public class SlowFaceDetectorCameraTest { + private Camera camera; + + @Before + public void setUp() throws Exception { + ScreenValues.SCREEN_WIDTH = 720; + ScreenValues.SCREEN_HEIGHT = 1080; + + camera = Camera.open(); + } + + @After + public void tearDown() { + if (camera != null) { + camera.release(); + } + } + + @Test + public void testStartAndStop() { + SlowFaceDetector detector = new SlowFaceDetector(); + assertNotNull(detector); + + detector.startFaceDetection(); + detector.stopFaceDetection(); + + camera = Camera.open(); + } +} diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/SlowFaceDetectorTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/SlowFaceDetectorTest.java index 678ec26b300..7472b5b378a 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/SlowFaceDetectorTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/SlowFaceDetectorTest.java @@ -23,7 +23,6 @@ package org.catrobat.catroid.test.facedetection; import android.graphics.PointF; -import android.hardware.Camera; import android.support.test.runner.AndroidJUnit4; import org.catrobat.catroid.common.ScreenValues; @@ -33,6 +32,7 @@ import org.catrobat.catroid.formulaeditor.Sensors; import org.catrobat.catroid.test.utils.Reflection; import org.catrobat.catroid.test.utils.Reflection.ParameterList; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -40,10 +40,13 @@ import java.util.Random; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertNotNull; -import static junit.framework.Assert.assertTrue; import static junit.framework.Assert.fail; +import static org.hamcrest.Matchers.allOf; +import static org.hamcrest.number.OrderingComparison.greaterThanOrEqualTo; +import static org.hamcrest.number.OrderingComparison.lessThanOrEqualTo; +import static org.junit.Assert.assertThat; + @RunWith(AndroidJUnit4.class) public class SlowFaceDetectorTest { @@ -56,70 +59,28 @@ public class SlowFaceDetectorTest { private static final int X_POSITION_INDEX = 2; private static final int Y_POSITION_INDEX = 3; + private SlowFaceDetector detector; + @Before public void setUp() throws Exception { ScreenValues.SCREEN_WIDTH = 720; ScreenValues.SCREEN_HEIGHT = 1080; + detector = new SlowFaceDetector(); } - @Test - public void testStartAndStop() { - - Camera camera = null; - try { - camera = Camera.open(); - } catch (Exception exc) { - fail("Camera not available (" + exc.getMessage() + ")"); - } finally { - if (camera != null) { - camera.release(); - } - } - - SlowFaceDetector detector = new SlowFaceDetector(); - assertNotNull(detector); - - try { - detector.startFaceDetection(); - } catch (Exception exc) { - fail("Cannot start face detection (" + exc.getMessage() + ")"); - } - - try { - detector.stopFaceDetection(); - } catch (Exception exc) { - fail("Cannot stop face detection (" + exc.getMessage() + ")"); - } - - camera = null; - try { - camera = Camera.open(); - } catch (Exception exc) { - fail("Ressources were not propperly released"); - } finally { - if (camera != null) { - camera.release(); - } - } + @After + public void tearDown() { + detector.stopFaceDetection(); } @Test public void testDoubleStart() { - SlowFaceDetector detector = new SlowFaceDetector(); detector.startFaceDetection(); - try { - detector.startFaceDetection(); - } catch (Exception e) { - fail("Second start of face detector should be ignored and not cause errors: " + e.getMessage()); - } finally { - detector.stopFaceDetection(); - } + detector.startFaceDetection(); } @Test - public void testOnFaceDetectedListener() { - SlowFaceDetector detector = new SlowFaceDetector(); - + public void testOnFaceDetectedListener() throws Exception { final int[] detectedFaces = new int[4]; SensorCustomEventListener detectionListener = new SensorCustomEventListener() { @@ -164,14 +125,11 @@ public void onCustomSensorChanged(SensorCustomEvent event) { assertEquals(expectedYPosition, detectedFaces[Y_POSITION_INDEX]); Reflection.invokeMethod(detector, "onFaceFound", parameters); - assertTrue(detectedFaces[COUNTER_INDEX] <= 6); assertEquals(6, detectedFaces[COUNTER_INDEX]); } @Test - public void testFaceSizeBounds() { - SlowFaceDetector detector = new SlowFaceDetector(); - + public void testFaceSizeBounds() throws Exception { final float[] faceSize = new float[1]; SensorCustomEventListener detectionListener = new SensorCustomEventListener() { public void onCustomSensorChanged(SensorCustomEvent event) { @@ -185,15 +143,13 @@ public void onCustomSensorChanged(SensorCustomEvent event) { ParameterList parameters = new ParameterList(new PointF(), Float.valueOf(EYE_DISTANCE), Integer.valueOf(DETECTION_WIDTH), Integer.valueOf(DETECTION_HEIGHT)); Reflection.invokeMethod(detector, "onFaceFound", parameters); - assertTrue(faceSize[0] >= 0); - assertTrue(faceSize[0] <= 100); + assertThat(faceSize[0], allOf(greaterThanOrEqualTo(0f), lessThanOrEqualTo(100f))); Random random = new Random(); parameters = new ParameterList(new PointF(), Float.valueOf(random.nextInt(DETECTION_WIDTH)), Integer.valueOf(DETECTION_WIDTH), Integer.valueOf(DETECTION_HEIGHT)); Reflection.invokeMethod(detector, "onFaceFound", parameters); - assertTrue(faceSize[0] >= 0); - assertTrue(faceSize[0] <= 100); + assertThat(faceSize[0], allOf(greaterThanOrEqualTo(0f), lessThanOrEqualTo(100f))); detector.removeOnFaceDetectedListener(detectionListener); } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/FormulaEditorTestUtil.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/FormulaEditorTestUtil.java index d5369e746a0..ea69d5a8843 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/FormulaEditorTestUtil.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/FormulaEditorTestUtil.java @@ -22,8 +22,6 @@ */ package org.catrobat.catroid.test.formulaeditor; -import android.util.Log; - import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.formulaeditor.FormulaElement; @@ -39,12 +37,9 @@ import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertNull; -import static junit.framework.Assert.fail; public final class FormulaEditorTestUtil { - private static final String TAG = FormulaEditorTestUtil.class.getSimpleName(); - private FormulaEditorTestUtil() { throw new AssertionError(); } @@ -69,17 +64,13 @@ public static void testSingleParameterFunction(Functions function, List buildSingleParameterFunction(Functions function, InternTokenType firstParameter, - String parameterNumberValue) { + String parameterNumberValue) throws NumberFormatException { List tokenList = new LinkedList(); tokenList.add(new InternToken(InternTokenType.FUNCTION_NAME, function.name())); tokenList.add(new InternToken(InternTokenType.FUNCTION_PARAMETERS_BRACKET_OPEN)); - try { - if (Double.valueOf(parameterNumberValue) < 0) { - tokenList.add(new InternToken(InternTokenType.OPERATOR, Operators.MINUS.name())); - parameterNumberValue = String.valueOf(Math.abs(Double.valueOf(parameterNumberValue))); - } - } catch (NumberFormatException numberFormatException) { - Log.e(TAG, Log.getStackTraceString(numberFormatException)); + if (isParsableDouble(parameterNumberValue) && Double.valueOf(parameterNumberValue) < 0) { + tokenList.add(new InternToken(InternTokenType.OPERATOR, Operators.MINUS.name())); + parameterNumberValue = String.valueOf(Math.abs(Double.valueOf(parameterNumberValue))); } tokenList.add(new InternToken(firstParameter, parameterNumberValue)); tokenList.add(new InternToken(InternTokenType.FUNCTION_PARAMETERS_BRACKET_CLOSE)); @@ -110,28 +101,23 @@ public static void testDoubleParameterFunction(Functions function, List buildDoubleParameterFunction(Functions function, InternTokenType firstParameter, - String firstParameterNumberValue, InternTokenType secondParameter, String secondParameterNumberValue) { + String firstParameterNumberValue, InternTokenType secondParameter, String secondParameterNumberValue) + throws NumberFormatException { List tokenList = new LinkedList(); tokenList.add(new InternToken(InternTokenType.FUNCTION_NAME, function.name())); tokenList.add(new InternToken(InternTokenType.FUNCTION_PARAMETERS_BRACKET_OPEN)); - try { - if (Double.valueOf(firstParameterNumberValue) < 0) { - tokenList.add(new InternToken(InternTokenType.OPERATOR, Operators.MINUS.name())); - firstParameterNumberValue = String.valueOf(Math.abs(Double.valueOf(firstParameterNumberValue))); - } - } catch (NumberFormatException numberFormatException) { - Log.e(TAG, Log.getStackTraceString(numberFormatException)); + if (isParsableDouble(firstParameterNumberValue) && Double.valueOf(firstParameterNumberValue) < 0) { + tokenList.add(new InternToken(InternTokenType.OPERATOR, Operators.MINUS.name())); + firstParameterNumberValue = String.valueOf(Math.abs(Double.valueOf(firstParameterNumberValue))); } + tokenList.add(new InternToken(firstParameter, firstParameterNumberValue)); tokenList.add(new InternToken(InternTokenType.FUNCTION_PARAMETER_DELIMITER)); - try { - if (Double.valueOf(secondParameterNumberValue) < 0) { - tokenList.add(new InternToken(InternTokenType.OPERATOR, Operators.MINUS.name())); - secondParameterNumberValue = String.valueOf(Math.abs(Double.valueOf(secondParameterNumberValue))); - } - } catch (NumberFormatException numberFormatException) { - Log.e(TAG, Log.getStackTraceString(numberFormatException)); + if (isParsableDouble(secondParameterNumberValue) && Double.valueOf(secondParameterNumberValue) < 0) { + tokenList.add(new InternToken(InternTokenType.OPERATOR, Operators.MINUS.name())); + secondParameterNumberValue = String.valueOf(Math.abs(Double.valueOf(secondParameterNumberValue))); } + tokenList.add(new InternToken(secondParameter, secondParameterNumberValue)); tokenList.add(new InternToken(InternTokenType.FUNCTION_PARAMETERS_BRACKET_CLOSE)); return tokenList; @@ -160,15 +146,6 @@ public static void testBinaryOperator(InternTokenType firstInternTokenType, Stri assertEquals(expected, parseTree.interpretRecursive(testSprite)); } - public static void testBinaryOperator(InternTokenType firstInternTokenType, String firstOperand, Operators operatorType, - List secondOperand, Object expected, Sprite testSprite) { - List internTokenList = buildBinaryOperator(firstInternTokenType, firstOperand, operatorType, secondOperand); - FormulaElement parseTree = new InternFormulaParser(internTokenList).parseFormula(); - - assertNotNull(parseTree); - assertEquals(expected, parseTree.interpretRecursive(testSprite)); - } - public static void testBinaryOperator(List firstOperand, Operators operatorType, InternTokenType secondInternTokenType, String secondOperand, Object expected, Sprite testSprite) { List internTokenList = buildBinaryOperator(firstOperand, operatorType, secondInternTokenType, secondOperand); @@ -231,21 +208,6 @@ public static void testUnaryOperator(Operators operatorType, InternTokenType fir assertEquals(expected, formula.interpretObject(testSprite)); } - public static void testNotANumberWithBinaryOperator(InternTokenType firstInternTokenType, String firstOperand, - Operators operatorType, InternTokenType secondInternTokenType, String secondOperand, Sprite testSprite) { - List internTokenList = buildBinaryOperator(firstInternTokenType, firstOperand, operatorType, - secondInternTokenType, secondOperand); - FormulaElement parseTree = new InternFormulaParser(internTokenList).parseFormula(); - - assertNotNull(parseTree); - try { - parseTree.interpretRecursive(testSprite); - fail("Formula interpretation is not as expected: " + firstOperand + operatorType + secondOperand); - } catch (Exception exception) { - assertEquals(exception.getMessage(), String.valueOf(Double.NaN)); - } - } - public static List buildBinaryOperator(InternTokenType firstInternTokenType, String firstOperand, Operators operatorType, InternTokenType secondInternTokenType, String secondOperand) { List firstOperandList = new LinkedList(); @@ -287,4 +249,13 @@ public static void assertEqualsTokenLists(List expectedTokenList, L actualTokenList.get(index).getTokenStringValue()); } } + + private static boolean isParsableDouble(String value) { + try { + Double.valueOf(value); + return true; + } catch (NumberFormatException e) { + return false; + } + } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/InternFormulaTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/InternFormulaTest.java index a875d85c99c..5720bb957fa 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/InternFormulaTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/InternFormulaTest.java @@ -41,7 +41,6 @@ import org.junit.Test; import org.junit.runner.RunWith; -import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; @@ -361,7 +360,7 @@ public void testSelectFunctionAndSingleTab() { } @Test - public void testReplaceSelection() { + public void testReplaceSelection() throws Exception { ArrayList internTokens = new ArrayList(); internTokens.add(new InternToken(InternTokenType.NUMBER, "42.42")); @@ -401,7 +400,7 @@ public void testHandleDeletion() { } @Test - public void testDeleteInternTokenByIndex() { + public void testDeleteInternTokenByIndex() throws Exception { ArrayList internTokens = new ArrayList(); internTokens.add(new InternToken(InternTokenType.NUMBER, "42.42")); internTokens.add(new InternToken(InternTokenType.OPERATOR, Operators.PLUS.name())); @@ -477,8 +476,7 @@ public void testDeleteInternTokenByIndex() { } @Test - public void testSetExternCursorPositionLeftTo() throws NoSuchMethodException, IllegalArgumentException, - IllegalAccessException, InvocationTargetException { + public void testSetExternCursorPositionLeftTo() throws Exception { Method setExternCursorPositionLeftTo = InternFormula.class.getDeclaredMethod("setExternCursorPositionLeftTo", int.class); @@ -504,8 +502,7 @@ public void testSetExternCursorPositionLeftTo() throws NoSuchMethodException, Il } @Test - public void testSetExternCursorPositionRightTo() throws NoSuchMethodException, IllegalArgumentException, - IllegalAccessException, InvocationTargetException { + public void testSetExternCursorPositionRightTo() throws Exception { Method setExternCursorPositionRightTo = InternFormula.class.getDeclaredMethod("setExternCursorPositionRightTo", int.class); @@ -545,8 +542,7 @@ public void testSetExternCursorPositionRightTo() throws NoSuchMethodException, I } @Test - public void testSelectCursorPositionInternTokenOnError() throws IllegalArgumentException, IllegalAccessException, - InvocationTargetException, NoSuchMethodException { + public void testSelectCursorPositionInternTokenOnError() throws Exception { ArrayList internTokens = new ArrayList(); internTokens.add(new InternToken(InternTokenType.BRACKET_OPEN)); @@ -567,8 +563,7 @@ public void testSelectCursorPositionInternTokenOnError() throws IllegalArgumentE } @Test - public void testSelectCursorPositionInternToken() throws IllegalArgumentException, IllegalAccessException, - InvocationTargetException, NoSuchMethodException { + public void testSelectCursorPositionInternToken() throws Exception { ArrayList internTokens = new ArrayList(); internTokens.add(new InternToken(InternTokenType.BRACKET_OPEN)); @@ -633,8 +628,7 @@ public void testSelectCursorPositionInternToken() throws IllegalArgumentExceptio } @Test - public void testreplaceCursorPositionInternTokenByTokenList() throws NoSuchMethodException, - IllegalArgumentException, IllegalAccessException, InvocationTargetException { + public void testreplaceCursorPositionInternTokenByTokenList() throws Exception { Method method = InternFormula.class .getDeclaredMethod("replaceCursorPositionInternTokenByTokenList", List.class); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/InternFormulaTokenSelectionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/InternFormulaTokenSelectionTest.java index e3c4adad993..f15f3fad206 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/InternFormulaTokenSelectionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/InternFormulaTokenSelectionTest.java @@ -68,7 +68,7 @@ public void setUp() throws Exception { } @Test - public void testReplaceFunctionByToken() { + public void testReplaceFunctionByToken() throws Exception { assertEquals(0, internFormula.getSelection().getStartIndex()); assertEquals(3, internFormula.getSelection().getEndIndex()); @@ -93,7 +93,7 @@ public void testReplaceFunctionByToken() { } @Test - public void testHashCodeFunction() { + public void testHashCodeFunction() throws Exception { InternFormulaTokenSelection tokenSelection = internFormula.getSelection(); InternFormulaTokenSelection tokenSelectionDeepCopy = tokenSelection.deepCopy(); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/InternFormulaUtilsTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/InternFormulaUtilsTest.java index d1f77e4da97..90e95d5f6a0 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/InternFormulaUtilsTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/InternFormulaUtilsTest.java @@ -272,7 +272,6 @@ public void testisFunctionTokenOnError() { @Test public void testIsNumberOnError() { - assertFalse(InternFormulaUtils.isNumberToken(null)); } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/LookSensorValuesInterpretationTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/LookSensorValuesInterpretationTest.java index e7fdb35878c..3e16ad2e7a8 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/LookSensorValuesInterpretationTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/LookSensorValuesInterpretationTest.java @@ -42,7 +42,6 @@ import java.util.List; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class LookSensorValuesInterpretationTest { @@ -76,32 +75,28 @@ public Formula getFormulaBySensor(Sensors sensor) { } @Test - public void testLookSensorValues() { + public void testLookSensorValues() throws InterpretationException { + Formula lookXPositionFormula = getFormulaBySensor(Sensors.OBJECT_X); + assertEquals(LOOK_X_POSITION, lookXPositionFormula.interpretDouble(testSprite), DELTA); - try { - Formula lookXPositionFormula = getFormulaBySensor(Sensors.OBJECT_X); - assertEquals(LOOK_X_POSITION, lookXPositionFormula.interpretDouble(testSprite), DELTA); + Formula lookYPositionFormula = getFormulaBySensor(Sensors.OBJECT_Y); + assertEquals(LOOK_Y_POSITION, lookYPositionFormula.interpretDouble(testSprite), DELTA); - Formula lookYPositionFormula = getFormulaBySensor(Sensors.OBJECT_Y); - assertEquals(LOOK_Y_POSITION, lookYPositionFormula.interpretDouble(testSprite), DELTA); + Formula lookAlphaValueFormula = getFormulaBySensor(Sensors.OBJECT_TRANSPARENCY); + assertEquals(LOOK_ALPHA, lookAlphaValueFormula.interpretDouble(testSprite), DELTA); - Formula lookAlphaValueFormula = getFormulaBySensor(Sensors.OBJECT_TRANSPARENCY); - assertEquals(LOOK_ALPHA, lookAlphaValueFormula.interpretDouble(testSprite), DELTA); + Formula lookBrightnessFormula = getFormulaBySensor(Sensors.OBJECT_BRIGHTNESS); + assertEquals(LOOK_BRIGHTNESS, lookBrightnessFormula.interpretDouble(testSprite), DELTA); - Formula lookBrightnessFormula = getFormulaBySensor(Sensors.OBJECT_BRIGHTNESS); - assertEquals(LOOK_BRIGHTNESS, lookBrightnessFormula.interpretDouble(testSprite), DELTA); + Formula lookScaleFormula = getFormulaBySensor(Sensors.OBJECT_SIZE); + assertEquals(LOOK_SCALE, lookScaleFormula.interpretDouble(testSprite), DELTA); - Formula lookScaleFormula = getFormulaBySensor(Sensors.OBJECT_SIZE); - assertEquals(LOOK_SCALE, lookScaleFormula.interpretDouble(testSprite), DELTA); + Formula lookRotateFormula = getFormulaBySensor(Sensors.OBJECT_ROTATION); + assertEquals(LOOK_ROTATION, lookRotateFormula.interpretDouble(testSprite), DELTA); - Formula lookRotateFormula = getFormulaBySensor(Sensors.OBJECT_ROTATION); - assertEquals(LOOK_ROTATION, lookRotateFormula.interpretDouble(testSprite), DELTA); - - Formula lookZPositionFormula = getFormulaBySensor(Sensors.OBJECT_LAYER); - assertEquals(testSprite.look.getZIndex(), lookZPositionFormula.interpretInteger(testSprite).intValue() + Constants.Z_INDEX_NUMBER_VIRTUAL_LAYERS); - } catch (InterpretationException interpretationException) { - fail("Could not interprete Formula."); - } + Formula lookZPositionFormula = getFormulaBySensor(Sensors.OBJECT_LAYER); + assertEquals(testSprite.look.getZIndex(), lookZPositionFormula.interpretInteger(testSprite).intValue() + + Constants.Z_INDEX_NUMBER_VIRTUAL_LAYERS); } @Test diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestErrorDedection.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestErrorDedection.java index 93e74abd628..98eaa0cc0e5 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestErrorDedection.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestErrorDedection.java @@ -22,7 +22,7 @@ */ package org.catrobat.catroid.test.formulaeditor; -import android.test.AndroidTestCase; +import android.support.test.runner.AndroidJUnit4; import org.catrobat.catroid.formulaeditor.FormulaElement; import org.catrobat.catroid.formulaeditor.InternFormulaParser; @@ -30,11 +30,16 @@ import org.catrobat.catroid.formulaeditor.InternTokenType; import org.catrobat.catroid.formulaeditor.Operators; import org.junit.Test; +import org.junit.runner.RunWith; import java.util.LinkedList; import java.util.List; -public class ParserTestErrorDedection extends AndroidTestCase { +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertNull; + +@RunWith(AndroidJUnit4.class) +public class ParserTestErrorDedection { @Test public void testTooManyOperators() { diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestFunctions.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestFunctions.java index 19a3cad5f79..e4bdedcb1e1 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestFunctions.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestFunctions.java @@ -22,7 +22,7 @@ */ package org.catrobat.catroid.test.formulaeditor; -import android.test.AndroidTestCase; +import android.support.test.runner.AndroidJUnit4; import org.catrobat.catroid.content.SingleSprite; import org.catrobat.catroid.content.Sprite; @@ -33,17 +33,28 @@ import org.catrobat.catroid.formulaeditor.InternTokenType; import org.catrobat.catroid.formulaeditor.Operators; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.junit.runner.RunWith; import java.util.LinkedList; import java.util.List; +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertNotNull; +import static junit.framework.Assert.assertNull; + import static org.hamcrest.Matchers.anyOf; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; -public class ParserTestFunctions extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class ParserTestFunctions { + + @Rule + public final ExpectedException exception = ExpectedException.none(); private Sprite testSprite; private static final String NOT_NUMERICAL_STRING = "NOT_NUMERICAL_STRING"; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestObject.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestObject.java index 9d0b0b49df0..bc8f8d7b04b 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestObject.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestObject.java @@ -23,8 +23,7 @@ package org.catrobat.catroid.test.formulaeditor; import android.support.test.InstrumentationRegistry; -import android.test.AndroidTestCase; -import android.util.Log; +import android.support.test.runner.AndroidJUnit4; import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.common.Constants; @@ -41,11 +40,15 @@ import org.catrobat.catroid.test.utils.TestUtils; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import java.util.LinkedList; import java.util.List; -public class ParserTestObject extends AndroidTestCase { +import static junit.framework.Assert.assertEquals; + +@RunWith(AndroidJUnit4.class) +public class ParserTestObject { private static final float LOOK_ALPHA = 0.42f; private static final float LOOK_Y_POSITION = 23.4f; @@ -72,22 +75,17 @@ public void setUp() { testSprite.look.setDirectionInUserInterfaceDimensionUnit(LOOK_ROTATION); } - public Double interpretSensor(Sensors sensor) { + public Double interpretSensor(Sensors sensor) throws InterpretationException { List internTokenList = new LinkedList(); internTokenList.add(new InternToken(InternTokenType.SENSOR, sensor.name())); InternFormulaParser internParser = new InternFormulaParser(internTokenList); FormulaElement parseTree = internParser.parseFormula(); Formula sensorFormula = new Formula(parseTree); - try { - return sensorFormula.interpretDouble(testSprite); - } catch (InterpretationException interpretationException) { - Log.d(getClass().getSimpleName(), "Formula interpretation for Sensor failed.", interpretationException); - } - return Double.NaN; + return sensorFormula.interpretDouble(testSprite); } @Test - public void testLookSensorValues() { + public void testLookSensorValues() throws InterpretationException { assertEquals(LOOK_X_POSITION, interpretSensor(Sensors.OBJECT_X), DELTA); assertEquals(LOOK_Y_POSITION, interpretSensor(Sensors.OBJECT_Y), DELTA); assertEquals(LOOK_ALPHA, interpretSensor(Sensors.OBJECT_TRANSPARENCY), DELTA); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestOperators.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestOperators.java index e5755903db7..f8264c6a834 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestOperators.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestOperators.java @@ -22,7 +22,7 @@ */ package org.catrobat.catroid.test.formulaeditor; -import android.test.AndroidTestCase; +import android.support.test.runner.AndroidJUnit4; import org.catrobat.catroid.content.SingleSprite; import org.catrobat.catroid.content.Sprite; @@ -35,11 +35,16 @@ import org.catrobat.catroid.formulaeditor.Operators; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import java.util.LinkedList; import java.util.List; -public class ParserTestOperators extends AndroidTestCase { +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertNotNull; + +@RunWith(AndroidJUnit4.class) +public class ParserTestOperators { private Sprite testSprite; private static final Double TRUE = 1d; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestSensors.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestSensors.java index 1b78a73a4f6..86bef90143b 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestSensors.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestSensors.java @@ -43,7 +43,6 @@ import org.catrobat.catroid.formulaeditor.InternFormulaParser; import org.catrobat.catroid.formulaeditor.InternToken; import org.catrobat.catroid.formulaeditor.InternTokenType; -import org.catrobat.catroid.formulaeditor.InterpretationException; import org.catrobat.catroid.formulaeditor.SensorHandler; import org.catrobat.catroid.formulaeditor.SensorLoudness; import org.catrobat.catroid.formulaeditor.Sensors; @@ -118,7 +117,7 @@ public void testSensorHandlerWithLookSensorValue() { @Test @UiThreadTest - public void testFaceDetection() { + public void testFaceDetection() throws Exception { SensorHandler.startSensorListener(InstrumentationRegistry.getTargetContext()); FaceDetector faceDetector = (FaceDetector) Reflection.getPrivateField(FaceDetectionHandler.class, "faceDetector"); @@ -162,25 +161,25 @@ public void testFaceDetection() { ChangeSizeByNBrick faceYPositionBrick = new ChangeSizeByNBrick(formula9); startScript1.addBrick(faceYPositionBrick); - assertEquals(1d, interpretFormula(formula6)); + assertEquals(1d, formula6.interpretFloat(firstSprite), delta); - assertEquals(expectedFaceSize, interpretFormula(formula7), delta); + assertEquals(expectedFaceSize, formula7.interpretFloat(firstSprite), delta); if (ProjectManager.getInstance().isCurrentProjectLandscapeMode()) { - assertEquals(expectedFaceXPosition, interpretFormula(formula9), delta); + assertEquals(expectedFaceXPosition, formula9.interpretFloat(firstSprite), delta); - assertEquals(expectedFaceYPosition, -interpretFormula(formula8), delta); + assertEquals(expectedFaceYPosition, -formula8.interpretFloat(firstSprite), delta); } else { - assertEquals(expectedFaceXPosition, interpretFormula(formula8), delta); + assertEquals(expectedFaceXPosition, formula8.interpretFloat(firstSprite), delta); - assertEquals(expectedFaceYPosition, -interpretFormula(formula9), delta); + assertEquals(expectedFaceYPosition, -formula9.interpretFloat(firstSprite), delta); } SensorHandler.stopSensorListeners(); } @Test @UiThreadTest - public void testMicRelease() { + public void testMicRelease() throws Exception { SensorLoudness.getSensorLoudness(); SensorLoudness loudnessSensor = (SensorLoudness) Reflection.getPrivateField(SensorLoudness.class, "instance"); @@ -210,13 +209,4 @@ private void createProject() { startScript1.addBrick(changeBrick); project.getDefaultScene().addSprite(firstSprite); } - - private Double interpretFormula(Formula formula) { - try { - return formula.interpretDouble(firstSprite); - } catch (InterpretationException interpretationException) { - Log.d(getClass().getSimpleName(), "Formula interpretation for Formula failed.", interpretationException); - } - return Double.NaN; - } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestStringFunctions.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestStringFunctions.java index b216c19272b..798a15524c1 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestStringFunctions.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestStringFunctions.java @@ -23,7 +23,7 @@ package org.catrobat.catroid.test.formulaeditor; import android.support.test.InstrumentationRegistry; -import android.test.AndroidTestCase; +import android.support.test.runner.AndroidJUnit4; import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.content.Project; @@ -39,11 +39,16 @@ import org.catrobat.catroid.formulaeditor.datacontainer.DataContainer; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import java.util.LinkedList; import java.util.List; -public class ParserTestStringFunctions extends AndroidTestCase { +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertNotNull; + +@RunWith(AndroidJUnit4.class) +public class ParserTestStringFunctions { private Sprite testSprite; private static final double USER_VARIABLE_1_VALUE_TYPE_DOUBLE = 888.88; @@ -197,13 +202,8 @@ public void testStringFunctionsNested() { lengthTokenList, secondInternTokenList); FormulaElement parseTree = new InternFormulaParser(letterTokenList).parseFormula(); - assertNotNull("Formula is not parsed correctly: " + Functions.LETTER.name() + "(" + Functions.LENGTH.name() - + "(" + Functions.JOIN.name() + "(" + firstParameter + "," + secondParameter + ")" + ")" + "," - + firstParameter + secondParameter + ")", parseTree); - assertEquals( - "Formula interpretation is not as expected: " + Functions.LETTER.name() + "(" + Functions.LENGTH.name() - + "(" + Functions.JOIN.name() + "(" + firstParameter + "," + secondParameter + ")" + ")" + "," - + firstParameter + secondParameter + ")", String.valueOf((firstParameter + secondParameter) + assertNotNull(parseTree); + assertEquals(String.valueOf((firstParameter + secondParameter) .charAt((firstParameter + secondParameter).length() - 1)), parseTree.interpretRecursive(testSprite)); } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestUserLists.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestUserLists.java index dbdbbafd84a..ebfd5d89cbb 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestUserLists.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestUserLists.java @@ -57,11 +57,10 @@ public class ParserTestUserLists { private static final String PROJECT_USER_LIST_NAME_2 = "project_user_list_2"; private static final String PROJECT_USER_LIST_NAME = "project_user_list"; private static final String SPRITE_USER_LIST_NAME = "sprite_user_list"; + private static final String EMPTY_USER_LIST_INTERPRETATION_VALUE = ""; private static final String PROJECT_USER_VARIABLE = "projectUserVariable"; - private static final String EMPTY_USER_LIST_INTERPRETATION_VALUE = ""; - private Sprite sprite; private DataContainer dataContainer; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestUserVariables.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestUserVariables.java index e38668ae63c..ce2e581ada1 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestUserVariables.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestUserVariables.java @@ -23,7 +23,7 @@ package org.catrobat.catroid.test.formulaeditor; import android.support.test.InstrumentationRegistry; -import android.test.AndroidTestCase; +import android.support.test.runner.AndroidJUnit4; import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.content.Project; @@ -42,11 +42,15 @@ import org.catrobat.catroid.formulaeditor.datacontainer.DataContainer; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import java.util.LinkedList; import java.util.List; -public class ParserTestUserVariables extends AndroidTestCase { +import static junit.framework.Assert.assertEquals; + +@RunWith(AndroidJUnit4.class) +public class ParserTestUserVariables { private static final double USER_VARIABLE_1_VALUE_TYPE_DOUBLE = 5d; private static final String PROJECT_USER_VARIABLE = "projectUserVariable"; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/SensorLoudnessTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/SensorLoudnessTest.java index 6cc8af08fac..25336dac68e 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/SensorLoudnessTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/SensorLoudnessTest.java @@ -49,7 +49,7 @@ public void tearDown() throws Exception { @Test @UiThreadTest - public void testMicRelease() { + public void testMicRelease() throws Exception { SensorLoudness.getSensorLoudness(); SensorLoudness loudnessSensor = (SensorLoudness) Reflection.getPrivateField(SensorLoudness.class, "instance"); SimulatedSoundRecorder simSoundRec = new SimulatedSoundRecorder("/dev/null"); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/io/CatroidFieldKeySorterTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/io/CatroidFieldKeySorterTest.java index 2e1ba38fe23..7362fbb72a7 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/io/CatroidFieldKeySorterTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/io/CatroidFieldKeySorterTest.java @@ -36,7 +36,9 @@ import org.catrobat.catroid.io.XStreamFieldKeyOrder; import org.catrobat.catroid.io.XStreamMissingSerializableFieldException; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import java.lang.reflect.Field; @@ -46,11 +48,13 @@ import java.util.Map; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class CatroidFieldKeySorterTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + private static class FieldKeySorterDecorator implements FieldKeySorter { private final FieldKeySorter catroidFieldKeySorter = new CatroidFieldKeySorter(); @@ -191,11 +195,8 @@ private static class SortByAnnotationWithAliases { @Test public void testMissingFieldInAnnotationThrowsException() { - try { - xstream.toXML(new MissingFieldInAnnotation()); - fail("XStream didn't throw an exception for missing field b in annotation"); - } catch (XStreamMissingSerializableFieldException expected) { - } + exception.expect(XStreamMissingSerializableFieldException.class); + xstream.toXML(new MissingFieldInAnnotation()); } // Remove checkstyle disable when https://github.com/checkstyle/checkstyle/issues/1349 is fixed @@ -218,11 +219,8 @@ public void testSortByAnnotationIsInBaseClass() { @Test public void testMissingFieldInSubClassWithoutAnnotationThrowsException() { - try { - xstream.toXML(new SubClassWithNewMemberButWithoutAnnotation()); - fail("XStream didn't throw an exception for missing field c in annotation"); - } catch (XStreamMissingSerializableFieldException expected) { - } + exception.expect(XStreamMissingSerializableFieldException.class); + xstream.toXML(new SubClassWithNewMemberButWithoutAnnotation()); } // Remove checkstyle disable when https://github.com/checkstyle/checkstyle/issues/1349 is fixed diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/io/SoundManagerTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/io/SoundManagerTest.java index b6a98731373..112ff406a4d 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/io/SoundManagerTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/io/SoundManagerTest.java @@ -37,7 +37,9 @@ import org.catrobat.catroid.test.utils.TestUtils; import org.junit.After; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import java.io.File; @@ -47,13 +49,15 @@ import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertTrue; -import static junit.framework.Assert.fail; import static org.catrobat.catroid.common.Constants.SOUND_DIRECTORY_NAME; @RunWith(AndroidJUnit4.class) public class SoundManagerTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + private final SoundManager soundManager = SoundManager.getInstance(); private Project project; @@ -78,7 +82,7 @@ public void tearDown() throws Exception { } @Test - public void testPlaySound() { + public void testPlaySound() throws Exception { soundManager.playSoundFile(soundFile.getAbsolutePath()); MediaPlayer mediaPlayer = getMediaPlayers().get(0); @@ -87,7 +91,7 @@ public void testPlaySound() { } @Test - public void testClear() { + public void testClear() throws Exception { soundManager.playSoundFile(soundFile.getAbsolutePath()); MediaPlayer mediaPlayer = getMediaPlayers().get(0); @@ -95,15 +99,13 @@ public void testClear() { soundManager.clear(); assertTrue(getMediaPlayers().isEmpty()); - try { - mediaPlayer.isPlaying(); - fail("The media player hasn't been released"); - } catch (IllegalStateException expected) { - } + + exception.expect(IllegalStateException.class); + mediaPlayer.isPlaying(); } @Test - public void testPauseAndResume() { + public void testPauseAndResume() throws Exception { soundManager.playSoundFile(soundFile.getAbsolutePath()); MediaPlayer mediaPlayer = getMediaPlayers().get(0); @@ -117,7 +119,7 @@ public void testPauseAndResume() { } @Test - public void testPauseAndResumeMultipleSounds() { + public void testPauseAndResumeMultipleSounds() throws Exception { final int playSoundFilesCount = 3; List mediaPlayers = getMediaPlayers(); @@ -143,7 +145,7 @@ public void testPauseAndResumeMultipleSounds() { } @Test - public void testMediaPlayerLimit() { + public void testMediaPlayerLimit() throws Exception { assertEquals(7, SoundManager.MAX_MEDIA_PLAYERS); List mediaPlayers = getMediaPlayers(); @@ -155,7 +157,7 @@ public void testMediaPlayerLimit() { } @Test - public void testIfAllMediaPlayersInTheListAreUnique() { + public void testIfAllMediaPlayersInTheListAreUnique() throws Exception { List mediaPlayers = getMediaPlayers(); for (int index = 0; index < SoundManager.MAX_MEDIA_PLAYERS; index++) { SoundManager.getInstance().playSoundFile(soundFile.getAbsolutePath()); @@ -174,7 +176,7 @@ public void testInitialVolume() { } @Test - public void testSetVolume() { + public void testSetVolume() throws Exception { List mediaPlayers = getMediaPlayers(); MediaPlayerMock mediaPlayerMock = new MediaPlayerMock(); mediaPlayers.add(mediaPlayerMock); @@ -188,7 +190,7 @@ public void testSetVolume() { } @SuppressWarnings("unchecked") - private List getMediaPlayers() { + private List getMediaPlayers() throws Exception { return (List) Reflection.getPrivateField(soundManager, "mediaPlayers"); } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/io/XstreamSerializerTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/io/XstreamSerializerTest.java index 17023eff3f8..067dc5006d6 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/io/XstreamSerializerTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/io/XstreamSerializerTest.java @@ -24,7 +24,6 @@ import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; -import android.util.Log; import com.google.common.base.Charsets; import com.google.common.io.Files; @@ -57,7 +56,6 @@ import org.catrobat.catroid.exceptions.OutdatedVersionProjectException; import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.formulaeditor.FormulaElement; -import org.catrobat.catroid.formulaeditor.InterpretationException; import org.catrobat.catroid.formulaeditor.Sensors; import org.catrobat.catroid.io.StorageOperations; import org.catrobat.catroid.io.XstreamSerializer; @@ -79,12 +77,12 @@ import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertTrue; -import static junit.framework.Assert.fail; import static org.catrobat.catroid.common.Constants.CODE_XML_FILE_NAME; import static org.catrobat.catroid.common.Constants.PERMISSIONS_FILE_NAME; import static org.catrobat.catroid.common.Constants.TMP_CODE_XML_FILE_NAME; import static org.catrobat.catroid.utils.PathBuilder.buildProjectPath; +import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.is; import static org.hamcrest.number.OrderingComparison.greaterThan; import static org.junit.Assert.assertThat; @@ -183,9 +181,9 @@ public void testSerializeProject() throws Exception { Formula actualSize = ((FormulaBrick) postSpriteList.get(1).getScript(0).getBrickList().get(2)) .getFormulaWithBrickField(Brick.BrickField.SIZE); - assertEquals(size, interpretFormula(actualSize, null)); - assertEquals(xPosition, interpretFormula(actualXPosition, null).intValue()); - assertEquals(yPosition, interpretFormula(actualYPosition, null).intValue()); + assertEquals(size, actualSize.interpretFloat(null)); + assertEquals(xPosition, actualXPosition.interpretFloat(null).intValue()); + assertEquals(yPosition, actualYPosition.interpretFloat(null).intValue()); } @Test @@ -231,13 +229,11 @@ public void testSanityCheck() throws IOException { storageHandler.saveProject(project); assertTrue(currentCodeFile.exists()); - assertTrue(currentCodeFile.length() > 0); + assertThat(currentCodeFile.length(), is(greaterThan(0L))); // simulate 1st Option: tmp_code.xml exists but code.xml doesn't exist // --> saveProject process will restore from tmp_code.xml - if (!tmpCodeFile.createNewFile()) { - fail("Could not create tmp file"); - } + assertTrue(tmpCodeFile.createNewFile()); StorageOperations.transferData(currentCodeFile, tmpCodeFile); String currentCodeFileXml = Files.toString(currentCodeFile, Charsets.UTF_8); @@ -259,15 +255,6 @@ public void testSanityCheck() throws IOException { assertFalse(tmpCodeFile.exists()); } - private Float interpretFormula(Formula formula, Sprite sprite) { - try { - return formula.interpretFloat(sprite); - } catch (InterpretationException interpretationException) { - Log.d(getClass().getSimpleName(), "Formula interpretation for Formula failed.", interpretationException); - } - return Float.NaN; - } - @Test public void testGetRequiredResources() { int resources = generateMultiplePermissionsProject().getRequiredResources(); @@ -351,7 +338,7 @@ public void testSerializeSettings() throws CompatibilityProjectException, Outdat setting = project.getSettings().get(0); nxtSetting = (LegoNXTSetting) setting; - assertTrue(setting instanceof LegoNXTSetting); + assertThat(setting, instanceOf(LegoNXTSetting.class)); actualSensorMapping = nxtSetting.getSensorMapping(); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsBricksCloneTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsBricksCloneTest.java index 4e6f2c15586..847b5f58df4 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsBricksCloneTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsBricksCloneTest.java @@ -23,7 +23,6 @@ package org.catrobat.catroid.test.physics; import android.support.test.runner.AndroidJUnit4; -import android.util.Log; import org.catrobat.catroid.content.CollisionScript; import org.catrobat.catroid.content.SingleSprite; @@ -49,7 +48,6 @@ import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotSame; -import static junit.framework.Assert.fail; import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.is; @@ -58,8 +56,6 @@ @RunWith(AndroidJUnit4.class) public class PhysicsBricksCloneTest { - private static final String TAG = PhysicsBricksCloneTest.class.getSimpleName(); - private static final int BRICK_FORMULA_VALUE = 1; private static final String CLONE_BRICK_FORMULA_VALUE = "2"; @@ -95,16 +91,9 @@ public void testClonePhysicsBricksWithFormula() throws Exception { } @Test - public void testCloneCollisionReceiverBrick() { + public void testCloneCollisionReceiverBrick() throws Exception { Brick brick = new CollisionReceiverBrick(new CollisionScript(null)); - - Brick clonedBrick = null; - try { - clonedBrick = brick.clone(); - } catch (CloneNotSupportedException e) { - Log.e(TAG, "Cloning CollisionReceiverBrick not supported", e); - fail("clone of CollisionReceiverBrick not supported"); - } + Brick clonedBrick = brick.clone(); CollisionScript brickReceiverScript = (CollisionScript) Reflection.getPrivateField(brick, "collisionScript"); CollisionScript clonedBrickReceiverScript = (CollisionScript) Reflection.getPrivateField(clonedBrick, "collisionScript"); @@ -113,7 +102,7 @@ public void testCloneCollisionReceiverBrick() { } @Test - public void testCloneSetPhysicsObjectTypeBrick() throws CloneNotSupportedException { + public void testCloneSetPhysicsObjectTypeBrick() throws Exception { Brick dynamicBrick = new SetPhysicsObjectTypeBrick(PhysicsObject.Type.DYNAMIC); Brick fixedBrick = new SetPhysicsObjectTypeBrick(PhysicsObject.Type.FIXED); Brick noneBrick = new SetPhysicsObjectTypeBrick(PhysicsObject.Type.NONE); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsCollisionBetweenTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsCollisionBetweenTest.java index 81d93830727..8d779881d01 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsCollisionBetweenTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsCollisionBetweenTest.java @@ -72,7 +72,7 @@ public void setUp() { rule.initializeSpritesForCollision(); } - public void beginContactCallback(Contact contact) { + public void beginContactCallback(Contact contact) throws Exception { rule.beginContactCallback(contact); Map physicsCollisionBroadcasts = (Map) Reflection.getPrivateField(PhysicsCollision.class, @@ -87,7 +87,7 @@ public void beginContactCallback(Contact contact) { assertEquals(collisionBroadcast.getContactCounter(), rule.getContactDifference()); } - public void endContactCallback(Contact contact) { + public void endContactCallback(Contact contact) throws Exception { rule.endContactCallback(contact); Map physicsCollisionBroadcasts = (Map) Reflection.getPrivateField(PhysicsCollision.class, diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsLookTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsLookTest.java index 1c5f3bb7ed5..27027971f95 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsLookTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsLookTest.java @@ -63,10 +63,11 @@ import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; -import static junit.framework.Assert.assertTrue; -import static junit.framework.Assert.fail; import static org.catrobat.catroid.common.Constants.IMAGE_DIRECTORY_NAME; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.number.OrderingComparison.greaterThan; +import static org.junit.Assert.assertThat; @RunWith(AndroidJUnit4.class) public class PhysicsLookTest { @@ -126,7 +127,7 @@ public void testShapeComputationOfLook() { Shape[] shapes = physicsShapeBuilder.getScaledShapes(lookData, sprite.look.getSizeInUserInterfaceDimensionUnit() / 100f); - assertTrue(shapes.length > 0); + assertThat(shapes.length, is(greaterThan(0))); physicsShapeBuilder.reset(); } @@ -162,7 +163,7 @@ public void testPositionAndAngle() { } @Test - public void testSetScale() { + public void testSetScale() throws Exception { LookData lookData = new LookData(); lookData.setFile(testImage); lookData.setName(testImageFilename); @@ -182,7 +183,7 @@ public void testSetScale() { Queue vertexYQueue = new LinkedList(); shapes = (Shape[]) Reflection.getPrivateField(physicsObject, "shapes"); assertNotNull(shapes); - assertTrue(shapes.length > 0); + assertThat(shapes.length, is(greaterThan(0))); Log.d(TAG, "shapes.length: " + shapes.length); for (Shape shape : shapes) { switch (shape.getType()) { @@ -224,8 +225,7 @@ public void testSetScale() { physicsLook.setScale(testScaleFactor, testScaleFactor); shapes = (Shape[]) Reflection.getPrivateField(physicsObject, "shapes"); assertNotNull(shapes); - assertTrue(shapes.length > 0); - Log.d(TAG, "shapes.length: " + shapes.length); + assertThat(shapes.length, is(greaterThan(0))); for (Shape shape : shapes) { switch (shape.getType()) { case Chain: @@ -270,12 +270,7 @@ public void testSetLookDataWithNullPixmap() { lookData.setName(testImage.getName()); sprite.look = new PhysicsLook(sprite, physicsWorld); - try { - sprite.look.setLookData(lookData); - } catch (Exception exception) { - Log.e(TAG, "unexpected exception", exception); - fail("unexpected exception"); - } + sprite.look.setLookData(lookData); } @Test @@ -283,105 +278,57 @@ public void testDefaultValueEqualityOfPhysicsLookAndLook() { PhysicsLook physicsLook = new PhysicsLook(sprite, physicsWorld); Look look = new Look(sprite); - assertEquals("physicsLook getAngularVelocityInUserInterfaceDimensionUnit()" - + physicsLook.getAngularVelocityInUserInterfaceDimensionUnit() + " differs from look value" - + look.getAngularVelocityInUserInterfaceDimensionUnit() + ".", - physicsLook.getAngularVelocityInUserInterfaceDimensionUnit(), look.getAngularVelocityInUserInterfaceDimensionUnit()); - - assertEquals("physicsLook getXVelocityInUserInterfaceDimensionUnit()" - + physicsLook.getXVelocityInUserInterfaceDimensionUnit() + " differs from look value" - + look.getXVelocityInUserInterfaceDimensionUnit() + ".", - physicsLook.getXVelocityInUserInterfaceDimensionUnit(), look.getXVelocityInUserInterfaceDimensionUnit()); - - assertEquals("physicsLook getYVelocityInUserInterfaceDimensionUnit()" - + physicsLook.getYVelocityInUserInterfaceDimensionUnit() + " differs from look value" - + look.getYVelocityInUserInterfaceDimensionUnit() + ".", - physicsLook.getYVelocityInUserInterfaceDimensionUnit(), look.getYVelocityInUserInterfaceDimensionUnit()); - - assertEquals("physicsLook getX()" - + physicsLook.getX() + " differs from look value" - + look.getX() + ".", - physicsLook.getX(), look.getX()); - - assertEquals("physicsLook getY()" - + physicsLook.getY() + " differs from look value" - + look.getY() + ".", - physicsLook.getY(), look.getY()); - - assertEquals("physicsLook getRotation()" - + physicsLook.getRotation() + " differs from look value" - + look.getRotation() + ".", - physicsLook.getRotation(), look.getRotation()); - - assertEquals("physicsLook getLookData()" - + physicsLook.getLookData() + " differs from look value" - + look.getLookData() + ".", - physicsLook.getLookData(), look.getLookData()); - - assertEquals("physicsLook haveAllThreadsFinished()" - + physicsLook.haveAllThreadsFinished() + " differs from look value" - + look.haveAllThreadsFinished() + ".", - physicsLook.haveAllThreadsFinished(), look.haveAllThreadsFinished()); - - assertEquals("physicsLook getImagePath()" - + physicsLook.getImagePath() + " differs from look value" - + look.getImagePath() + ".", - physicsLook.getImagePath(), look.getImagePath()); - - assertEquals("physicsLook getXInUserInterfaceDimensionUnit()" - + physicsLook.getXInUserInterfaceDimensionUnit() + " differs from look value" - + look.getXInUserInterfaceDimensionUnit() + ".", - physicsLook.getXInUserInterfaceDimensionUnit(), look.getXInUserInterfaceDimensionUnit()); - - assertEquals("physicsLook getYInUserInterfaceDimensionUnit()" - + physicsLook.getYInUserInterfaceDimensionUnit() + " differs from look value" - + look.getYInUserInterfaceDimensionUnit() + ".", - physicsLook.getYInUserInterfaceDimensionUnit(), look.getYInUserInterfaceDimensionUnit()); - - assertEquals("physicsLook getAngularVelocityInUserInterfaceDimensionUnit()" - + physicsLook.getAngularVelocityInUserInterfaceDimensionUnit() + " differs from look value" - + look.getAngularVelocityInUserInterfaceDimensionUnit() + ".", - physicsLook.getAngularVelocityInUserInterfaceDimensionUnit(), look.getAngularVelocityInUserInterfaceDimensionUnit()); - - assertEquals("physicsLook getXVelocityInUserInterfaceDimensionUnit()" - + physicsLook.getXVelocityInUserInterfaceDimensionUnit() + " differs from look value" - + look.getXVelocityInUserInterfaceDimensionUnit() + ".", - physicsLook.getXVelocityInUserInterfaceDimensionUnit(), look.getXVelocityInUserInterfaceDimensionUnit()); - - assertEquals("physicsLook getYVelocityInUserInterfaceDimensionUnit()" - + physicsLook.getYVelocityInUserInterfaceDimensionUnit() + " differs from look value" - + look.getYVelocityInUserInterfaceDimensionUnit() + ".", - physicsLook.getYVelocityInUserInterfaceDimensionUnit(), look.getYVelocityInUserInterfaceDimensionUnit()); - - assertEquals("physicsLook getWidthInUserInterfaceDimensionUnit()" - + physicsLook.getWidthInUserInterfaceDimensionUnit() + " differs from look value" - + look.getWidthInUserInterfaceDimensionUnit() + ".", - physicsLook.getWidthInUserInterfaceDimensionUnit(), look.getWidthInUserInterfaceDimensionUnit()); - - assertEquals("physicsLook getHeightInUserInterfaceDimensionUnit()" - + physicsLook.getHeightInUserInterfaceDimensionUnit() + " differs from look value" - + look.getHeightInUserInterfaceDimensionUnit() + ".", - physicsLook.getHeightInUserInterfaceDimensionUnit(), look.getHeightInUserInterfaceDimensionUnit()); - - assertEquals("physicsLook getDirectionInUserInterfaceDimensionUnit()" - + physicsLook.getDirectionInUserInterfaceDimensionUnit() + " differs from look value" - + look.getDirectionInUserInterfaceDimensionUnit() + ".", - physicsLook.getDirectionInUserInterfaceDimensionUnit(), look.getDirectionInUserInterfaceDimensionUnit()); - - assertEquals("physicsLook getSizeInUserInterfaceDimensionUnit()" - + physicsLook.getSizeInUserInterfaceDimensionUnit() + " differs from look value" - + look.getSizeInUserInterfaceDimensionUnit() + ".", - physicsLook.getSizeInUserInterfaceDimensionUnit(), look.getSizeInUserInterfaceDimensionUnit()); - - assertEquals("physicsLook getTransparencyInUserInterfaceDimensionUnit()" - + physicsLook.getTransparencyInUserInterfaceDimensionUnit() + " differs from look value" - + look.getTransparencyInUserInterfaceDimensionUnit() + ".", - physicsLook.getTransparencyInUserInterfaceDimensionUnit(), look.getTransparencyInUserInterfaceDimensionUnit()); - - assertEquals("physicsLook getBrightnessInUserInterfaceDimensionUnit()" - + physicsLook.getBrightnessInUserInterfaceDimensionUnit() + " differs from look value" - + look.getBrightnessInUserInterfaceDimensionUnit() + ".", - physicsLook.getBrightnessInUserInterfaceDimensionUnit(), look.getBrightnessInUserInterfaceDimensionUnit()); + assertEquals(physicsLook.getAngularVelocityInUserInterfaceDimensionUnit(), + look.getAngularVelocityInUserInterfaceDimensionUnit()); + + assertEquals(physicsLook.getXVelocityInUserInterfaceDimensionUnit(), + look.getXVelocityInUserInterfaceDimensionUnit()); + + assertEquals(physicsLook.getYVelocityInUserInterfaceDimensionUnit(), + look.getYVelocityInUserInterfaceDimensionUnit()); + + assertEquals(physicsLook.getX(), look.getX()); + + assertEquals(physicsLook.getY(), look.getY()); + + assertEquals(physicsLook.getRotation(), look.getRotation()); + + assertEquals(physicsLook.getLookData(), look.getLookData()); + + assertEquals(physicsLook.haveAllThreadsFinished(), look.haveAllThreadsFinished()); + + assertEquals(physicsLook.getImagePath(), look.getImagePath()); + + assertEquals(physicsLook.getXInUserInterfaceDimensionUnit(), look.getXInUserInterfaceDimensionUnit()); + + assertEquals(physicsLook.getYInUserInterfaceDimensionUnit(), look.getYInUserInterfaceDimensionUnit()); + + assertEquals(physicsLook.getAngularVelocityInUserInterfaceDimensionUnit(), + look.getAngularVelocityInUserInterfaceDimensionUnit()); + + assertEquals(physicsLook.getXVelocityInUserInterfaceDimensionUnit(), + look.getXVelocityInUserInterfaceDimensionUnit()); + + assertEquals(physicsLook.getYVelocityInUserInterfaceDimensionUnit(), + look.getYVelocityInUserInterfaceDimensionUnit()); + + assertEquals(physicsLook.getWidthInUserInterfaceDimensionUnit(), + look.getWidthInUserInterfaceDimensionUnit()); + + assertEquals(physicsLook.getHeightInUserInterfaceDimensionUnit(), + look.getHeightInUserInterfaceDimensionUnit()); + + assertEquals(physicsLook.getDirectionInUserInterfaceDimensionUnit(), + look.getDirectionInUserInterfaceDimensionUnit()); + + assertEquals(physicsLook.getSizeInUserInterfaceDimensionUnit(), + look.getSizeInUserInterfaceDimensionUnit()); + + assertEquals(physicsLook.getTransparencyInUserInterfaceDimensionUnit(), + look.getTransparencyInUserInterfaceDimensionUnit()); + + assertEquals(physicsLook.getBrightnessInUserInterfaceDimensionUnit(), + look.getBrightnessInUserInterfaceDimensionUnit()); } @Test diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsObjectCollisionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsObjectCollisionTest.java index 65517c5ed12..62367f9c5e8 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsObjectCollisionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsObjectCollisionTest.java @@ -64,7 +64,7 @@ public void beginContactCallback(Contact contact) { }; @Before - public void setUp() { + public void setUp() throws Exception { rule.spritePosition = new Vector2(-125f, 0f); rule.sprite2Position = new Vector2(125f, 0f); rule.physicsObject1Type = PhysicsObject.Type.DYNAMIC; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsObjectTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsObjectTest.java index 21451c0e8e0..4f34bcd54c0 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsObjectTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsObjectTest.java @@ -23,7 +23,6 @@ package org.catrobat.catroid.test.physics; import android.support.test.runner.AndroidJUnit4; -import android.util.Log; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.physics.box2d.Body; @@ -47,7 +46,9 @@ import org.catrobat.catroid.test.utils.TestUtils; import org.junit.After; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import java.util.Locale; @@ -57,7 +58,6 @@ import static junit.framework.Assert.assertNotSame; import static junit.framework.Assert.assertNull; import static junit.framework.Assert.assertTrue; -import static junit.framework.Assert.fail; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.is; @@ -66,12 +66,14 @@ @RunWith(AndroidJUnit4.class) public class PhysicsObjectTest { + + @Rule + public final ExpectedException exception = ExpectedException.none(); + static { GdxNativesLoader.load(); } - private static final String TAG = PhysicsObjectTest.class.getSimpleName(); - private PhysicsWorld physicsWorld; @Before @@ -102,16 +104,12 @@ public void testDefaultSettings() { @Test public void testNullBody() { - try { - new PhysicsObject(null, new SingleSprite("TestSprite")); - fail("Creating a physics object with no body doesn't cause a NullPointerException"); - } catch (NullPointerException exception) { - Log.e(TAG, exception.toString()); - } + exception.expect(NullPointerException.class); + new PhysicsObject(null, new SingleSprite("TestSprite")); } @Test - public void testDefaultProperties() { + public void testDefaultProperties() throws Exception { PhysicsObject physicsObject = PhysicsTestUtils.createPhysicsObject(physicsWorld); assertEquals(PhysicsObject.Type.NONE, PhysicsTestUtils.getType(physicsObject)); @@ -130,7 +128,7 @@ public void testDefaultProperties() { } @Test - public void testSetShape() { + public void testSetShape() throws Exception { PhysicsObject physicsObject = PhysicsTestUtils.createPhysicsObject(physicsWorld); PolygonShape[] rectangle = new PolygonShape[] {PhysicsTestUtils.createRectanglePolygonShape(5.0f, 5.0f)}; physicsObject.setShape(rectangle); @@ -139,7 +137,7 @@ public void testSetShape() { } @Test - public void testSetNewShape() { + public void testSetNewShape() throws Exception { PhysicsObject physicsObject = PhysicsTestUtils.createPhysicsObject(physicsWorld); Shape[] shape = new PolygonShape[] {PhysicsTestUtils.createRectanglePolygonShape(5.0f, 5.0f)}; physicsObject.setShape(shape); @@ -153,7 +151,7 @@ public void testSetNewShape() { } @Test - public void testSetSameShape() { + public void testSetSameShape() throws Exception { PhysicsObject physicsObject = PhysicsTestUtils.createPhysicsObject(physicsWorld); Body body = PhysicsTestUtils.getBody(physicsObject); @@ -169,7 +167,7 @@ public void testSetSameShape() { } @Test - public void testSetNullShapeRemovesAllFixtures() { + public void testSetNullShapeRemovesAllFixtures() throws Exception { PhysicsObject physicsObject = PhysicsTestUtils.createPhysicsObject(physicsWorld); Body body = PhysicsTestUtils.getBody(physicsObject); @@ -182,7 +180,7 @@ public void testSetNullShapeRemovesAllFixtures() { } @Test - public void testSetShapeUpdatesDensityButNotMass() { + public void testSetShapeUpdatesDensityButNotMass() throws Exception { PhysicsObject physicsObject = PhysicsTestUtils.createPhysicsObject(physicsWorld); physicsObject.setShape(new Shape[] {PhysicsTestUtils.createRectanglePolygonShape(5.0f, 5.0f)}); Body body = PhysicsTestUtils.getBody(physicsObject); @@ -197,7 +195,7 @@ public void testSetShapeUpdatesDensityButNotMass() { } @Test - public void testSetType() { + public void testSetType() throws Exception { PhysicsObject physicsObject = PhysicsTestUtils.createPhysicsObject(physicsWorld); Body body = PhysicsTestUtils.getBody(physicsObject); @@ -215,7 +213,7 @@ public void testSetType() { } @Test - public void testSetCollisionBits() { + public void testSetCollisionBits() throws Exception { PhysicsObject physicsObject = PhysicsTestUtils.createPhysicsObject(physicsWorld, PhysicsObject.Type.NONE, 10.0f, 5.0f); checkCollisionMask(physicsObject, PhysicsWorld.CATEGORY_PHYSICSOBJECT, PhysicsWorld.MASK_NO_COLLISION); @@ -231,7 +229,7 @@ public void testSetCollisionBits() { } @Test - public void testSetTypeToDynamicUpdatesMass() { + public void testSetTypeToDynamicUpdatesMass() throws Exception { PhysicsObject physicsObject = PhysicsTestUtils.createPhysicsObject(physicsWorld, PhysicsObject.Type.NONE); Body body = PhysicsTestUtils.getBody(physicsObject); @@ -248,7 +246,7 @@ public void testSetTypeToDynamicUpdatesMass() { } @Test - public void testAngle() { + public void testAngle() throws Exception { for (PhysicsObject.Type type : PhysicsObject.Type.values()) { PhysicsObject physicsObject = PhysicsTestUtils.createPhysicsObject(physicsWorld, type); assertEquals(0.0f, PhysicsTestUtils.getBody(physicsObject).getAngle()); @@ -262,7 +260,7 @@ public void testAngle() { } @Test - public void testPosition() { + public void testPosition() throws Exception { for (PhysicsObject.Type type : PhysicsObject.Type.values()) { PhysicsObject physicsObject = PhysicsTestUtils.createPhysicsObject(physicsWorld, type); assertEquals(new Vector2(), PhysicsTestUtils.getBody(physicsObject).getPosition()); @@ -289,7 +287,7 @@ public void testPosition() { } @Test - public void testAngleAndPosition() { + public void testAngleAndPosition() throws Exception { for (PhysicsObject.Type type : PhysicsObject.Type.values()) { PhysicsObject physicsObject = PhysicsTestUtils.createPhysicsObject(physicsWorld, type); assertEquals(0.0f, PhysicsTestUtils.getBody(physicsObject).getAngle()); @@ -312,7 +310,7 @@ public void testAngleAndPosition() { } @Test - public void testSetDensity() { + public void testSetDensity() throws Exception { for (PhysicsObject.Type type : PhysicsObject.Type.values()) { PhysicsObject physicsObject = PhysicsTestUtils.createPhysicsObject(physicsWorld, type); physicsObject.setShape(new Shape[] {new PolygonShape(), new PolygonShape()}); @@ -343,7 +341,7 @@ public void testSetDensity() { } @Test - public void testSetDensityUpdatesMassData() { + public void testSetDensityUpdatesMassData() throws Exception { PhysicsObject physicsObject = PhysicsTestUtils.createPhysicsObject(physicsWorld, PhysicsObject.Type.DYNAMIC, 5.0f, 5.0f); Body body = PhysicsTestUtils.getBody(physicsObject); @@ -360,7 +358,7 @@ public void testSetDensityUpdatesMassData() { } @Test - public void testSetDensityAtMassChange() { + public void testSetDensityAtMassChange() throws Exception { PhysicsObject physicsObject = PhysicsTestUtils.createPhysicsObject(physicsWorld, PhysicsObject.Type.DYNAMIC); Body body = PhysicsTestUtils.getBody(physicsObject); @@ -377,7 +375,7 @@ public void testSetDensityAtMassChange() { } @Test - public void testSetFriction() { + public void testSetFriction() throws Exception { for (PhysicsObject.Type type : PhysicsObject.Type.values()) { PhysicsObject physicsObject = PhysicsTestUtils.createPhysicsObject(physicsWorld, type); physicsObject.setShape(new Shape[] {new PolygonShape(), new PolygonShape()}); @@ -405,7 +403,7 @@ public void testSetFriction() { } @Test - public void testSetBounceFactor() { + public void testSetBounceFactor() throws Exception { for (PhysicsObject.Type type : PhysicsObject.Type.values()) { PhysicsObject physicsObject = PhysicsTestUtils.createPhysicsObject(physicsWorld, type); physicsObject.setShape(new Shape[] {new PolygonShape(), new PolygonShape()}); @@ -433,7 +431,7 @@ public void testSetBounceFactor() { } @Test - public void testMass() { + public void testMass() throws Exception { for (PhysicsObject.Type type : PhysicsObject.Type.values()) { PhysicsObject physicsObject = PhysicsTestUtils.createPhysicsObject(physicsWorld, type, 5.0f, 5.0f); Body body = PhysicsTestUtils.getBody(physicsObject); @@ -470,7 +468,7 @@ private void checkBodyMassDependingOnType(PhysicsObject.Type type, Body body, fl } @Test - public void testMassWithNoShapeArea() { + public void testMassWithNoShapeArea() throws Exception { PhysicsObject[] physicsObjects = { PhysicsTestUtils.createPhysicsObject(physicsWorld, PhysicsObject.Type.DYNAMIC), PhysicsTestUtils.createPhysicsObject(physicsWorld, PhysicsObject.Type.DYNAMIC, 0.0f, 0.0f)}; @@ -489,7 +487,7 @@ public void testMassWithNoShapeArea() { } @Test - public void testSetRotationSpeed() { + public void testSetRotationSpeed() throws Exception { PhysicsObject physicsObject = PhysicsTestUtils.createPhysicsObject(physicsWorld, PhysicsObject.Type.DYNAMIC); Body body = PhysicsTestUtils.getBody(physicsObject); @@ -501,7 +499,7 @@ public void testSetRotationSpeed() { } @Test - public void testSetVelocity() { + public void testSetVelocity() throws Exception { PhysicsObject physicsObject = PhysicsTestUtils.createPhysicsObject(physicsWorld, PhysicsObject.Type.DYNAMIC); Body body = PhysicsTestUtils.getBody(physicsObject); @@ -514,7 +512,7 @@ public void testSetVelocity() { } @Test - public void testIfOnEndgeBounce() { + public void testIfOnEndgeBounce() throws Exception { PhysicsObject physicsObject = PhysicsTestUtils.createPhysicsObject(physicsWorld, PhysicsObject.Type.DYNAMIC, 1.0f, 1.0f); Sprite sprite = new SingleSprite("TestSprite"); @@ -531,7 +529,7 @@ public void testIfOnEndgeBounce() { /* * Helper */ - private void checkCollisionMask(PhysicsObject physicsObject, short categoryBits, short maskBits) { + private void checkCollisionMask(PhysicsObject physicsObject, short categoryBits, short maskBits) throws Exception { FixtureDef fixtureDef = PhysicsTestUtils.getFixtureDef(physicsObject); assertEquals(categoryBits, fixtureDef.filter.categoryBits); assertEquals(maskBits, fixtureDef.filter.maskBits); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsShapeBuilderTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsShapeBuilderTest.java index 2ecd3d262c6..6e91bbf3dd3 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsShapeBuilderTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsShapeBuilderTest.java @@ -24,7 +24,6 @@ import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; -import android.util.Log; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.physics.box2d.PolygonShape; @@ -56,15 +55,16 @@ import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; -import static junit.framework.Assert.assertTrue; import static org.catrobat.catroid.common.Constants.IMAGE_DIRECTORY_NAME; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.lessThan; +import static org.hamcrest.Matchers.lessThanOrEqualTo; +import static org.junit.Assert.assertThat; @RunWith(AndroidJUnit4.class) public class PhysicsShapeBuilderTest { - private static final String TAG = PhysicsShapeBuilderTest.class.getSimpleName(); - private PhysicsShapeBuilder physicsShapeBuilder; private PhysicsWorld physicsWorld; private PhysicsLook physicsLook; @@ -141,7 +141,7 @@ public void testSimpleSingleConvexPolygon() { } @Test - public void testDifferentAccuracySettings() { + public void testDifferentAccuracySettings() throws Exception { LookData lookData = PhysicsTestUtils.generateLookData(complexSingleConvexPolygonFile); physicsLook.setLookData(lookData); @@ -152,48 +152,32 @@ public void testDifferentAccuracySettings() { Shape[] highestAccuracyShapes = null; for (int accuracyIdx = 1; accuracyIdx < accuracyLevels.length; accuracyIdx++) { Shape[] higherAccuracyShapes = physicsShapeBuilder.getScaledShapes(lookData, accuracyLevels[accuracyIdx]); - assertTrue(lowerAccuracyShapes.length <= higherAccuracyShapes.length); + assertThat(lowerAccuracyShapes.length, is(lessThanOrEqualTo(higherAccuracyShapes.length))); lowerAccuracyShapes = higherAccuracyShapes; highestAccuracyShapes = higherAccuracyShapes; } - assertTrue(lowestAccuracyShapes.length < highestAccuracyShapes.length); + assertThat(lowestAccuracyShapes.length, is(lessThan(highestAccuracyShapes.length))); } private void checkBuiltShapes(Shape[] shapes, int expectedPolynomCount, int[] expectedVertices) { - boolean debug = false; - assertNotNull(shapes); - - if (!debug) { - assertEquals(expectedPolynomCount, shapes.length); - } - if (!debug) { - assertEquals(expectedPolynomCount, expectedVertices.length); - } + assertEquals(expectedPolynomCount, shapes.length); + assertEquals(expectedPolynomCount, expectedVertices.length); for (int idx = 0; idx < shapes.length; idx++) { Shape shape = shapes[idx]; switch (shape.getType()) { case Chain: - Log.d(TAG, "type = Chain: "); - break; case Circle: - Log.d(TAG, "type = Circle: "); - break; case Edge: - Log.d(TAG, "type = Edge: "); break; case Polygon: int vertexCount = ((PolygonShape) shape).getVertexCount(); - Log.d(TAG, "type = Polygon: " + vertexCount); for (int vertexIdx = 0; vertexIdx < vertexCount; vertexIdx++) { Vector2 vertex = new Vector2(); ((PolygonShape) shape).getVertex(vertexIdx, vertex); - Log.d(TAG, "x=" + vertex.x + ";y=" + vertex.y); - } - if (!debug) { - assertEquals(expectedVertices[idx], vertexCount); } + assertEquals(expectedVertices[idx], vertexCount); break; } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsShapeScaleUtilsTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsShapeScaleUtilsTest.java index 92a490e60f1..0ec3353974c 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsShapeScaleUtilsTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsShapeScaleUtilsTest.java @@ -123,7 +123,7 @@ public void testShapeScaling() { } @Test - public void testScaleCoordinate() { + public void testScaleCoordinate() throws Exception { float coordinate = 100f; float expectedCoordinate = 50f; float actualCoordinate; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsSpriteCloneTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsSpriteCloneTest.java index bf680c827c2..7a34fc80f0b 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsSpriteCloneTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsSpriteCloneTest.java @@ -24,7 +24,6 @@ import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; -import android.util.Log; import com.badlogic.gdx.math.Vector2; @@ -71,15 +70,12 @@ import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertNotSame; import static junit.framework.Assert.assertTrue; -import static junit.framework.Assert.fail; import static org.catrobat.catroid.common.Constants.IMAGE_DIRECTORY_NAME; @RunWith(AndroidJUnit4.class) public class PhysicsSpriteCloneTest { - private static final String TAG = PhysicsSpriteCloneTest.class.getSimpleName(); - private Sprite sprite; private Project project; private static final float BOUNCE_TEST_VALUE = 0.5f; @@ -159,7 +155,7 @@ public void testSpriteCloneWithPhysicsScriptAndBricks() throws IOException { } @Test - public void testSpriteCloneWithCollisionScript() throws IOException { + public void testSpriteCloneWithCollisionScript() throws IOException, InterpretationException { CollisionScript collisionScript = new CollisionScript(null); collisionScript.getScriptBrick(); Brick setBounceBrick = new SetBounceBrick(BOUNCE_TEST_VALUE); @@ -184,12 +180,8 @@ public void testSpriteCloneWithCollisionScript() throws IOException { Formula clonedSetBounceBrickFormula = ((FormulaBrick) clonedSetBounceBrick) .getFormulaWithBrickField(Brick.BrickField.PHYSICS_BOUNCE_FACTOR); float clonedBounceFactorValue = 0; - try { - clonedBounceFactorValue = clonedSetBounceBrickFormula.interpretFloat(clonedSprite); - } catch (InterpretationException interpretationException) { - Log.e(TAG, "InterpretationException thrown while interpreting.", interpretationException); - fail("InterpretationException thrown while interpreting."); - } + clonedBounceFactorValue = clonedSetBounceBrickFormula.interpretFloat(clonedSprite); + assertEquals(BOUNCE_TEST_VALUE, clonedBounceFactorValue); } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsWorldTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsWorldTest.java index a1a28f4516c..18ed2294b0e 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsWorldTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsWorldTest.java @@ -23,7 +23,6 @@ package org.catrobat.catroid.test.physics; import android.support.test.runner.AndroidJUnit4; -import android.util.Log; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.physics.box2d.World; @@ -38,7 +37,9 @@ import org.catrobat.catroid.test.utils.Reflection.ParameterList; import org.junit.After; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import java.util.Map; @@ -47,22 +48,24 @@ import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertTrue; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class PhysicsWorldTest { + + @Rule + public final ExpectedException exception = ExpectedException.none(); + static { GdxNativesLoader.load(); } - private static final String TAG = PhysicsWorldTest.class.getSimpleName(); private PhysicsWorld physicsWorld; private World world; private Map physicsObjects; @SuppressWarnings("unchecked") @Before - public void setUp() { + public void setUp() throws Exception { physicsWorld = new PhysicsWorld(1920, 1600); world = (World) Reflection.getPrivateField(physicsWorld, "world"); physicsObjects = (Map) Reflection.getPrivateField(physicsWorld, "physicsObjects"); @@ -77,7 +80,7 @@ public void tearDown() { } @Test - public void testDefaultSettings() { + public void testDefaultSettings() throws Exception { assertEquals(10.0f, PhysicsWorld.RATIO); assertEquals(3, PhysicsWorld.VELOCITY_ITERATIONS); assertEquals(3, PhysicsWorld.POSITION_ITERATIONS); @@ -116,12 +119,8 @@ public void testGravity() { @Test public void testGetNullPhysicsObject() { - try { - physicsWorld.getPhysicsObject(null); - fail("Get physics object of a null sprite didn't cause a null pointer exception"); - } catch (NullPointerException exception) { - Log.d(TAG, "Exception thrown as expected"); - } + exception.expect(NullPointerException.class); + physicsWorld.getPhysicsObject(null); } @Test @@ -136,7 +135,7 @@ public void testGetPhysicsObject() { } @Test - public void testCreatePhysicsObject() { + public void testCreatePhysicsObject() throws Exception { Object[] values = {new Sprite("testsprite")}; ParameterList paramList = new ParameterList(values); PhysicsObject physicsObject = (PhysicsObject) Reflection.invokeMethod(physicsWorld, "createPhysicsObject", diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/GravityActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/GravityActionTest.java index b996372dd41..22fccf85390 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/GravityActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/GravityActionTest.java @@ -39,7 +39,10 @@ import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertTrue; + +import static org.hamcrest.Matchers.is; +import static org.hamcrest.number.OrderingComparison.greaterThan; +import static org.junit.Assert.assertThat; @RunWith(AndroidJUnit4.class) public class GravityActionTest { @@ -64,7 +67,7 @@ public void setUp() throws Exception { } @Test - public void testDefaultGravity() { + public void testDefaultGravity() throws Exception { Vector2 gravityVector = ((World) Reflection.getPrivateField(PhysicsWorld.class, physicsWorld, "world")) .getGravity(); assertEquals(PhysicsWorld.DEFAULT_GRAVITY.x, gravityVector.x); @@ -83,7 +86,7 @@ public void testVaryingGravity() { physicsWorld.setGravity(0.0f, PhysicsWorld.DEFAULT_GRAVITY.y * 2); simulate(); float velocityByDuplexGravity = Math.abs(physicsObject.getVelocity().y); - assertTrue(velocityByDuplexGravity > velocityByDefaultGravity); + assertThat(velocityByDuplexGravity, is(greaterThan(velocityByDefaultGravity))); } private void simulate() { @@ -92,7 +95,7 @@ private void simulate() { for (int step = 1; step < TEST_STEP_COUNT; step++) { physicsWorld.step(TEST_STEP_DELTA_TIME); postVelocityYValue = Math.abs(physicsObject.getVelocity().y); - assertTrue(postVelocityYValue > preVelocityYValue); + assertThat(postVelocityYValue, is(greaterThan(preVelocityYValue))); preVelocityYValue = postVelocityYValue; } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/IfOnEdgeBouncePhysicsActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/IfOnEdgeBouncePhysicsActionTest.java index 3b236e3b874..97692f7a26c 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/IfOnEdgeBouncePhysicsActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/IfOnEdgeBouncePhysicsActionTest.java @@ -140,7 +140,7 @@ public void testVelocityThresholdAtTopCollision() { physicsWorld.step(0.3f); logState("Values after step of physics world", sprite, physicsObject); - assertTrue(sprite.look.getYInUserInterfaceDimensionUnit() < setYValue); + assertThat(sprite.look.getYInUserInterfaceDimensionUnit(), is(lessThan(setYValue))); } @Test @@ -195,12 +195,12 @@ public void testSpriteOverlapsRightAndTopAxis() { physicsWorld.step(2.3f); logState("Values after second step of physics world", sprite, physicsObject); - assertTrue(sprite.look.getXInUserInterfaceDimensionUnit() < setXValue); - assertTrue(sprite.look.getYInUserInterfaceDimensionUnit() < setYValue); + assertThat(sprite.look.getXInUserInterfaceDimensionUnit(), is(lessThan(setXValue))); + assertThat(sprite.look.getYInUserInterfaceDimensionUnit(), is(lessThan(setYValue))); } @Test - public void testCollisionBroadcastOnIfOnEdgeBounce() { + public void testCollisionBroadcastOnIfOnEdgeBounce() throws Exception { assertNotNull(sprite.look.getLookData()); CollisionScript spriteCollisionScript = new CollisionScript(null); @@ -245,8 +245,8 @@ public void testCollisionBroadcastOnIfOnEdgeBounce() { assertFalse(activeVerticalBounces.isEmpty()); assertFalse(activeHorizontalBounces.isEmpty()); - assertTrue(setXValue > sprite.look.getXInUserInterfaceDimensionUnit()); - assertTrue(setYValue > sprite.look.getYInUserInterfaceDimensionUnit()); + assertThat(sprite.look.getXInUserInterfaceDimensionUnit(), is(lessThan(setXValue))); + assertThat(sprite.look.getYInUserInterfaceDimensionUnit(), is(lessThan(setYValue))); physicsWorld.step(2.0f); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/PhysicsObjectStateTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/PhysicsObjectStateTest.java index 279d089e956..8de7b863ff5 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/PhysicsObjectStateTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/PhysicsObjectStateTest.java @@ -65,7 +65,7 @@ public void setUp() throws Exception { } @Test - public void testVisibility() { + public void testVisibility() throws Exception { allConditionsInactiveCheck(); transparency(100); hangupNonCollidingActiveCheck(); @@ -98,7 +98,7 @@ public void testVisibility() { } @Test - public void testPos() { + public void testPos() throws Exception { allConditionsInactiveCheck(); setX(10 + PhysicsWorld.activeArea.x); hangupNonCollidingActiveCheck(); @@ -119,7 +119,7 @@ public void testPos() { } @Test - public void testGlideTo() { + public void testGlideTo() throws Exception { allConditionsInactiveCheck(); Action action = glideTo(new Formula(100), new Formula(100)); hangupFixedActiveCheck(); @@ -128,7 +128,7 @@ public void testGlideTo() { } @Test - public void testPositionAndGlideTo() { + public void testPositionAndGlideTo() throws Exception { allConditionsInactiveCheck(); Action action = glideTo(new Formula(10 + PhysicsWorld.activeArea.x), new Formula(100)); hangupFixedActiveCheck(); @@ -139,7 +139,7 @@ public void testPositionAndGlideTo() { } @Test - public void testVisibleAndPositionAndGlideTo() { + public void testVisibleAndPositionAndGlideTo() throws Exception { allConditionsInactiveCheck(); Action action = glideTo(new Formula(10 + PhysicsWorld.activeArea.x), new Formula(100)); hangupFixedActiveCheck(); @@ -171,7 +171,7 @@ public void testVisibleAndPositionAndGlideTo() { // HELPER ---------------------------------------------------------------------------------------------------------- - private void allConditionsInactiveCheck() { + private void allConditionsInactiveCheck() throws Exception { ((PhysicsLook) sprite.look).updatePhysicsObjectState(true); boolean hangedUp = (Boolean) Reflection.getPrivateField(physicsObjectStateHandler, "hangedUp"); assertFalse(hangedUp); @@ -183,7 +183,7 @@ private void allConditionsInactiveCheck() { assertFalse(fixed); } - private void hangupNonCollidingActiveCheck() { + private void hangupNonCollidingActiveCheck() throws Exception { ((PhysicsLook) sprite.look).updatePhysicsObjectState(true); boolean hangedUp = (Boolean) Reflection.getPrivateField(physicsObjectStateHandler, "hangedUp"); assertTrue(hangedUp); @@ -195,7 +195,7 @@ private void hangupNonCollidingActiveCheck() { assertFalse(fixed); } - private void hangupFixedActiveCheck() { + private void hangupFixedActiveCheck() throws Exception { ((PhysicsLook) sprite.look).updatePhysicsObjectState(true); boolean hangedUp = (Boolean) Reflection.getPrivateField(physicsObjectStateHandler, "hangedUp"); assertTrue(hangedUp); @@ -207,7 +207,7 @@ private void hangupFixedActiveCheck() { assertTrue(fixed); } - private void hangupFixedNonCollidingActiveCheck() { + private void hangupFixedNonCollidingActiveCheck() throws Exception { ((PhysicsLook) sprite.look).updatePhysicsObjectState(true); boolean hangedUp = (Boolean) Reflection.getPrivateField(physicsObjectStateHandler, "hangedUp"); assertTrue(hangedUp); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/SetBounceFactorActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/SetBounceFactorActionTest.java index 6ca7cbe67bd..c57c355ff95 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/SetBounceFactorActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/SetBounceFactorActionTest.java @@ -40,7 +40,10 @@ import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertTrue; + +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.lessThan; +import static org.junit.Assert.assertThat; @RunWith(AndroidJUnit4.class) public class SetBounceFactorActionTest { @@ -132,7 +135,7 @@ public void testNotANumberFormula() { public void testBounceWithDifferentValues() { float bounce01Height = bounce(0.1f); float bounce06Height = bounce(0.6f); - assertTrue(bounce01Height < bounce06Height); + assertThat(bounce01Height, is(lessThan(bounce06Height))); } private float bounce(float bounceFactor) { diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/SetGravityActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/SetGravityActionTest.java index dd42a80593e..ad04667395d 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/SetGravityActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/SetGravityActionTest.java @@ -59,7 +59,7 @@ public void setUp() { } @Test - public void testNormalBehavior() { + public void testNormalBehavior() throws Exception { float gravityX = GRAVITY_X; float gravityY = GRAVITY_Y; @@ -72,7 +72,7 @@ public void testNormalBehavior() { } @Test - public void testNegativeValue() { + public void testNegativeValue() throws Exception { float gravityX = 10.0f; float gravityY = -10.0f; @@ -85,7 +85,7 @@ public void testNegativeValue() { } @Test - public void testZeroValue() { + public void testZeroValue() throws Exception { float gravityX = 0.0f; float gravityY = 10.0f; @@ -97,7 +97,7 @@ public void testZeroValue() { assertEquals(gravityY, gravityVector.y); } - private void initGravityValues(float gravityX, float gravityY) { + private void initGravityValues(float gravityX, float gravityY) throws Exception { Action action = sprite.getActionFactory().createSetGravityAction(sprite, new Formula(gravityX), new Formula(gravityY)); Vector2 gravityVector = ((World) Reflection.getPrivateField(PhysicsWorld.class, physicsWorld, "world")) @@ -110,7 +110,7 @@ private void initGravityValues(float gravityX, float gravityY) { } @Test - public void testBrickWithStringFormula() { + public void testBrickWithStringFormula() throws Exception { sprite.getActionFactory().createSetGravityAction(sprite, new Formula(String.valueOf(GRAVITY_X)), new Formula(String.valueOf(GRAVITY_Y))).act(1.0f); Vector2 gravityVector = ((World) Reflection.getPrivateField(PhysicsWorld.class, physicsWorld, "world")) @@ -128,7 +128,7 @@ public void testBrickWithStringFormula() { } @Test - public void testNullFormula() { + public void testNullFormula() throws Exception { sprite.getActionFactory().createSetGravityAction(sprite, null, null).act(1.0f); Vector2 gravityVector = ((World) Reflection.getPrivateField(PhysicsWorld.class, physicsWorld, "world")) .getGravity(); @@ -138,7 +138,7 @@ public void testNullFormula() { } @Test - public void testNotANumberFormula() { + public void testNotANumberFormula() throws Exception { sprite.getActionFactory().createSetGravityAction(sprite, new Formula(Double.NaN), new Formula(Double.NaN)) .act(1.0f); Vector2 gravityVector = ((World) Reflection.getPrivateField(PhysicsWorld.class, physicsWorld, "world")) diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/SetMassActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/SetMassActionTest.java index f52d393c43f..e5a8e3dee61 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/SetMassActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/SetMassActionTest.java @@ -37,7 +37,10 @@ import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertTrue; + +import static org.hamcrest.Matchers.greaterThan; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertThat; @RunWith(AndroidJUnit4.class) public class SetMassActionTest { @@ -125,6 +128,6 @@ public void testMassAcceleration() { physicsWorld.step(0.25f); float currentVelocity = Math.abs(physicsObject.getVelocity().y); - assertTrue((currentVelocity - lastVelocity) > 1.0f); + assertThat((currentVelocity - lastVelocity), is(greaterThan(1.0f))); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/TurnLeftRightSpeedActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/TurnLeftRightSpeedActionTest.java index e564f31f15d..795e4196fbf 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/TurnLeftRightSpeedActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/TurnLeftRightSpeedActionTest.java @@ -35,7 +35,11 @@ import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertTrue; + +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.lessThan; +import static org.hamcrest.number.OrderingComparison.greaterThan; +import static org.junit.Assert.assertThat; @RunWith(AndroidJUnit4.class) public class TurnLeftRightSpeedActionTest { @@ -75,7 +79,7 @@ public void testLeftSpeedRotation() { physicsWorld.step(TEST_STEP_DELTA_TIME); float postStepDirection = physicsObject.getDirection(); assertEquals(expectedDegrees, postStepDirection - preStepDirection, TestUtils.DELTA); - assertTrue(postStepDirection > preStepDirection); + assertThat(postStepDirection, is(greaterThan(preStepDirection))); } } @@ -93,7 +97,7 @@ public void testRightSpeedRotation() { physicsWorld.step(TEST_STEP_DELTA_TIME); float postStepDirection = physicsObject.getDirection(); assertEquals(expectedDegrees, postStepDirection - preStepDirection, TestUtils.DELTA); - assertTrue(postStepDirection < preStepDirection); + assertThat(postStepDirection, is(lessThan(preStepDirection))); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/conditional/HideActionAndCollisionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/conditional/HideActionAndCollisionTest.java index 4737cfe3112..eeb5cbd55e4 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/conditional/HideActionAndCollisionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/conditional/HideActionAndCollisionTest.java @@ -34,14 +34,18 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertTrue; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class HideActionAndCollisionTest { + + @Rule + public final ExpectedException exception = ExpectedException.none(); + @Rule public PhysicsCollisionTestRule rule = new PhysicsCollisionTestRule(); @@ -88,10 +92,7 @@ public void testHide() { public void testNullSprite() { ActionFactory factory = new ActionFactory(); Action action = factory.createHideAction(null); - try { - action.act(1.0f); - fail("Execution of HideBrick with null Sprite did not cause a NullPointerException to be thrown"); - } catch (NullPointerException expected) { - } + exception.expect(NullPointerException.class); + action.act(1.0f); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/scratchconverter/WebSocketClientTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/scratchconverter/WebSocketClientTest.java index a8978c61546..fd6b4b3fc4f 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/scratchconverter/WebSocketClientTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/scratchconverter/WebSocketClientTest.java @@ -153,7 +153,7 @@ public Future answer(InvocationOnMock invocation) throws Throwable { @Test public void testAsyncConnectAndAuthenticateSuccessfullyConnectedAndAuthenticatedWithValidClientID() - throws NoSuchFieldException, IllegalAccessException { + throws Exception { final long expectedClientID = VALID_CLIENT_ID; Reflection.setPrivateField(WebSocketClient.class, webSocketClient, "clientID", expectedClientID); @@ -217,7 +217,7 @@ public Future answer(InvocationOnMock invocation) throws Throwable { @Test public void testAsyncConnectAndAuthenticateSuccessfullyConnectedAndAuthenticatedWithInvalidClientID() - throws NoSuchFieldException, IllegalAccessException { + throws Exception { final long unexpectedInvalidClientID = Client.INVALID_CLIENT_ID; Reflection.setPrivateField(WebSocketClient.class, webSocketClient, "clientID", unexpectedInvalidClientID); @@ -323,8 +323,7 @@ public Future answer(InvocationOnMock invocation) throws Throwable { } @Test - public void testAsyncConnectAndAuthenticateAuthenticationFailed() throws NoSuchFieldException, - IllegalAccessException { + public void testAsyncConnectAndAuthenticateAuthenticationFailed() throws Exception { final long clientID = VALID_CLIENT_ID; @@ -382,8 +381,7 @@ public Future answer(InvocationOnMock invocation) throws Throwable { } @Test - public void testServerClosedConnectionAfterConnectionIsEstablished() - throws NoSuchFieldException, IllegalAccessException { + public void testServerClosedConnectionAfterConnectionIsEstablished() throws Exception { final String expectedClosedExceptionMessage = "Successfully closed the connection!"; final Client.ConnectAuthCallback connectAuthCallbackMock = Mockito.mock(Client.ConnectAuthCallback.class); @@ -412,7 +410,7 @@ public Void answer(InvocationOnMock invocation) throws Throwable { } @Test - public void testClientClosedConnection() throws InterruptedException, NoSuchFieldException, IllegalAccessException { + public void testClientClosedConnection() throws Exception { final String expectedExceptionMessage = "Client closed connection successfully!"; final Client.ConnectAuthCallback connectAuthCallbackMock = Mockito.mock(Client.ConnectAuthCallback.class); @@ -458,7 +456,7 @@ public Void answer(InvocationOnMock invocation) throws Throwable { // Command tests //------------------------------------------------------------------------------------------------------------------ @Test - public void testSendRetrieveInfoCommand() throws NoSuchFieldException, IllegalAccessException { + public void testSendRetrieveInfoCommand() throws Exception { final RetrieveInfoCommand expectedRetrieveInfoCommand = new RetrieveInfoCommand(); final WebSocket webSocketMock = Mockito.mock(WebSocket.class); @@ -485,7 +483,7 @@ public Void answer(InvocationOnMock invocation) throws Throwable { } @Test - public void testSendScheduleJobCommand() throws NoSuchFieldException, IllegalAccessException { + public void testSendScheduleJobCommand() throws Exception { final long expectedJobID = 1; final boolean expectedForceValue = false; final boolean expectedVerboseValue = false; @@ -542,7 +540,7 @@ public Void answer(InvocationOnMock invocation) throws Throwable { // Event tests //------------------------------------------------------------------------------------------------------------------ @Test - public void testReceivedOnBaseMessageEventWithInfoMessage() throws NoSuchFieldException, IllegalAccessException { + public void testReceivedOnBaseMessageEventWithInfoMessage() throws Exception { final Job expectedUnscheduledJob = new Job(1, "Test program", new WebImage(Uri.parse("http://www.catrobat.org/images/logo.png"))); expectedUnscheduledJob.setState(Job.State.UNSCHEDULED); @@ -639,8 +637,7 @@ public Void answer(InvocationOnMock invocation) throws Throwable { } @Test - public void testReceivedOnBaseMessageEventWithErrorMessageWhenClientIsNotConnected() - throws NoSuchFieldException, IllegalAccessException { + public void testReceivedOnBaseMessageEventWithErrorMessageWhenClientIsNotConnected() throws Exception { final String expectedErrorMessageString = "Error message successfully received"; final ErrorMessage expectedErrorMessage = new ErrorMessage(expectedErrorMessageString); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/scratchconverter/protocol/JobHandlerTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/scratchconverter/protocol/JobHandlerTest.java index 8df58b0826f..b0fff5f2225 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/scratchconverter/protocol/JobHandlerTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/scratchconverter/protocol/JobHandlerTest.java @@ -86,8 +86,6 @@ public void testReceivedJobMessageWithWrongJobIDShouldFail() { } catch (IllegalArgumentException ex) { assertEquals(Job.State.SCHEDULED, expectedJob.getState()); verifyZeroInteractions(convertCallbackMock); - } catch (Exception ex) { - fail("Unexpected exception thrown!"); } } @@ -102,8 +100,6 @@ public void testReceivedJobMessageWhenJobIsNotInProgressShouldFail() { } catch (IllegalArgumentException ex) { assertEquals(givenState, expectedJob.getState()); verifyZeroInteractions(convertCallbackMock); - } catch (Exception ex) { - fail("Unexpected exception thrown!"); } } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/scratchconverter/protocol/WebSocketMessageListenerTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/scratchconverter/protocol/WebSocketMessageListenerTest.java index e8a763a33cd..03227b084db 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/scratchconverter/protocol/WebSocketMessageListenerTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/scratchconverter/protocol/WebSocketMessageListenerTest.java @@ -73,6 +73,10 @@ import static junit.framework.Assert.assertNull; import static junit.framework.Assert.assertTrue; +import static org.hamcrest.Matchers.greaterThan; +import static org.hamcrest.Matchers.instanceOf; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.times; @@ -124,7 +128,7 @@ public void testReceivingClientIDMessage() { @Override public Void answer(InvocationOnMock invocation) throws Throwable { assertNotNull(invocation.getArguments()[0]); - assertTrue(invocation.getArguments()[0] instanceof ClientIDMessage); + assertThat(invocation.getArguments()[0], is(instanceOf(ClientIDMessage.class))); ClientIDMessage clientIDMessage = (ClientIDMessage) invocation.getArguments()[0]; assertEquals(expectedClientID, clientIDMessage.getClientID()); return null; @@ -150,7 +154,7 @@ public void testReceivingErrorMessage() { @Override public Void answer(InvocationOnMock invocation) throws Throwable { assertNotNull(invocation.getArguments()[0]); - assertTrue(invocation.getArguments()[0] instanceof ErrorMessage); + assertThat(invocation.getArguments()[0], is(instanceOf(ErrorMessage.class))); ErrorMessage errorMessage = (ErrorMessage) invocation.getArguments()[0]; assertEquals(expectedErrorMessage, errorMessage.getMessage()); return null; @@ -186,7 +190,7 @@ public void testReceivingInfoMessage() { @Override public Void answer(InvocationOnMock invocation) throws Throwable { assertNotNull(invocation.getArguments()[0]); - assertTrue(invocation.getArguments()[0] instanceof InfoMessage); + assertThat(invocation.getArguments()[0], is(instanceOf(InfoMessage.class))); InfoMessage infoMessage = (InfoMessage) invocation.getArguments()[0]; assertEquals(expectedCatrobatLanguageVersion, infoMessage.getCatrobatLanguageVersion()); Job[] jobs = infoMessage.getJobList(); @@ -238,7 +242,7 @@ public void testReceivingJobAlreadyRunningMessage() { @Override public Void answer(InvocationOnMock invocation) throws Throwable { assertNotNull(invocation.getArguments()[0]); - assertTrue(invocation.getArguments()[0] instanceof JobAlreadyRunningMessage); + assertThat(invocation.getArguments()[0], is(instanceOf(JobAlreadyRunningMessage.class))); JobAlreadyRunningMessage alreadyRunningMessage; alreadyRunningMessage = (JobAlreadyRunningMessage) invocation.getArguments()[0]; assertEquals(JOB_ID_OF_JOB_HANDLER, alreadyRunningMessage.getJobID()); @@ -270,7 +274,7 @@ public void testReceivingJobFailedMessage() { @Override public Void answer(InvocationOnMock invocation) throws Throwable { assertNotNull(invocation.getArguments()[0]); - assertTrue(invocation.getArguments()[0] instanceof JobFailedMessage); + assertThat(invocation.getArguments()[0], is(instanceOf(JobFailedMessage.class))); JobFailedMessage failedMessage = (JobFailedMessage) invocation.getArguments()[0]; assertEquals(JOB_ID_OF_JOB_HANDLER, failedMessage.getJobID()); assertEquals(expectedJobFailedMessage, failedMessage.getMessage()); @@ -300,7 +304,7 @@ public void testReceivingJobFinishedMessage() { @Override public Void answer(InvocationOnMock invocation) throws Throwable { assertNotNull(invocation.getArguments()[0]); - assertTrue(invocation.getArguments()[0] instanceof JobFinishedMessage); + assertThat(invocation.getArguments()[0], is(instanceOf(JobFinishedMessage.class))); JobFinishedMessage finishedMessage = (JobFinishedMessage) invocation.getArguments()[0]; assertEquals(JOB_ID_OF_JOB_HANDLER, finishedMessage.getJobID()); assertEquals(expectedDownloadURL, finishedMessage.getDownloadURL()); @@ -334,7 +338,7 @@ public void testReceivingJobOutputMessage() { @Override public Void answer(InvocationOnMock invocation) throws Throwable { assertNotNull(invocation.getArguments()[0]); - assertTrue(invocation.getArguments()[0] instanceof JobOutputMessage); + assertThat(invocation.getArguments()[0], is(instanceOf(JobOutputMessage.class))); JobOutputMessage outputMessage = (JobOutputMessage) invocation.getArguments()[0]; assertEquals(JOB_ID_OF_JOB_HANDLER, outputMessage.getJobID()); final String[] lines = outputMessage.getLines(); @@ -365,7 +369,7 @@ public void testReceivingJobProgressMessage() { @Override public Void answer(InvocationOnMock invocation) throws Throwable { assertNotNull(invocation.getArguments()[0]); - assertTrue(invocation.getArguments()[0] instanceof JobProgressMessage); + assertThat(invocation.getArguments()[0], is(instanceOf(JobProgressMessage.class))); JobProgressMessage progressMessage = (JobProgressMessage) invocation.getArguments()[0]; assertEquals(JOB_ID_OF_JOB_HANDLER, progressMessage.getJobID()); assertEquals(expectedProgress, progressMessage.getProgress()); @@ -391,7 +395,7 @@ public void testReceivingJobReadyMessage() { @Override public Void answer(InvocationOnMock invocation) throws Throwable { assertNotNull(invocation.getArguments()[0]); - assertTrue(invocation.getArguments()[0] instanceof JobReadyMessage); + assertThat(invocation.getArguments()[0], is(instanceOf(JobReadyMessage.class))); JobReadyMessage readyMessage = (JobReadyMessage) invocation.getArguments()[0]; assertEquals(JOB_ID_OF_JOB_HANDLER, readyMessage.getJobID()); return null; @@ -418,7 +422,7 @@ public void testReceivingJobRunningMessage() { @Override public Void answer(InvocationOnMock invocation) throws Throwable { assertNotNull(invocation.getArguments()[0]); - assertTrue(invocation.getArguments()[0] instanceof JobRunningMessage); + assertThat(invocation.getArguments()[0], is(instanceOf(JobRunningMessage.class))); JobRunningMessage runningMessage = (JobRunningMessage) invocation.getArguments()[0]; assertEquals(JOB_ID_OF_JOB_HANDLER, runningMessage.getJobID()); assertEquals(expectedJobTitle, runningMessage.getJobTitle()); @@ -592,7 +596,7 @@ private String createJsonBaseMessage(final BaseMessage.Type type, final Map 0); + assertThat(jsonMessage.length(), is(greaterThan(0))); return jsonMessage; } @@ -605,7 +609,7 @@ private String createJsonJobMessage(final JobMessage.Type type, final Map 0); + assertThat(jsonMessage.length(), is(greaterThan(0))); return jsonMessage; } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/CollisionFormulaConversionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/CollisionFormulaConversionTest.java index 613399dd319..2fe96d1b544 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/CollisionFormulaConversionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/CollisionFormulaConversionTest.java @@ -36,6 +36,7 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.bricks.Brick; import org.catrobat.catroid.content.bricks.FormulaBrick; +import org.catrobat.catroid.exceptions.ProjectException; import org.catrobat.catroid.test.utils.TestUtils; import org.catrobat.catroid.utils.ScreenValueHandler; import org.junit.After; @@ -47,7 +48,10 @@ import java.util.Locale; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; + +import static org.hamcrest.Matchers.instanceOf; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertThat; @RunWith(AndroidJUnit4.class) public class CollisionFormulaConversionTest { @@ -70,13 +74,10 @@ public void tearDown() throws Exception { } @Test - public void testCatrobatLanguageVersionUpdated() throws IOException { + public void testCatrobatLanguageVersionUpdated() throws IOException, ProjectException { TestUtils.createTestProjectOnLocalStorageWithCatrobatLanguageVersion(OLD_CATROBAT_LANGUAGE_VERSION); - try { - projectManager.loadProject(TestUtils.DEFAULT_TEST_PROJECT_NAME, InstrumentationRegistry.getTargetContext()); - } catch (Exception e) { - fail("couldn't load project"); - } + projectManager.loadProject(TestUtils.DEFAULT_TEST_PROJECT_NAME, InstrumentationRegistry.getTargetContext()); + assertEquals(Constants.CURRENT_CATROBAT_LANGUAGE_VERSION, projectManager.getCurrentProject().getCatrobatLanguageVersion()); TestUtils.deleteProjects(); @@ -97,15 +98,15 @@ public void testFormulaUpdated() throws IOException { Sprite sprite1 = project.getDefaultScene().getSprite(firstSpriteName); Brick brick = sprite1.getScript(0).getBrick(0); - if (brick instanceof FormulaBrick) { - FormulaBrick formulaBrick = (FormulaBrick) brick; - String newFormula = formulaBrick.getFormulas().get(0).getDisplayString(InstrumentationRegistry - .getTargetContext()); - String expected = collisionTag + "(" + thirdSpriteName + ") "; - assertEquals(expected, newFormula); - } else { - fail("brick is no instance of FormulaBrick"); - } + + assertThat(brick, is(instanceOf(FormulaBrick.class))); + + FormulaBrick formulaBrick = (FormulaBrick) brick; + String newFormula = formulaBrick.getFormulas().get(0).getDisplayString(InstrumentationRegistry + .getTargetContext()); + String expected = collisionTag + "(" + thirdSpriteName + ") "; + assertEquals(expected, newFormula); + TestUtils.deleteProjects(); } @@ -137,15 +138,15 @@ public void testFormulaUpdatedWithLanguageConversion() throws IOException { Sprite sprite1 = project.getDefaultScene().getSprite(firstSpriteName); Brick brick = sprite1.getScript(0).getBrick(0); - if (brick instanceof FormulaBrick) { - FormulaBrick formulaBrick = (FormulaBrick) brick; - String newFormula = formulaBrick.getFormulas().get(0).getDisplayString(InstrumentationRegistry - .getTargetContext()); - String expected = collisionTag + "(" + thirdSpriteName + ") "; - assertEquals(expected, newFormula); - } else { - fail("brick is no instance of FormulaBrick"); - } + + assertThat(brick, is(instanceOf(FormulaBrick.class))); + + FormulaBrick formulaBrick = (FormulaBrick) brick; + String newFormula = formulaBrick.getFormulas().get(0).getDisplayString(InstrumentationRegistry + .getTargetContext()); + String expected = collisionTag + "(" + thirdSpriteName + ") "; + assertEquals(expected, newFormula); + TestUtils.deleteProjects(); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/ui/ViewSwitchLockTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/ui/ViewSwitchLockTest.java index a2dad30209d..d14684f23d5 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/ui/ViewSwitchLockTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/ui/ViewSwitchLockTest.java @@ -26,7 +26,9 @@ import org.catrobat.catroid.test.utils.Reflection; import org.catrobat.catroid.ui.ViewSwitchLock; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import java.util.concurrent.locks.Lock; @@ -34,13 +36,15 @@ import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertTrue; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class ViewSwitchLockTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + @Test - public void testViewSwitchLock() { + public void testViewSwitchLock() throws Exception { Lock viewSwitchLock = new ViewSwitchLock(); assertFalse((Boolean) Reflection.getPrivateField(viewSwitchLock, "locked")); @@ -65,7 +69,7 @@ public void testViewSwitchLock() { } @Test - public void testViewSwitchAutoUnlock() throws InterruptedException { + public void testViewSwitchAutoUnlock() throws Exception { Lock viewSwitchLock = new ViewSwitchLock(); long timeout = (Long) Reflection.getPrivateField(ViewSwitchLock.class, "UNLOCK_TIMEOUT"); @@ -76,40 +80,31 @@ public void testViewSwitchAutoUnlock() throws InterruptedException { } @Test - public void testDefaultSettings() { + public void testDefaultSettings() throws Exception { assertEquals(200L, Reflection.getPrivateField(ViewSwitchLock.class, "UNLOCK_TIMEOUT")); } @Test - public void testUnsupportedMethods() { - Lock viewSwitchLock = new ViewSwitchLock(); + public void testUnsupportedLockInterruptibly() throws InterruptedException { + exception.expect(UnsupportedOperationException.class); + new ViewSwitchLock().lockInterruptibly(); + } + + @Test + public void testUnsupportedNewCondition() { + exception.expect(UnsupportedOperationException.class); + new ViewSwitchLock().newCondition(); + } - try { - viewSwitchLock.lock(); - fail("Method is supported"); - } catch (UnsupportedOperationException expected) { - } - - try { - viewSwitchLock.lockInterruptibly(); - fail("Method is supported"); - } catch (UnsupportedOperationException expected) { - } catch (Exception exception) { - fail("An unexcpected excpetion occured"); - } - - try { - viewSwitchLock.newCondition(); - fail("Method is supported"); - } catch (UnsupportedOperationException expected) { - } - - try { - viewSwitchLock.tryLock(1L, null); - fail("Method is supported"); - } catch (UnsupportedOperationException expected) { - } catch (Exception exception) { - fail("An unexcpected excpetion occured"); - } + @Test + public void testUnsupportedtryLock() throws InterruptedException { + exception.expect(UnsupportedOperationException.class); + new ViewSwitchLock().tryLock(1L, null); + } + + @Test + public void testUnsupportedLock() { + exception.expect(UnsupportedOperationException.class); + new ViewSwitchLock().lock(); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/PhysicsTestUtils.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/PhysicsTestUtils.java index b0817224207..aa4c2a5ddb3 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/PhysicsTestUtils.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/PhysicsTestUtils.java @@ -74,23 +74,23 @@ public static PhysicsObject createPhysicsObject(PhysicsWorld physicsWorld) { return createPhysicsObject(physicsWorld, null, null); } - public static Body getBody(PhysicsObject physicsObject) { + public static Body getBody(PhysicsObject physicsObject) throws Exception { return (Body) Reflection.getPrivateField(physicsObject, "body"); } - public static PhysicsObject.Type getType(PhysicsObject physicsObject) { + public static PhysicsObject.Type getType(PhysicsObject physicsObject) throws Exception { return (PhysicsObject.Type) Reflection.getPrivateField(physicsObject, "type"); } - public static float getMass(PhysicsObject physicsObject) { + public static float getMass(PhysicsObject physicsObject) throws Exception { return (Float) Reflection.getPrivateField(physicsObject, "mass"); } - public static Shape[] getShapes(PhysicsObject physicsObject) { + public static Shape[] getShapes(PhysicsObject physicsObject) throws Exception { return (Shape[]) Reflection.getPrivateField(physicsObject, "shapes"); } - public static FixtureDef getFixtureDef(PhysicsObject physicsObject) { + public static FixtureDef getFixtureDef(PhysicsObject physicsObject) throws Exception { return (FixtureDef) Reflection.getPrivateField(physicsObject, "fixtureDef"); } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/Reflection.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/Reflection.java index 799c2c789bd..9adb3cac4fd 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/Reflection.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/Reflection.java @@ -30,7 +30,7 @@ private Reflection() { throw new AssertionError(); } - public static Object getPrivateField(Object object, String fieldName) { + public static Object getPrivateField(Object object, String fieldName) throws Exception { if (object == null) { throw new IllegalArgumentException("Object is null"); } @@ -38,21 +38,17 @@ public static Object getPrivateField(Object object, String fieldName) { return Reflection.getPrivateField(object.getClass(), object, fieldName); } - public static Object getPrivateField(Class clazz, String fieldName) { + public static Object getPrivateField(Class clazz, String fieldName) throws Exception { return Reflection.getPrivateField(clazz, null, fieldName); } - public static Object getPrivateField(Class clazz, Object object, String fieldName) { - try { - Field field = clazz.getDeclaredField(fieldName); - field.setAccessible(true); - return field.get(object); - } catch (Exception exception) { - throw new RuntimeException(exception); - } + public static Object getPrivateField(Class clazz, Object object, String fieldName) throws Exception { + Field field = clazz.getDeclaredField(fieldName); + field.setAccessible(true); + return field.get(object); } - public static void setPrivateField(Object object, String fieldName, Object value) { + public static void setPrivateField(Object object, String fieldName, Object value) throws Exception { if (object == null) { throw new IllegalArgumentException("Object is null"); } @@ -60,18 +56,14 @@ public static void setPrivateField(Object object, String fieldName, Object value Reflection.setPrivateField(object.getClass(), object, fieldName, value); } - public static void setPrivateField(Class fieldOwnerType, String fieldName, Object value) { + public static void setPrivateField(Class fieldOwnerType, String fieldName, Object value) throws Exception { Reflection.setPrivateField(fieldOwnerType, null, fieldName, value); } - public static void setPrivateField(Class fieldOwnerType, Object object, String fieldName, Object value) { - try { - Field field = fieldOwnerType.getDeclaredField(fieldName); - field.setAccessible(true); - field.set(object, value); - } catch (Exception exception) { - throw new RuntimeException(exception); - } + public static void setPrivateField(Class fieldOwnerType, Object object, String fieldName, Object value) throws Exception { + Field field = fieldOwnerType.getDeclaredField(fieldName); + field.setAccessible(true); + field.set(object, value); } public static class Parameter { @@ -148,11 +140,11 @@ private void splitParametersToTypesAndValues(Parameter... parameters) { } } - public static Object invokeMethod(Object object, String methodName) { + public static Object invokeMethod(Object object, String methodName) throws Exception { return invokeMethod(object, methodName, new ParameterList()); } - public static Object invokeMethod(Object object, String methodName, ParameterList parameterList) { + public static Object invokeMethod(Object object, String methodName, ParameterList parameterList) throws Exception { if (object == null) { throw new IllegalArgumentException("Object is null"); } @@ -160,25 +152,21 @@ public static Object invokeMethod(Object object, String methodName, ParameterLis return Reflection.invokeMethod(object.getClass(), object, methodName, parameterList); } - public static Object invokeMethod(Class clazz, String methodName) { + public static Object invokeMethod(Class clazz, String methodName) throws Exception { return invokeMethod(clazz, methodName, new ParameterList()); } - public static Object invokeMethod(Class clazz, String methodName, ParameterList parameterList) { + public static Object invokeMethod(Class clazz, String methodName, ParameterList parameterList) throws Exception { return Reflection.invokeMethod(clazz, null, methodName, parameterList); } - public static Object invokeMethod(Class clazz, Object object, String methodName) { + public static Object invokeMethod(Class clazz, Object object, String methodName) throws Exception { return invokeMethod(clazz, object, methodName, new ParameterList()); } - public static Object invokeMethod(Class clazz, Object object, String methodName, ParameterList parameterList) { - try { - Method method = clazz.getDeclaredMethod(methodName, parameterList.types); - method.setAccessible(true); - return method.invoke(object, parameterList.values); - } catch (Exception exception) { - throw new RuntimeException(exception); - } + public static Object invokeMethod(Class clazz, Object object, String methodName, ParameterList parameterList) throws Exception { + Method method = clazz.getDeclaredMethod(methodName, parameterList.types); + method.setAccessible(true); + return method.invoke(object, parameterList.values); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/SimulatedSensorManager.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/SimulatedSensorManager.java deleted file mode 100644 index 6fdf9581f9e..00000000000 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/SimulatedSensorManager.java +++ /dev/null @@ -1,278 +0,0 @@ -/* - * Catroid: An on-device visual programming system for Android devices - * Copyright (C) 2010-2018 The Catrobat Team - * () - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * An additional term exception under section 7 of the GNU Affero - * General Public License, version 3, is available at - * http://developer.catrobat.org/license_additional_term - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package org.catrobat.catroid.test.utils; - -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.util.Log; - -import org.catrobat.catroid.formulaeditor.SensorCustomEvent; -import org.catrobat.catroid.formulaeditor.SensorCustomEventListener; -import org.catrobat.catroid.formulaeditor.SensorManagerInterface; -import org.catrobat.catroid.formulaeditor.Sensors; - -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -public class SimulatedSensorManager implements SensorManagerInterface { - private static final String TAG = SimulatedSensorManager.class.getSimpleName(); - - public class Pair { - private L firstEntry; - private R secondEntry; - - public Pair(L l, R r) { - this.firstEntry = l; - this.secondEntry = r; - } - - public L getL() { - return firstEntry; - } - - public R getR() { - return secondEntry; - } - } - - List> listeners; - List> customListeners; - Thread simulationThread; - boolean simulationThreadRunning; - int timeOutInMilliSeconds = 100; - - // units of m/s^2 - float linearAccelationMinimumX = -10; - float linearAccelerationMaximumX = 10; - - float linearAccelationMinimumY = -10; - float linearAccelerationMaximumY = 10; - - float linearAccelationMinimumZ = -10; - float linearAccelerationMaximumZ = 10; - - float rotationMinimumX = (float) -Math.PI * 0.5f; - float rotationMaximumX = (float) Math.PI * 0.5f; - - float rotationMinimumY = (float) -Math.PI * 0.5f; - float rotationMaximumY = (float) Math.PI * 0.5f; - - float rotationMinimumZ = (float) -Math.PI * 0.5f; - float rotationMaximumZ = (float) Math.PI * 0.5f; - - float rotationAngleMinimum = 0; - float rotationAngleMaximum = (float) (2 * Math.PI); - - private List sentSensorEvents; - private List sentSensorCustomEvents; - - private long lastExecution = 0; - - public SimulatedSensorManager() { - sentSensorEvents = new ArrayList(); - sentSensorCustomEvents = new ArrayList(); - listeners = new ArrayList>(); - customListeners = new ArrayList>(); - createSimulationThread(); - } - - private void createSimulationThread() { - simulationThread = new Thread(new Runnable() { - public void run() { - while (simulationThreadRunning) { - lastExecution = System.currentTimeMillis(); - while (System.currentTimeMillis() < lastExecution + timeOutInMilliSeconds) { - Thread.yield(); - } - - sendGeneratedSensorValues(); - } - } - }); - simulationThreadRunning = false; - } - - public synchronized void startSimulation() { - if (!simulationThreadRunning && !simulationThread.isAlive()) { - simulationThreadRunning = true; - simulationThread.start(); - } - } - - public synchronized void stopSimulation() { - simulationThreadRunning = false; - } - - public synchronized void unregisterListener(SensorEventListener listener) { - listeners.remove(listener); - - Iterator> iterator = listeners.iterator(); - - while (iterator.hasNext()) { - Pair pair = iterator.next(); - if (pair.getL() == listener) { - iterator.remove(); - } - } - } - - public synchronized boolean registerListener(SensorEventListener listener, Sensor sensor, int rate) { - listeners.add(new Pair(listener, sensor)); - return false; - } - - public synchronized void unregisterListener(SensorCustomEventListener listener) { - customListeners.remove(listener); - - Iterator> iterator = customListeners.iterator(); - - while (iterator.hasNext()) { - Pair pair = iterator.next(); - if (pair.getL() == listener) { - iterator.remove(); - } - } - } - - public synchronized boolean registerListener(SensorCustomEventListener listener, Sensors sensor) { - customListeners.add(new Pair(listener, sensor)); - return false; - } - - public synchronized void sendGeneratedSensorValues() { - for (Pair pair : listeners) { - SensorEventListener sensorEventListener = pair.getL(); - Sensor sensor = pair.getR(); - - SensorEvent sensorEvent = null; - try { - Constructor constructor = SensorEvent.class.getDeclaredConstructor(int.class); - constructor.setAccessible(true); - sensorEvent = constructor.newInstance(3); - } catch (NoSuchMethodException | IllegalArgumentException | InstantiationException - | IllegalAccessException | InvocationTargetException ex) { - Log.e(TAG, "Sleep was interrupted.", ex); - } - - if (sensorEvent == null) { - return; - } - - switch (sensor.getType()) { - case Sensor.TYPE_LINEAR_ACCELERATION: - sensorEvent.sensor = sensor; - - float[] sensorValues = new float[3]; - - sensorValues[0] = (float) (linearAccelationMinimumX + Math.random() - * (linearAccelerationMaximumX - linearAccelationMinimumX)); - sensorValues[1] = (float) (linearAccelationMinimumY + Math.random() - * (linearAccelerationMaximumY - linearAccelationMinimumY)); - sensorValues[2] = (float) (linearAccelationMinimumZ + Math.random() - * (linearAccelerationMaximumZ - linearAccelationMinimumZ)); - - Reflection.setPrivateField(SensorEvent.class, sensorEvent, "values", sensorValues); - - sentSensorEvents.add(0, sensorEvent); - sentSensorEvents = sentSensorEvents.subList(0, - sentSensorEvents.size() < 50 ? sentSensorEvents.size() : 50); - sensorEventListener.onSensorChanged(sensorEvent); - break; - case Sensor.TYPE_ROTATION_VECTOR: - sensorEvent.sensor = sensor; - - sensorValues = new float[3]; - sensorValues[0] = (float) (rotationMinimumX + Math.random() * (rotationMaximumX - rotationMinimumX)); - sensorValues[1] = (float) (rotationMinimumY + Math.random() * (rotationMaximumY - rotationMinimumY)); - sensorValues[2] = (float) (rotationMinimumZ + Math.random() * (rotationMaximumZ - rotationMinimumZ)); - - sensorValues[0] *= Math.sin((rotationAngleMinimum + Math.random() - * (rotationAngleMaximum - rotationAngleMinimum)) * 0.5f); - sensorValues[1] *= Math.sin((rotationAngleMinimum + Math.random() - * (rotationAngleMaximum - rotationAngleMinimum)) * 0.5f); - sensorValues[2] *= Math.sin((rotationAngleMinimum + Math.random() - * (rotationAngleMaximum - rotationAngleMinimum)) * 0.5f); - - Reflection.setPrivateField(SensorEvent.class, sensorEvent, "values", sensorValues); - sentSensorEvents.add(0, sensorEvent); - sentSensorEvents = sentSensorEvents.subList(0, - sentSensorEvents.size() < 50 ? sentSensorEvents.size() : 50); - sensorEventListener.onSensorChanged(sensorEvent); - break; - } - } - for (Pair pair : customListeners) { - SensorCustomEventListener sensorEventListener = pair.getL(); - Sensors sensor = pair.getR(); - float[] values = new float[1]; - - switch (sensor) { - case LOUDNESS: - values[0] = (float) Math.random() * 100; - break; - default: - break; - } - - SensorCustomEvent sensorEvent = new SensorCustomEvent(sensor, values); - - sentSensorCustomEvents.add(0, sensorEvent); - sentSensorCustomEvents = sentSensorCustomEvents.subList(0, - sentSensorCustomEvents.size() < 50 ? sentSensorCustomEvents.size() : 50); - sensorEventListener.onCustomSensorChanged(sensorEvent); - } - } - - public Sensor getDefaultSensor(int typeLinearAcceleration) { - return null; - } - - public synchronized SensorEvent getLatestSensorEvent(Sensor sensor) { - Iterator iterator = sentSensorEvents.iterator(); - - while (iterator.hasNext()) { - SensorEvent sensorEvent = iterator.next(); - if (sensorEvent.sensor == sensor) { - return sensorEvent; - } - } - return null; - } - - public synchronized SensorCustomEvent getLatestCustomSensorEvent(Sensors sensor) { - Iterator iterator = sentSensorCustomEvents.iterator(); - - while (iterator.hasNext()) { - SensorCustomEvent sensorEvent = iterator.next(); - if (sensorEvent.sensor == sensor) { - return sensorEvent; - } - } - return null; - } -} diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/StatusBarNotificationManagerTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/StatusBarNotificationManagerTest.java index b8f4b758492..352ad31fb4f 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/StatusBarNotificationManagerTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/StatusBarNotificationManagerTest.java @@ -26,7 +26,6 @@ import android.os.Bundle; import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; -import android.util.Log; import android.util.SparseArray; import org.catrobat.catroid.R; @@ -39,11 +38,9 @@ import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertTrue; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class StatusBarNotificationManagerTest { - private static final String TAG = StatusBarNotificationManagerTest.class.getSimpleName(); private final StatusBarNotificationManager notificationManager = StatusBarNotificationManager.getInstance(); @@ -53,7 +50,7 @@ public void tearDown() throws Exception { } @Test - public void testCreateCopyNotification() { + public void testCreateCopyNotification() throws Exception { int id = notificationManager.createCopyNotification(InstrumentationRegistry.getTargetContext(), TestUtils .DEFAULT_TEST_PROJECT_NAME); checkNotificationData(id); @@ -64,7 +61,7 @@ public void testCreateCopyNotification() { } @Test - public void testCreateDownloadNotification() { + public void testCreateDownloadNotification() throws Exception { int id = notificationManager.createDownloadNotification(InstrumentationRegistry.getTargetContext(), TestUtils .DEFAULT_TEST_PROJECT_NAME); checkNotificationData(id); @@ -75,7 +72,7 @@ public void testCreateDownloadNotification() { } @Test - public void testCreateUploadNotification() { + public void testCreateUploadNotification() throws Exception { int id = notificationManager.createUploadNotification(InstrumentationRegistry.getTargetContext(), TestUtils .DEFAULT_TEST_PROJECT_NAME); checkNotificationData(id); @@ -88,16 +85,11 @@ public void testCreateUploadNotification() { @Test public void testShowOrUpdateNotification() { - try { - notificationManager.showOrUpdateNotification(-1, 0); - } catch (Exception ex) { - Log.e(TAG, "showOrUpdateNotification() failed", ex); - fail("there shouldn't be any exception thrown"); - } + notificationManager.showOrUpdateNotification(-1, 0); } @Test - public void testUploadRejectedNotification() { + public void testUploadRejectedNotification() throws Exception { int id = notificationManager.createUploadNotification(InstrumentationRegistry.getTargetContext(), TestUtils .DEFAULT_TEST_PROJECT_NAME); checkNotificationData(id); @@ -112,7 +104,7 @@ public void testUploadRejectedNotification() { .getString(R.string.error_project_upload)); } - private void checkNotificationData(int id) { + private void checkNotificationData(int id) throws Exception { assertTrue(id >= 0); @SuppressWarnings("unchecked") diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/TestUtils.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/TestUtils.java index 398dae4f04a..09a15d6b5a7 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/TestUtils.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/TestUtils.java @@ -93,7 +93,7 @@ public static Project createTestProjectOnLocalStorageWithCatrobatLanguageVersion DEFAULT_TEST_PROJECT_NAME); } - public static void cancelAllNotifications(Context context) { + public static void cancelAllNotifications(Context context) throws Exception { NotificationManager notificationManager = (NotificationManager) context .getSystemService(Context.NOTIFICATION_SERVICE); @SuppressWarnings("unchecked") diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/ImageEditingTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/ImageEditingTest.java index 41749defb3d..78e2e1fb6ac 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/ImageEditingTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/ImageEditingTest.java @@ -27,7 +27,6 @@ import android.graphics.Bitmap.CompressFormat; import android.graphics.BitmapFactory; import android.support.test.runner.AndroidJUnit4; -import android.util.Log; import org.catrobat.catroid.common.Constants; import org.catrobat.catroid.test.utils.Reflection; @@ -40,9 +39,9 @@ import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; +import java.io.IOException; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.is; @@ -51,10 +50,9 @@ @RunWith(AndroidJUnit4.class) public class ImageEditingTest { - private static final String TAG = ImageEditingTest.class.getSimpleName(); @Test - public void testScaleImage() { + public void testScaleImage() throws Exception { Bitmap bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.RGB_565); Bitmap scaledBitmap = (Bitmap) Reflection.invokeMethod(ImageEditing.class, "scaleBitmap", new ParameterList( bitmap, 60, 70)); @@ -64,33 +62,25 @@ public void testScaleImage() { } @Test - public void testGetImageDimensions() { + public void testGetImageDimensions() throws IOException { File testImageFile = new File(Constants.DEFAULT_ROOT_DIRECTORY, "tmp.jpg"); - FileOutputStream fileOutputStream = null; Bitmap bitmap = Bitmap.createBitmap(100, 200, Bitmap.Config.RGB_565); - try { - fileOutputStream = new FileOutputStream(testImageFile); - BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream, Constants.BUFFER_8K); - bitmap.compress(CompressFormat.PNG, 0, bos); - bos.flush(); - bos.close(); - } catch (Exception e) { - Log.e(TAG, "Test file could not be created", e); - fail("Test file could not be created"); - } - - int[] dimensions = new int[2]; + FileOutputStream fileOutputStream = new FileOutputStream(testImageFile); + BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream, Constants.BUFFER_8K); + bitmap.compress(CompressFormat.PNG, 0, bos); + bos.flush(); + bos.close(); - dimensions = ImageEditing.getImageDimensions(testImageFile.getAbsolutePath()); + int[] dimensions = ImageEditing.getImageDimensions(testImageFile.getAbsolutePath()); assertEquals(100, dimensions[0]); assertEquals(200, dimensions[1]); } @Test - public void testGetBitmap() { + public void testGetBitmap() throws Exception { int maxBitmapWidth = 500; int maxBitmapHeight = 500; @@ -98,20 +88,14 @@ public void testGetBitmap() { int bitmapHeight = 200; File testImageFile = new File(Constants.DEFAULT_ROOT_DIRECTORY, "tmp.jpg"); - FileOutputStream fileOutputStream = null; Bitmap bitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Bitmap.Config.RGB_565); - try { - fileOutputStream = new FileOutputStream(testImageFile); - BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream, Constants.BUFFER_8K); - bitmap.compress(CompressFormat.PNG, 0, bos); - bos.flush(); - bos.close(); - } catch (Exception e) { - Log.e(TAG, "Test file could not be created", e); - fail("Test file could not be created"); - } + FileOutputStream fileOutputStream = new FileOutputStream(testImageFile); + BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream, Constants.BUFFER_8K); + bitmap.compress(CompressFormat.PNG, 0, bos); + bos.flush(); + bos.close(); Bitmap loadedBitmap = ImageEditing.getScaledBitmapFromPath(testImageFile.getAbsolutePath(), maxBitmapWidth, maxBitmapHeight, ImageEditing.ResizeType.STAY_IN_RECTANGLE_WITH_SAME_ASPECT_RATIO, true); @@ -135,20 +119,13 @@ public void testGetBitmap() { int newWidth = (int) Math.ceil(bitmapWidth / sampleSize); int newHeight = (int) Math.ceil(bitmapHeight / sampleSize); - fileOutputStream = null; - bitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Bitmap.Config.RGB_565); - try { - fileOutputStream = new FileOutputStream(testImageFile); - BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream, Constants.BUFFER_8K); - bitmap.compress(CompressFormat.PNG, 0, bos); - bos.flush(); - bos.close(); - } catch (Exception e) { - Log.e(TAG, "Test file could not be created", e); - fail("Test file could not be created"); - } + fileOutputStream = new FileOutputStream(testImageFile); + bos = new BufferedOutputStream(fileOutputStream, Constants.BUFFER_8K); + bitmap.compress(CompressFormat.PNG, 0, bos); + bos.flush(); + bos.close(); loadedBitmap = ImageEditing.getScaledBitmapFromPath(testImageFile.getAbsolutePath(), maxBitmapWidth, maxBitmapHeight, ImageEditing.ResizeType.STAY_IN_RECTANGLE_WITH_SAME_ASPECT_RATIO, true); @@ -160,7 +137,7 @@ public void testGetBitmap() { } @Test - public void testGetScaledBitmap() { + public void testGetScaledBitmap() throws Exception { int targetBitmapWidth = 300; int targetBitmapHeight = 500; @@ -168,20 +145,14 @@ public void testGetScaledBitmap() { int bitmapHeight = 900; File testImageFile = new File(Constants.DEFAULT_ROOT_DIRECTORY, "tmp.jpg"); - FileOutputStream fileOutputStream = null; Bitmap bitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Bitmap.Config.RGB_565); - try { - fileOutputStream = new FileOutputStream(testImageFile); - BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream, Constants.BUFFER_8K); - bitmap.compress(CompressFormat.PNG, 0, bos); - bos.flush(); - bos.close(); - } catch (Exception e) { - Log.e(TAG, "Test file could not be created", e); - fail("Test file could not be created"); - } + FileOutputStream fileOutputStream = new FileOutputStream(testImageFile); + BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream, Constants.BUFFER_8K); + bitmap.compress(CompressFormat.PNG, 0, bos); + bos.flush(); + bos.close(); Bitmap loadedBitmap = ImageEditing.getScaledBitmapFromPath(testImageFile.getAbsolutePath(), targetBitmapWidth, targetBitmapHeight, ImageEditing.ResizeType.STAY_IN_RECTANGLE_WITH_SAME_ASPECT_RATIO, false); @@ -206,12 +177,7 @@ public void testGetScaledBitmap() { assertEquals(bitmap.getHeight(), loadedBitmap.getHeight()); assertEquals(bitmap.getWidth(), loadedBitmap.getWidth()); - try { - ImageEditing.scaleImageFile(testImageFile, 1 / sampleSizeReturnValue); - } catch (FileNotFoundException e) { - Log.e(TAG, "Test not found", e); - fail("Test not found"); - } + ImageEditing.scaleImageFile(testImageFile, 1 / sampleSizeReturnValue); imageFileDimensions = ImageEditing.getImageDimensions(testImageFile.getAbsolutePath()); assertEquals(bitmapWidth, imageFileDimensions[0]); assertEquals(bitmapHeight, imageFileDimensions[1]); @@ -237,17 +203,14 @@ public void testRotatePicture() { } } - private static double scaleImageFileAndReturnSampleSize(File file, int newWidth, int newHeight) { + private static double scaleImageFileAndReturnSampleSize(File file, int newWidth, int newHeight) throws + FileNotFoundException { String path = file.getAbsolutePath(); int[] originalBackgroundImageDimensions = ImageEditing.getImageDimensions(path); Bitmap scaledBitmap = ImageEditing.getScaledBitmapFromPath(path, newWidth, newHeight, ImageEditing.ResizeType.STAY_IN_RECTANGLE_WITH_SAME_ASPECT_RATIO, false); - try { - ImageEditing.saveBitmapToImageFile(file, scaledBitmap); - } catch (FileNotFoundException e) { - Log.e(TAG, "Error while saving file", e); - fail("Error while saving file"); - } + + ImageEditing.saveBitmapToImageFile(file, scaledBitmap); double sampleSizeWidth = ((double) originalBackgroundImageDimensions[0]) / ((double) newWidth); double sampleSizeHeight = ((double) originalBackgroundImageDimensions[1]) / ((double) newHeight); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/StringFinderTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/StringFinderTest.java index 598726dc483..664220b061d 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/StringFinderTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/StringFinderTest.java @@ -26,15 +26,19 @@ import android.support.test.runner.AndroidJUnit4; import org.catrobat.catroid.utils.StringFinder; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class StringFinderTest { + @Rule + public final ExpectedException exception = ExpectedException.none(); + private String singleLine = "Catrobat HQ. You will never find a more wretched hive of scum and villainy."; private String multiLine = "I must not fear.\n" + "Fear is the mind-killer.\n" @@ -97,13 +101,9 @@ public void testNoMatchForEnd() { @Test public void testGetResultWithoutFind() { - try { - new StringFinder().getResult(); - fail("Expected an IllegalStateException"); - } catch (IllegalStateException expectedException) { - assertEquals("You must call findBetween(String string, String start, String end) " - + "first.", expectedException.getMessage()); - } + exception.expect(IllegalStateException.class); + exception.expectMessage("You must call findBetween(String string, String start, String end) first."); + new StringFinder().getResult(); } @Test @@ -114,12 +114,9 @@ public void testGetResultTwice() { StringFinder stringFinder = new StringFinder(); stringFinder.findBetween(singleLine, start, end); stringFinder.getResult(); - try { - stringFinder.getResult(); - fail("Expected an IllegalStateException"); - } catch (IllegalStateException expectedException) { - assertEquals("You must call findBetween(String string, String start, String end) " - + "first.", expectedException.getMessage()); - } + + exception.expect(IllegalStateException.class); + exception.expectMessage("You must call findBetween(String string, String start, String end) first."); + stringFinder.getResult(); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/UtilsTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/UtilsTest.java index 9ace37b1322..e1c9af94e04 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/UtilsTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/UtilsTest.java @@ -25,7 +25,6 @@ import android.os.SystemClock; import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; -import android.util.Log; import org.catrobat.catroid.common.Constants; import org.catrobat.catroid.common.DefaultProjectHandler; @@ -66,12 +65,9 @@ import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertTrue; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class UtilsTest { - private static final String TAG = UtilsTest.class.getSimpleName(); - private final String testFileContent = "Hello, this is a Test-String"; private static final String MD5_EMPTY = "D41D8CD98F00B204E9800998ECF8427E"; private static final String MD5_CATROID = "4F982D927F4784F69AD6D6AF38FD96AD"; @@ -83,22 +79,11 @@ public class UtilsTest { @Before public void setUp() throws Exception { - OutputStream outputStream = null; - - try { - testFile = File.createTempFile("testCopyFiles", ".txt"); - if (testFile.canWrite()) { - outputStream = new FileOutputStream(testFile); - outputStream.write(testFileContent.getBytes()); - outputStream.flush(); - } - } catch (IOException e) { - Log.e(TAG, "File handling error", e); - } finally { - if (outputStream != null) { - outputStream.close(); - } - } + testFile = File.createTempFile("testCopyFiles", ".txt"); + OutputStream outputStream = new FileOutputStream(testFile); + outputStream.write(testFileContent.getBytes()); + outputStream.flush(); + outputStream.close(); } @After @@ -124,19 +109,12 @@ public void testMD5CheckSumOfFile() throws IOException { md5TestFile.delete(); } - try { - md5TestFile.createNewFile(); - assertEquals(MD5_EMPTY.toLowerCase(Locale.US), Utils.md5Checksum(md5TestFile)); - - printWriter = new PrintWriter(md5TestFile); - printWriter.print("catroid"); - } catch (IOException e) { - Log.e(TAG, "File handling error", e); - } finally { - if (printWriter != null) { - printWriter.close(); - } - } + md5TestFile.createNewFile(); + assertEquals(MD5_EMPTY.toLowerCase(Locale.US), Utils.md5Checksum(md5TestFile)); + + printWriter = new PrintWriter(md5TestFile); + printWriter.print("catroid"); + printWriter.close(); assertEquals(MD5_CATROID.toLowerCase(Locale.US), Utils.md5Checksum(md5TestFile)); @@ -175,9 +153,7 @@ public void testBuildPath() { @Test public void testBuildProjectPath() { - if (!Utils.isExternalStorageAvailable()) { - fail("No SD card present"); - } + assertTrue(Utils.isExternalStorageAvailable()); String projectName = "test?Projekt\"1"; String expectedPath = Constants.DEFAULT_ROOT_DIRECTORY.getAbsolutePath() + "/test%3FProjekt%221"; assertEquals(expectedPath, PathBuilder.buildProjectPath(projectName)); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/reflection/ReflectionExceptionsTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/reflection/ReflectionExceptionsTest.java new file mode 100644 index 00000000000..9540e6adc3f --- /dev/null +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/reflection/ReflectionExceptionsTest.java @@ -0,0 +1,199 @@ +/* + * Catroid: An on-device visual programming system for Android devices + * Copyright (C) 2010-2018 The Catrobat Team + * () + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * An additional term exception under section 7 of the GNU Affero + * General Public License, version 3, is available at + * http://developer.catrobat.org/license_additional_term + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +package org.catrobat.catroid.test.utiltests.reflection; + +import android.support.test.runner.AndroidJUnit4; + +import org.catrobat.catroid.test.utils.Reflection; +import org.catrobat.catroid.test.utils.Reflection.ParameterList; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.junit.runner.RunWith; + +@RunWith(AndroidJUnit4.class) +public class ReflectionExceptionsTest { + + @Rule + public final ExpectedException exception = ExpectedException.none(); + + @Test + public void testInvokeMethodWithNullObject1() throws Exception { + Object nullObject = null; + exception.expect(IllegalArgumentException.class); + Reflection.invokeMethod(nullObject, "nullObjectsDontHaveMethods"); + } + + @Test + public void testInvokeMethodWithNullObject2() throws Exception { + Object nullObject = null; + exception.expect(IllegalArgumentException.class); + Reflection.invokeMethod(nullObject, "nullObjectsDontHaveMethods", new ParameterList("text")); + } + + @Test + public void testInvokeMethodWithNullObject3() throws Exception { + Object nullObject = null; + exception.expect(NullPointerException.class); + Reflection.invokeMethod(InvokeMethodClass.class, nullObject, "voidMethod"); + } + + @Test + public void testInvokeMethodWithWrongParameters1() throws Exception { + exception.expect(IllegalArgumentException.class); + Reflection.invokeMethod(String.class, Integer.valueOf(1), "toString"); + } + + @Test + public void testInvokeMethodWithWrongParameters2() throws Exception { + InvokeMethodClass invokeMethodObject = new InvokeMethodClass(); + String parameter1 = "String"; + String parameter2 = null; + exception.expect(RuntimeException.class); + Reflection.invokeMethod(invokeMethodObject, "methodWithParameters", new ParameterList(parameter1, + parameter2)); + } + + @Test + public void testPrivateFieldWithNullObject1() throws Exception { + Object nullObject = null; + exception.expect(IllegalArgumentException.class); + Reflection.getPrivateField(nullObject, "nullObjectsDontHaveFields"); + } + + @Test + public void testPrivateFieldWithNullObject2() throws Exception { + Object nullObject = null; + exception.expect(NullPointerException.class); + Reflection.getPrivateField(SubClass.class, nullObject, "SECRET_INTEGER"); + } + + @Test + public void testPrivateFieldWithNullObject3() throws Exception { + Object nullObject = null; + exception.expect(IllegalArgumentException.class); + Reflection.setPrivateField(nullObject, "nullObjectsDontHaveFields", null); + } + + @Test + public void testPrivateFieldWithNullObject4() throws Exception { + Object nullObject = null; + exception.expect(NullPointerException.class); + Reflection.setPrivateField(SubClass.class, nullObject, "SECRET_INTEGER", 123); + } + + @Test + public void testPrivateFieldWithWrongParameters1() throws Exception { + exception.expect(NoSuchFieldException.class); + Reflection.getPrivateField(SuperClass.class, new SubClass(), "secretString"); + } + + @Test + public void testPrivateFieldWithWrongParameters2() throws Exception { + exception.expect(IllegalArgumentException.class); + Reflection.getPrivateField(SubClass.class, new SuperClass(), "secretString"); + } + + @Test + public void testPrivateFieldWithWrongParameters3() throws Exception { + exception.expect(NullPointerException.class); + Reflection.getPrivateField(SubClass.class, null, "secretString"); + } + + @Test + public void testPrivateFieldWithWrongParameters4() throws Exception { + exception.expect(NoSuchFieldException.class); + Reflection.setPrivateField(SuperClass.class, new SubClass(), "secretString", "Secret string"); + } + + @Test + public void testPrivateFieldWithWrongParameters5() throws Exception { + exception.expect(IllegalArgumentException.class); + Reflection.setPrivateField(SubClass.class, new SuperClass(), "secretString", "Secret string"); + } + + @Test + public void testPrivateFieldWithWrongParameters6() throws Exception { + exception.expect(NullPointerException.class); + Reflection.setPrivateField(SubClass.class, null, "secretString", "Secret string"); + } + + private static class InvokeMethodClass { + private static boolean calledVoidMethod = false; + + @SuppressWarnings("unused") + private static String staticMethodWithoutParameters() { + return "Called staticMethodWithoutParameters!"; + } + + @SuppressWarnings("unused") + private static String staticMethodWithParameters(String param1, String param2) { + return param1 + param2; + } + + @SuppressWarnings("unused") + private static void staticVoidMethod() { + calledVoidMethod = true; + } + + @SuppressWarnings("unused") + private String methodWithoutParameters() { + return "Called methodWithoutParameters!"; + } + + @SuppressWarnings("unused") + private String methodWithParameters(String param1, String param2) { + return param1 + param2; + } + + @SuppressWarnings("unused") + private void voidMethod() { + calledVoidMethod = true; + } + + @SuppressWarnings("unused") + private float methodWithPrimitiveParameter(float parameter) { + return 1.0f; + } + + @SuppressWarnings("unused") + private float methodWithWrappedPrimitiveParameter(Float parameter) { + return -1.0f; + } + } + + @SuppressWarnings("PMD.UnusedPrivateField") + private class SuperClass { + // CHECKSTYLE DISABLE MemberNameCheck FOR 2 LINES + private final float SECRET_FLOAT = 3.1415f; + protected byte secretByte = 32; + } + + @SuppressWarnings("PMD.UnusedPrivateField") + private class SubClass extends SuperClass { + // CHECKSTYLE DISABLE MemberNameCheck FOR 3 LINES + private static final char SECRET_STATIC_CHAR = 'c'; + private final int SECRET_INTEGER = 42; + private String secretString = "This is a secret string!"; + } +} diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/ReflectionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/reflection/ReflectionTest.java similarity index 62% rename from catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/ReflectionTest.java rename to catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/reflection/ReflectionTest.java index d2650acb73b..5bcb2f33646 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/ReflectionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/reflection/ReflectionTest.java @@ -20,7 +20,7 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ -package org.catrobat.catroid.test.utiltests; +package org.catrobat.catroid.test.utiltests.reflection; import android.support.test.runner.AndroidJUnit4; @@ -36,13 +36,12 @@ import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertNull; import static junit.framework.Assert.assertTrue; -import static junit.framework.Assert.fail; @RunWith(AndroidJUnit4.class) public class ReflectionTest { @Test - public void testPrivateFieldGettersAndSetters() { + public void testPrivateFieldGettersAndSetters() throws Exception { char secretChar = (Character) Reflection.getPrivateField(SubClass.class, "SECRET_STATIC_CHAR"); assertEquals(SubClass.SECRET_STATIC_CHAR, secretChar); @@ -81,82 +80,7 @@ public void testPrivateFieldGettersAndSetters() { } @Test - public void testPrivateFieldWithNullObject() { - Object nullObject = null; - try { - Reflection.getPrivateField(nullObject, "nullObjectsDontHaveFields"); - fail("Getting private field of null object didn't cause an IllegalArgumentException"); - } catch (IllegalArgumentException expected) { - } - - try { - Reflection.getPrivateField(SubClass.class, nullObject, "SECRET_INTEGER"); - fail("Getting private field of null object didn't cause an IllegalArgumentException"); - } catch (Exception exception) { - assertEquals(exception.getCause().getClass(), NullPointerException.class); - } - - try { - Reflection.setPrivateField(nullObject, "nullObjectsDontHaveFields", null); - fail("Setting private field of null object didn't cause an IllegalArgumentException"); - } catch (IllegalArgumentException expected) { - } - - try { - Reflection.setPrivateField(SubClass.class, nullObject, "SECRET_INTEGER", 123); - fail("Setting private field of null object didn't cause an IllegalArgumentException"); - } catch (Exception exception) { - assertEquals(exception.getCause().getClass(), NullPointerException.class); - } - } - - @Test - public void testPrivateFieldWithWrongParameters() { - try { - Reflection.getPrivateField(SuperClass.class, new SubClass(), "secretString"); - fail("Secret string is only located in SubClass but also found in SuperClass"); - } catch (RuntimeException runtimeException) { - assertEquals(runtimeException.getCause().getClass(), NoSuchFieldException.class); - } - - try { - Reflection.getPrivateField(SubClass.class, new SuperClass(), "secretString"); - fail("SuperClass object isn't a sub class of SubClass"); - } catch (RuntimeException runtimeException) { - assertEquals(runtimeException.getCause().getClass(), IllegalArgumentException.class); - } - - try { - Reflection.getPrivateField(SubClass.class, null, "secretString"); - fail("SubClass has a static member 'secretString'"); - } catch (RuntimeException runtimeException) { - assertEquals(runtimeException.getCause().getClass(), NullPointerException.class); - } - - try { - Reflection.setPrivateField(SuperClass.class, new SubClass(), "secretString", "Secret string"); - fail("Secret string is only located in SubClass but also found in SuperClass"); - } catch (RuntimeException runtimeException) { - assertEquals(runtimeException.getCause().getClass(), NoSuchFieldException.class); - } - - try { - Reflection.setPrivateField(SubClass.class, new SuperClass(), "secretString", "Secret string"); - fail("SuperClass object is a sub class of SubClass but shouldn't"); - } catch (RuntimeException runtimeException) { - assertEquals(runtimeException.getCause().getClass(), IllegalArgumentException.class); - } - - try { - Reflection.setPrivateField(SubClass.class, null, "secretString", "Secret string"); - fail("SubClass has a static member 'secretString'"); - } catch (RuntimeException runtimeException) { - assertEquals(runtimeException.getCause().getClass(), NullPointerException.class); - } - } - - @Test - public void testInvokeMethodForObjects() { + public void testInvokeMethodForObjects() throws Exception { InvokeMethodClass invokeMethodObject = new InvokeMethodClass(); String returnValue = (String) Reflection.invokeMethod(invokeMethodObject, "methodWithoutParameters"); @@ -183,7 +107,7 @@ public void testInvokeMethodForObjects() { } @Test - public void testInvokeMethodForClasses() { + public void testInvokeMethodForClasses() throws Exception { String returnValue = (String) Reflection.invokeMethod(InvokeMethodClass.class, "staticMethodWithoutParameters"); assertEquals("Called staticMethodWithoutParameters!", returnValue); @@ -205,7 +129,7 @@ public void testInvokeMethodForClasses() { } @Test - public void testInvokeMethodWithAutoBoxingParameter() { + public void testInvokeMethodWithAutoBoxingParameter() throws Exception { InvokeMethodClass invokeMethodObject = new InvokeMethodClass(); float returnValue = (Float) Reflection.invokeMethod(invokeMethodObject, "methodWithPrimitiveParameter", @@ -223,7 +147,7 @@ public void testInvokeMethodWithAutoBoxingParameter() { } @Test - public void testConvertObjectsIntoPrimitives() { + public void testConvertObjectsIntoPrimitives() throws Exception { ParameterList parameterList = new ParameterList(Boolean.TRUE, Byte.valueOf((byte) 1), Character.valueOf('c'), Double.valueOf(1.0), Float.valueOf(1.0f), Integer.valueOf(1), Long.valueOf(1L), Short.valueOf((short) 1)); @@ -234,50 +158,6 @@ public void testConvertObjectsIntoPrimitives() { assertTrue(Arrays.deepEquals(expectedPrimitiveObjectsClasses, primitiveObjectsClass)); } - @Test - public void testInvokeMethodWithNullObject() { - Object nullObject = null; - try { - Reflection.invokeMethod(nullObject, "nullObjectsDontHaveMethods"); - fail("Invoking method of a null object didn't cause an IllegalArgumentException"); - } catch (IllegalArgumentException expected) { - } - - try { - Reflection.invokeMethod(nullObject, "nullObjectsDontHaveMethods", new ParameterList("text")); - fail("Invoking method of a null object didn't cause an IllegalArgumentException"); - } catch (IllegalArgumentException expected) { - } - - try { - Reflection.invokeMethod(InvokeMethodClass.class, nullObject, "voidMethod"); - fail("Invoking method of a null object didn't cause an IllegalArgumentException"); - } catch (RuntimeException runtimeException) { - assertEquals(runtimeException.getCause().getClass(), NullPointerException.class); - } - } - - @Test - public void testInvokeMethodWithWrongParameters() { - InvokeMethodClass invokeMethodObject = new InvokeMethodClass(); - - try { - Reflection.invokeMethod(String.class, Integer.valueOf(1), "toString"); - fail("Integer is a sub class of String"); - } catch (RuntimeException runtimeException) { - assertEquals(runtimeException.getCause().getClass(), IllegalArgumentException.class); - } - - String parameter1 = "String"; - String parameter2 = null; - try { - Reflection.invokeMethod(invokeMethodObject, "methodWithParameters", new ParameterList(parameter1, - parameter2)); - fail("Found not existing method signature"); - } catch (RuntimeException expected) { - } - } - private static class InvokeMethodClass { private static boolean calledVoidMethod = false; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/web/ServerCallsTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/web/ServerCallsTest.java index 4c507bccc35..fae8665f6a8 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/web/ServerCallsTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/web/ServerCallsTest.java @@ -26,7 +26,6 @@ import android.preference.PreferenceManager; import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; -import android.util.Log; import org.catrobat.catroid.common.Constants; import org.catrobat.catroid.test.utils.TestUtils; @@ -54,8 +53,6 @@ @RunWith(AndroidJUnit4.class) public class ServerCallsTest implements DeleteTestUserTask.OnDeleteTestUserCompleteListener { - private static final String TAG = ServerCalls.class.getSimpleName(); - private static final int STATUS_CODE_USER_PASSWORD_TOO_SHORT = 753; private static final int STATUS_CODE_USER_ADD_EMAIL_EXISTS = 757; private static final int STATUS_CODE_USER_EMAIL_INVALID = 765; @@ -74,53 +71,45 @@ public void tearDown() throws Exception { } @Test - public void testRegistrationOk() { - try { - String testUser = "testUser" + System.currentTimeMillis(); - String testPassword = "pwspws"; - String testEmail = testUser + "@gmail.com"; - String token = Constants.NO_TOKEN; + public void testRegistrationOk() throws WebconnectionException { + String testUser = "testUser" + System.currentTimeMillis(); + String testPassword = "pwspws"; + String testEmail = testUser + "@gmail.com"; + String token = Constants.NO_TOKEN; - boolean userRegistered = ServerCalls.getInstance().register(testUser, testPassword, testEmail, - "de", "at", token, InstrumentationRegistry.getTargetContext()); + boolean userRegistered = ServerCalls.getInstance().register(testUser, testPassword, testEmail, + "de", "at", token, InstrumentationRegistry.getTargetContext()); - assertTrue(userRegistered); + assertTrue(userRegistered); - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(InstrumentationRegistry.getTargetContext()); - token = sharedPreferences.getString(Constants.TOKEN, Constants.NO_TOKEN); - boolean tokenOk = ServerCalls.getInstance().checkToken(token, testUser); + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(InstrumentationRegistry.getTargetContext()); + token = sharedPreferences.getString(Constants.TOKEN, Constants.NO_TOKEN); + boolean tokenOk = ServerCalls.getInstance().checkToken(token, testUser); - Log.i(TAG, "tokenOk: " + tokenOk); - assertTrue(tokenOk); - } catch (WebconnectionException e) { - Log.e(TAG, "Webconnection error", e); - fail("WebconnectionException: the token should be valid \nstatus code:" + e.getStatusCode() - + "\nmessage: " + e.getMessage()); - } + assertTrue(tokenOk); } @Test - public void testRegisterWithExistingUser() { - try { - String testUser = "testUser" + System.currentTimeMillis(); - String testPassword = "pwspws"; - String testEmail = testUser + "@gmail.com"; + public void testRegisterWithExistingUser() throws WebconnectionException { + String testUser = "testUser" + System.currentTimeMillis(); + String testPassword = "pwspws"; + String testEmail = testUser + "@gmail.com"; - String token = Constants.NO_TOKEN; - boolean userRegistered = ServerCalls.getInstance().register(testUser, testPassword, testEmail, - "de", "at", token, InstrumentationRegistry.getTargetContext()); + String token = Constants.NO_TOKEN; - Log.i(TAG, "user registered: " + userRegistered); - assertTrue(userRegistered); + boolean userRegistered = ServerCalls.getInstance().register(testUser, testPassword, testEmail, + "de", "at", token, InstrumentationRegistry.getTargetContext()); - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(InstrumentationRegistry.getTargetContext()); - token = sharedPreferences.getString(Constants.TOKEN, Constants.NO_TOKEN); + assertTrue(userRegistered); + + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(InstrumentationRegistry.getTargetContext()); + token = sharedPreferences.getString(Constants.TOKEN, Constants.NO_TOKEN); + + try { ServerCalls.getInstance().register(testUser, testPassword, testEmail, "de", "at", token, InstrumentationRegistry.getTargetContext()); - fail("WebconnectionException not thrown"); } catch (WebconnectionException e) { - Log.i(TAG, "Webconnection error (this is expected behaviour)", e); assertEquals(STATUS_CODE_USER_ADD_EMAIL_EXISTS, e.getStatusCode()); assertNotNull(e.getMessage()); assertThat(e.getMessage().length(), is(greaterThan(0))); @@ -128,44 +117,34 @@ public void testRegisterWithExistingUser() { } @Test - public void testRegisterAndLogin() { - try { - String testUser = "testUser" + System.currentTimeMillis(); - String testPassword = "pwspws"; - String testEmail = testUser + "@gmail.com"; + public void testRegisterAndLogin() throws WebconnectionException { + String testUser = "testUser" + System.currentTimeMillis(); + String testPassword = "pwspws"; + String testEmail = testUser + "@gmail.com"; - String token = Constants.NO_TOKEN; - boolean userRegistered = ServerCalls.getInstance().register(testUser, testPassword, testEmail, - "de", "at", token, InstrumentationRegistry.getTargetContext()); + String token = Constants.NO_TOKEN; + boolean userRegistered = ServerCalls.getInstance().register(testUser, testPassword, testEmail, + "de", "at", token, InstrumentationRegistry.getTargetContext()); - Log.i(TAG, "user registered: " + userRegistered); - assertTrue(userRegistered); + assertTrue(userRegistered); - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(InstrumentationRegistry.getTargetContext()); - token = sharedPreferences.getString(Constants.TOKEN, Constants.NO_TOKEN); - boolean userLoggedIn = ServerCalls.getInstance().login(testUser, testPassword, token, InstrumentationRegistry.getTargetContext()); + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(InstrumentationRegistry.getTargetContext()); + token = sharedPreferences.getString(Constants.TOKEN, Constants.NO_TOKEN); + boolean userLoggedIn = ServerCalls.getInstance().login(testUser, testPassword, token, InstrumentationRegistry.getTargetContext()); - Log.i(TAG, "user logged in: " + userLoggedIn); - assertTrue(userLoggedIn); - } catch (WebconnectionException e) { - Log.e(TAG, "Webconnection error", e); - fail("an exception should not be thrown! \nstatus code:" + e.getStatusCode() + "\nmessage: " - + e.getMessage()); - } + assertTrue(userLoggedIn); } @Test public void testLoginWithNotExistingUser() { - try { - String testUser = "testUser" + System.currentTimeMillis(); - String testPassword = "pwspws"; - String token = Constants.NO_TOKEN; + String testUser = "testUser" + System.currentTimeMillis(); + String testPassword = "pwspws"; + String token = Constants.NO_TOKEN; + try { ServerCalls.getInstance().login(testUser, testPassword, token, InstrumentationRegistry.getTargetContext()); - fail("WebconnectionException not thrown"); } catch (WebconnectionException e) { - Log.i(TAG, "Webconnection error (this is expected behaviour)", e); assertEquals(STATUS_CODE_USER_NOT_EXISTING, e.getStatusCode()); assertNotNull(e.getMessage()); assertThat(e.getMessage().length(), is(greaterThan(0))); @@ -173,27 +152,26 @@ public void testLoginWithNotExistingUser() { } @Test - public void testRegisterWithExistingUserAndLoginWithWrongPassword() { - try { - String testUser = "testUser" + System.currentTimeMillis(); - String testPassword = "pwspws"; - String testEmail = testUser + "@gmail.com"; + public void testRegisterWithExistingUserAndLoginWithWrongPassword() throws WebconnectionException { + String testUser = "testUser" + System.currentTimeMillis(); + String testPassword = "pwspws"; + String testEmail = testUser + "@gmail.com"; - String token = Constants.NO_TOKEN; - boolean userRegistered = ServerCalls.getInstance().register(testUser, testPassword, testEmail, - "de", "at", token, InstrumentationRegistry.getTargetContext()); + String token = Constants.NO_TOKEN; - Log.i(TAG, "user registered: " + userRegistered); - assertTrue(userRegistered); + boolean userRegistered = ServerCalls.getInstance().register(testUser, testPassword, testEmail, + "de", "at", token, InstrumentationRegistry.getTargetContext()); - String wrongPassword = "wrongpassword"; - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(InstrumentationRegistry.getTargetContext()); - token = sharedPreferences.getString(Constants.TOKEN, Constants.NO_TOKEN); - ServerCalls.getInstance().login(testUser, wrongPassword, token, InstrumentationRegistry.getTargetContext()); + assertTrue(userRegistered); + String wrongPassword = "wrongpassword"; + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(InstrumentationRegistry.getTargetContext()); + token = sharedPreferences.getString(Constants.TOKEN, Constants.NO_TOKEN); + + try { + ServerCalls.getInstance().login(testUser, wrongPassword, token, InstrumentationRegistry.getTargetContext()); fail("WebconnectionException not thrown"); } catch (WebconnectionException e) { - Log.i(TAG, "Webconnection error (this is expected behaviour)", e); assertEquals(STATUS_CODE_AUTHENTICATION_FAILED, e.getStatusCode()); assertNotNull(e.getMessage()); assertThat(e.getMessage().length(), is(greaterThan(0))); @@ -201,27 +179,27 @@ public void testRegisterWithExistingUserAndLoginWithWrongPassword() { } @Test - public void testRegisterWithNewUserButExistingEmail() { - try { - String testUser = "testUser" + System.currentTimeMillis(); - String testPassword = "pwspws"; - String testEmail = testUser + "@gmail.com"; + public void testRegisterWithNewUserButExistingEmail() throws WebconnectionException { + String testUser = "testUser" + System.currentTimeMillis(); + String testPassword = "pwspws"; + String testEmail = testUser + "@gmail.com"; - String token = Constants.NO_TOKEN; - boolean userRegistered = ServerCalls.getInstance().register(testUser, testPassword, testEmail, - "de", "at", token, InstrumentationRegistry.getTargetContext()); + String token = Constants.NO_TOKEN; - Log.i(TAG, "user registered: " + userRegistered); - assertTrue(userRegistered); + boolean userRegistered = ServerCalls.getInstance().register(testUser, testPassword, testEmail, + "de", "at", token, InstrumentationRegistry.getTargetContext()); - String newUser = "testUser" + System.currentTimeMillis(); - token = Constants.NO_TOKEN; + assertTrue(userRegistered); + + String newUser = "testUser" + System.currentTimeMillis(); + token = Constants.NO_TOKEN; + + try { ServerCalls.getInstance().register(newUser, testPassword, testEmail, "de", "at", token, InstrumentationRegistry.getTargetContext()); fail("WebconnectionException not thrown"); } catch (WebconnectionException e) { - Log.i(TAG, "Webconnection error (this is expected behaviour)", e); assertEquals(STATUS_CODE_USER_ADD_EMAIL_EXISTS, e.getStatusCode()); assertNotNull(e.getMessage()); assertThat(e.getMessage().length(), is(greaterThan(0))); @@ -230,18 +208,17 @@ public void testRegisterWithNewUserButExistingEmail() { @Test public void testRegisterWithTooShortPassword() { - try { - String testUser = "testUser" + System.currentTimeMillis(); - String testPassword = "short"; - String testEmail = testUser + "@gmail.com"; + String testUser = "testUser" + System.currentTimeMillis(); + String testPassword = "short"; + String testEmail = testUser + "@gmail.com"; - String token = Constants.NO_TOKEN; + String token = Constants.NO_TOKEN; + try { ServerCalls.getInstance().register(testUser, testPassword, testEmail, "de", "at", token, InstrumentationRegistry.getTargetContext()); fail("WebconnectionException not thrown"); } catch (WebconnectionException e) { - Log.i(TAG, "Webconnection error (this is expected behaviour)", e); assertEquals(STATUS_CODE_USER_PASSWORD_TOO_SHORT, e.getStatusCode()); assertNotNull(e.getMessage()); assertThat(e.getMessage().length(), is(greaterThan(0))); @@ -250,18 +227,18 @@ public void testRegisterWithTooShortPassword() { @Test public void testRegisterWithInvalidEmail() { - try { - String testUser = "testUser" + System.currentTimeMillis(); - String testPassword = "pwspws"; - String testEmail = "invalidEmail"; + String testUser = "testUser" + System.currentTimeMillis(); + String testPassword = "pwspws"; + String testEmail = "invalidEmail"; - String token = Constants.NO_TOKEN; + String token = Constants.NO_TOKEN; + + try { ServerCalls.getInstance().register(testUser, testPassword, testEmail, "de", "at", token, InstrumentationRegistry.getTargetContext()); fail("WebconnectionException not thrown"); } catch (WebconnectionException e) { - Log.i(TAG, "Webconnection error (this is expected behaviour)", e); assertEquals(STATUS_CODE_USER_EMAIL_INVALID, e.getStatusCode()); assertNotNull(e.getMessage()); assertThat(e.getMessage().length(), is(greaterThan(0))); @@ -270,15 +247,13 @@ public void testRegisterWithInvalidEmail() { @Test public void testCheckTokenWrong() { + String wrongToken = "blub"; + String username = "badUser"; try { - String wrongToken = "blub"; - String username = "badUser"; boolean tokenOk = ServerCalls.getInstance().checkToken(wrongToken, username); - Log.i(TAG, "tokenOk: " + tokenOk); assertFalse(tokenOk); } catch (WebconnectionException e) { - Log.i(TAG, "Webconnection error (this is expected behaviour)", e); assertEquals(STATUS_CODE_AUTHENTICATION_FAILED, e.getStatusCode()); assertNotNull(e.getMessage()); assertThat(e.getMessage().length(), is(greaterThan(0))); @@ -286,34 +261,24 @@ public void testCheckTokenWrong() { } @Test - public void testCheckTokenOk() { - try { - String testUser = "testUser" + System.currentTimeMillis(); - String testPassword = "pwspws"; - String testEmail = testUser + "@gmail.com"; - - String token = Constants.NO_TOKEN; - boolean userRegistered = ServerCalls.getInstance().register(testUser, testPassword, testEmail, - "de", "at", token, InstrumentationRegistry.getTargetContext()); + public void testCheckTokenOk() throws WebconnectionException { + String testUser = "testUser" + System.currentTimeMillis(); + String testPassword = "pwspws"; + String testEmail = testUser + "@gmail.com"; - Log.i(TAG, "user registered: " + userRegistered); - assertTrue(userRegistered); + String token = Constants.NO_TOKEN; + boolean userRegistered = ServerCalls.getInstance().register(testUser, testPassword, testEmail, + "de", "at", token, InstrumentationRegistry.getTargetContext()); - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(InstrumentationRegistry.getTargetContext()); - token = sharedPreferences.getString(Constants.TOKEN, Constants.NO_TOKEN); - boolean tokenOk = ServerCalls.getInstance().checkToken(token, testUser); + assertTrue(userRegistered); - Log.i(TAG, "tokenOk: " + tokenOk); - assertTrue(tokenOk); - } catch (WebconnectionException e) { - Log.e(TAG, "Webconnection error", e); - fail("WebconnectionException \nstatus code:" + e.getStatusCode() + "\nmessage: " + e.getMessage()); - } + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(InstrumentationRegistry.getTargetContext()); + token = sharedPreferences.getString(Constants.TOKEN, Constants.NO_TOKEN); + assertTrue(ServerCalls.getInstance().checkToken(token, testUser)); } @Override public void onDeleteTestUserComplete(Boolean deleted) { assertTrue(deleted); - Log.d(TAG, "testUserAccountsDeleted"); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/util/rules/BaseActivityInstrumentationRule.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/util/rules/BaseActivityInstrumentationRule.java index 5daa14bf99f..d93e7f19ce9 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/util/rules/BaseActivityInstrumentationRule.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/util/rules/BaseActivityInstrumentationRule.java @@ -72,9 +72,13 @@ public void launchActivity() { } void setUpTestProjectFolder() { - Reflection.setPrivateField(StageListener.class, "checkIfAutomaticScreenshotShouldBeTaken", false); - Reflection.setPrivateField(Constants.class, "DEFAULT_ROOT_DIRECTORY", - new File(Environment.getExternalStorageDirectory(), "Pocket Code UiTest")); + try { + Reflection.setPrivateField(StageListener.class, "checkIfAutomaticScreenshotShouldBeTaken", false); + Reflection.setPrivateField(Constants.class, "DEFAULT_ROOT_DIRECTORY", + new File(Environment.getExternalStorageDirectory(), "Pocket Code UiTest")); + } catch (Exception e) { + Log.e(TAG, "Error setting default root directory", e); + } if (DEFAULT_ROOT_DIRECTORY.exists()) { try { From d34dcdc3ef388d7052e3d319811826e32d8796e9 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch <84n4n4@gmail.com> Date: Wed, 4 Jul 2018 22:45:36 +0200 Subject: [PATCH 09/67] [RELEASE] Regression test for disabled bricks in clones --- .../DisabledBrickInClonesRegressionTest.java | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/DisabledBrickInClonesRegressionTest.java diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/DisabledBrickInClonesRegressionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/DisabledBrickInClonesRegressionTest.java new file mode 100644 index 00000000000..b2813d64e8d --- /dev/null +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/DisabledBrickInClonesRegressionTest.java @@ -0,0 +1,108 @@ +/* + * Catroid: An on-device visual programming system for Android devices + * Copyright (C) 2010-2018 The Catrobat Team + * () + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * An additional term exception under section 7 of the GNU Affero + * General Public License, version 3, is available at + * http://developer.catrobat.org/license_additional_term + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package org.catrobat.catroid.uiespresso.stage; + +import android.support.test.InstrumentationRegistry; +import android.support.test.runner.AndroidJUnit4; + +import junit.framework.Assert; + +import org.catrobat.catroid.ProjectManager; +import org.catrobat.catroid.content.Project; +import org.catrobat.catroid.content.Script; +import org.catrobat.catroid.content.Sprite; +import org.catrobat.catroid.content.StartScript; +import org.catrobat.catroid.content.WhenClonedScript; +import org.catrobat.catroid.content.bricks.Brick; +import org.catrobat.catroid.content.bricks.CloneBrick; +import org.catrobat.catroid.content.bricks.SetVariableBrick; +import org.catrobat.catroid.formulaeditor.Formula; +import org.catrobat.catroid.formulaeditor.UserVariable; +import org.catrobat.catroid.formulaeditor.datacontainer.DataContainer; +import org.catrobat.catroid.stage.StageActivity; +import org.catrobat.catroid.uiespresso.stage.utils.ScriptEvaluationGateBrick; +import org.catrobat.catroid.uiespresso.testsuites.Cat; +import org.catrobat.catroid.uiespresso.testsuites.Level; +import org.catrobat.catroid.uiespresso.util.rules.BaseActivityInstrumentationRule; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.junit.runner.RunWith; + +import static org.catrobat.catroid.uiespresso.util.UserVariableTestUtils.userVariableEqualsWithinTimeout; + +@RunWith(AndroidJUnit4.class) +public class DisabledBrickInClonesRegressionTest { + + private static final String VARIABLE_NAME = "var1"; + + private UserVariable userVariable; + private ScriptEvaluationGateBrick lastBrickInScript; + + @Rule + public BaseActivityInstrumentationRule baseActivityTestRule = new + BaseActivityInstrumentationRule<>(StageActivity.class); + + @Before + public void setUp() throws Exception { + createProject(); + } + + private void createProject() { + Project project = new Project(InstrumentationRegistry.getTargetContext(), + "DisabledBrickInClonesRegressionTest"); + Sprite sprite = new Sprite("someSprite"); + + project.getDefaultScene().addSprite(sprite); + ProjectManager.getInstance().setProject(project); + ProjectManager.getInstance().setCurrentSprite(sprite); + ProjectManager.getInstance().setCurrentlyEditedScene(project.getDefaultScene()); + + DataContainer dataContainer = project.getDefaultScene().getDataContainer(); + userVariable = new UserVariable(VARIABLE_NAME); + dataContainer.addUserVariable(userVariable); + userVariable.setValue(1D); + + Script startScript = new StartScript(); + sprite.addScript(startScript); + startScript.addBrick(new CloneBrick()); + + Script whenClonedScript = new WhenClonedScript(); + sprite.addScript(startScript); + Brick shouldntBeExecuted = new SetVariableBrick(new Formula(9000.1D), userVariable); + shouldntBeExecuted.setCommentedOut(true); + whenClonedScript.addBrick(shouldntBeExecuted); + + lastBrickInScript = ScriptEvaluationGateBrick.appendToScript(whenClonedScript); + } + + @Category({Level.Functional.class, Cat.CatrobatLanguage.class}) + @Test + public void setVariableInCloneShouldNotBeExecutedTest() { + baseActivityTestRule.launchActivity(); + lastBrickInScript.waitUntilEvaluated(3000); + Assert.assertTrue(userVariableEqualsWithinTimeout(userVariable, 1D, 2000)); + } +} From 645777df8cc2f32d88cb3465b37a5a52dcf2f55e Mon Sep 17 00:00:00 2001 From: Thomas Hirsch <84n4n4@gmail.com> Date: Thu, 26 Jul 2018 14:01:20 +0200 Subject: [PATCH 10/67] [GSOC18] Cleanup test util classes --- .../catroid/test/ProjectManagerTest.java | 13 ++-- .../CollisionFormulaConversionTest.java | 40 +++++++++++- .../StatusBarNotificationManagerTest.java | 21 +++++- .../catroid/test/utils/TestUtils.java | 63 +----------------- .../brick/stage/AskBrickStageTest.java | 7 +- .../stage/WhenNfcBrickHardwareStageTest.java | 11 ++-- .../WhenNfcBrickStageFromScriptTest.java | 8 +-- .../brick/stage/WhenNfcBrickStageTest.java | 35 +++++----- .../BroadcastForClonesRegressionTest.java | 8 +-- .../BroadcastReceiverRegressionTest.java | 29 ++++----- .../DisabledBrickInClonesRegressionTest.java | 6 +- .../stage/MultipleBroadcastsTest.java | 6 +- .../utils/ScriptEvaluationGateBrick.java | 7 +- .../catroid/uiespresso/util/UiTestUtils.java | 14 +--- ...Utils.java => UserVariableAssertions.java} | 64 +++++++++++-------- .../util/matchers/StageMatchers.java | 15 ++++- 16 files changed, 170 insertions(+), 177 deletions(-) rename catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/util/{UserVariableTestUtils.java => UserVariableAssertions.java} (51%) diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/ProjectManagerTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/ProjectManagerTest.java index 5da0090e63e..d82d265be67 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/ProjectManagerTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/ProjectManagerTest.java @@ -88,7 +88,8 @@ public void tearDown() throws Exception { @Test public void testShouldReturnFalseIfCatrobatLanguageVersionNotSupported() throws IOException, ProjectException { - TestUtils.createTestProjectOnLocalStorageWithCatrobatLanguageVersion(CATROBAT_LANGUAGE_VERSION_NOT_SUPPORTED); + TestUtils.createProjectWithLanguageVersion(CATROBAT_LANGUAGE_VERSION_NOT_SUPPORTED, + "testProject"); try { projectManager.loadProject(TestUtils.DEFAULT_TEST_PROJECT_NAME, InstrumentationRegistry.getTargetContext()); @@ -98,7 +99,8 @@ public void testShouldReturnFalseIfCatrobatLanguageVersionNotSupported() throws TestUtils.deleteProjects(); - TestUtils.createTestProjectOnLocalStorageWithCatrobatLanguageVersion(CURRENT_CATROBAT_LANGUAGE_VERSION); + TestUtils.createProjectWithLanguageVersion(CURRENT_CATROBAT_LANGUAGE_VERSION, + "testProject"); projectManager.loadProject(TestUtils.DEFAULT_TEST_PROJECT_NAME, InstrumentationRegistry.getTargetContext()); } @@ -107,12 +109,13 @@ public void testShouldReturnFalseIfCatrobatLanguageVersionNotSupported() throws public void testShouldKeepExistingProjectIfCannotLoadNewProject() throws IOException, CompatibilityProjectException, OutdatedVersionProjectException, LoadingProjectException { - TestUtils.createTestProjectOnLocalStorageWithCatrobatLanguageVersionAndName(CURRENT_CATROBAT_LANGUAGE_VERSION, + TestUtils.createProjectWithLanguageVersion(CURRENT_CATROBAT_LANGUAGE_VERSION, OLD_PROJECT); projectManager.loadProject(OLD_PROJECT, InstrumentationRegistry.getTargetContext()); - TestUtils.createTestProjectOnLocalStorageWithCatrobatLanguageVersion(CATROBAT_LANGUAGE_VERSION_NOT_SUPPORTED); + TestUtils.createProjectWithLanguageVersion(CATROBAT_LANGUAGE_VERSION_NOT_SUPPORTED, + "testProject"); try { projectManager.loadProject(NEW_PROJECT, InstrumentationRegistry.getTargetContext()); @@ -139,7 +142,7 @@ public void testLoadProjectException() throws Exception { @Test public void testSavingAProjectDuringDelete() throws IOException, CompatibilityProjectException, OutdatedVersionProjectException, LoadingProjectException { - TestUtils.createTestProjectOnLocalStorageWithCatrobatLanguageVersionAndName( + TestUtils.createProjectWithLanguageVersion( CURRENT_CATROBAT_LANGUAGE_VERSION, TestUtils.DEFAULT_TEST_PROJECT_NAME); projectManager.loadProject(TestUtils.DEFAULT_TEST_PROJECT_NAME, InstrumentationRegistry.getTargetContext()); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/CollisionFormulaConversionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/CollisionFormulaConversionTest.java index 2fe96d1b544..769b831abd8 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/CollisionFormulaConversionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/CollisionFormulaConversionTest.java @@ -23,6 +23,7 @@ package org.catrobat.catroid.test.sensing; +import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; import android.support.test.InstrumentationRegistry; @@ -33,10 +34,15 @@ import org.catrobat.catroid.R; import org.catrobat.catroid.common.Constants; import org.catrobat.catroid.content.Project; +import org.catrobat.catroid.content.Script; import org.catrobat.catroid.content.Sprite; +import org.catrobat.catroid.content.StartScript; import org.catrobat.catroid.content.bricks.Brick; import org.catrobat.catroid.content.bricks.FormulaBrick; +import org.catrobat.catroid.content.bricks.IfLogicBeginBrick; import org.catrobat.catroid.exceptions.ProjectException; +import org.catrobat.catroid.formulaeditor.Formula; +import org.catrobat.catroid.formulaeditor.FormulaElement; import org.catrobat.catroid.test.utils.TestUtils; import org.catrobat.catroid.utils.ScreenValueHandler; import org.junit.After; @@ -75,7 +81,8 @@ public void tearDown() throws Exception { @Test public void testCatrobatLanguageVersionUpdated() throws IOException, ProjectException { - TestUtils.createTestProjectOnLocalStorageWithCatrobatLanguageVersion(OLD_CATROBAT_LANGUAGE_VERSION); + TestUtils.createProjectWithLanguageVersion(OLD_CATROBAT_LANGUAGE_VERSION, + "testProject"); projectManager.loadProject(TestUtils.DEFAULT_TEST_PROJECT_NAME, InstrumentationRegistry.getTargetContext()); assertEquals(Constants.CURRENT_CATROBAT_LANGUAGE_VERSION, @@ -90,7 +97,7 @@ public void testFormulaUpdated() throws IOException { String thirdSpriteName = "ab"; String collisionTag = CatroidApplication.getAppContext().getString(R.string .formula_editor_function_collision); - Project project = TestUtils.createProjectWithOldCollisionFormulas(COLLISION_TEST_PROJECT, + Project project = createProjectWithOldCollisionFormulas(COLLISION_TEST_PROJECT, InstrumentationRegistry.getTargetContext(), firstSpriteName, secondSpriteName, thirdSpriteName, collisionTag); @@ -131,7 +138,7 @@ public void testFormulaUpdatedWithLanguageConversion() throws IOException { collisionTag = CatroidApplication.getAppContext().getString(R.string .formula_editor_function_collision); - Project project = TestUtils.createProjectWithOldCollisionFormulas(COLLISION_TEST_PROJECT, + Project project = createProjectWithOldCollisionFormulas(COLLISION_TEST_PROJECT, InstrumentationRegistry.getTargetContext(), firstSpriteName, secondSpriteName, thirdSpriteName, collisionTag); project.updateCollisionFormulasToVersion(0.993f); @@ -149,4 +156,31 @@ public void testFormulaUpdatedWithLanguageConversion() throws IOException { TestUtils.deleteProjects(); } + + private Project createProjectWithOldCollisionFormulas(String name, Context context, String firstSprite, + String secondSprite, String thirdSprite, String collisionTag) { + Project project = new Project(context, name); + project.setCatrobatLanguageVersion(0.992f); + Sprite sprite1 = new Sprite(firstSprite); + Sprite sprite2 = new Sprite(secondSprite); + Sprite sprite3 = new Sprite(thirdSprite); + + Script firstScript = new StartScript(); + + FormulaElement element1 = new FormulaElement(FormulaElement.ElementType.COLLISION_FORMULA, firstSprite + " " + + collisionTag + " " + thirdSprite, null); + Formula formula1 = new Formula(element1); + IfLogicBeginBrick ifBrick = new IfLogicBeginBrick(formula1); + + firstScript.addBrick(ifBrick); + sprite1.addScript(firstScript); + + project.getDefaultScene().addSprite(sprite1); + project.getDefaultScene().addSprite(sprite2); + project.getDefaultScene().addSprite(sprite3); + + ProjectManager projectManager = ProjectManager.getInstance(); + projectManager.setCurrentProject(project); + return project; + } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/StatusBarNotificationManagerTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/StatusBarNotificationManagerTest.java index 352ad31fb4f..6828c7709d1 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/StatusBarNotificationManagerTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/StatusBarNotificationManagerTest.java @@ -23,6 +23,8 @@ package org.catrobat.catroid.test.utils; +import android.app.NotificationManager; +import android.content.Context; import android.os.Bundle; import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; @@ -46,7 +48,7 @@ public class StatusBarNotificationManagerTest { @After public void tearDown() throws Exception { - TestUtils.cancelAllNotifications(InstrumentationRegistry.getTargetContext()); + cancelAllNotifications(InstrumentationRegistry.getTargetContext()); } @Test @@ -117,4 +119,21 @@ private void checkNotificationData(int id) throws Exception { assertNotNull(data.getNotificationBuilder()); assertEquals(TestUtils.DEFAULT_TEST_PROJECT_NAME, data.getProgramName()); } + + private void cancelAllNotifications(Context context) throws Exception { + NotificationManager notificationManager = (NotificationManager) context + .getSystemService(Context.NOTIFICATION_SERVICE); + @SuppressWarnings("unchecked") + SparseArray notificationMap = (SparseArray) Reflection.getPrivateField( + StatusBarNotificationManager.class, StatusBarNotificationManager.getInstance(), "notificationDataMap"); + if (notificationMap == null) { + return; + } + + for (int i = 0; i < notificationMap.size(); i++) { + notificationManager.cancel(notificationMap.keyAt(i)); + } + + notificationMap.clear(); + } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/TestUtils.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/TestUtils.java index 09a15d6b5a7..7bd96dc7e70 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/TestUtils.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/TestUtils.java @@ -22,17 +22,14 @@ */ package org.catrobat.catroid.test.utils; -import android.app.NotificationManager; import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.support.test.InstrumentationRegistry; -import android.util.SparseArray; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Pixmap; -import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.common.Constants; import org.catrobat.catroid.content.Project; import org.catrobat.catroid.content.Script; @@ -41,13 +38,8 @@ import org.catrobat.catroid.content.StartScript; import org.catrobat.catroid.content.bricks.Brick; import org.catrobat.catroid.content.bricks.HideBrick; -import org.catrobat.catroid.content.bricks.IfLogicBeginBrick; -import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.formulaeditor.FormulaElement; import org.catrobat.catroid.io.StorageOperations; import org.catrobat.catroid.io.XstreamSerializer; -import org.catrobat.catroid.utils.NotificationData; -import org.catrobat.catroid.utils.StatusBarNotificationManager; import java.io.File; import java.io.IOException; @@ -71,9 +63,8 @@ public static void deleteProjects(String... projectNames) throws IOException { } } - public static Project createTestProjectOnLocalStorageWithCatrobatLanguageVersionAndName( - float catrobatLanguageVersion, String name) { - Project project = new Project(InstrumentationRegistry.getTargetContext(), name); + public static void createProjectWithLanguageVersion(float catrobatLanguageVersion, String projectName) { + Project project = new Project(InstrumentationRegistry.getTargetContext(), projectName); project.setCatrobatLanguageVersion(catrobatLanguageVersion); Sprite firstSprite = new SingleSprite("cat"); @@ -85,29 +76,6 @@ public static Project createTestProjectOnLocalStorageWithCatrobatLanguageVersion project.getDefaultScene().addSprite(firstSprite); XstreamSerializer.getInstance().saveProject(project); - return project; - } - - public static Project createTestProjectOnLocalStorageWithCatrobatLanguageVersion(float catrobatLanguageVersion) { - return createTestProjectOnLocalStorageWithCatrobatLanguageVersionAndName(catrobatLanguageVersion, - DEFAULT_TEST_PROJECT_NAME); - } - - public static void cancelAllNotifications(Context context) throws Exception { - NotificationManager notificationManager = (NotificationManager) context - .getSystemService(Context.NOTIFICATION_SERVICE); - @SuppressWarnings("unchecked") - SparseArray notificationMap = (SparseArray) Reflection.getPrivateField( - StatusBarNotificationManager.class, StatusBarNotificationManager.getInstance(), "notificationDataMap"); - if (notificationMap == null) { - return; - } - - for (int i = 0; i < notificationMap.size(); i++) { - notificationManager.cancel(notificationMap.keyAt(i)); - } - - notificationMap.clear(); } public static void removeFromPreferences(Context context, String key) { @@ -117,33 +85,6 @@ public static void removeFromPreferences(Context context, String key) { edit.commit(); } - public static Project createProjectWithOldCollisionFormulas(String name, Context context, String firstSprite, - String secondSprite, String thirdSprite, String collisionTag) { - Project project = new Project(context, name); - project.setCatrobatLanguageVersion(0.992f); - Sprite sprite1 = new Sprite(firstSprite); - Sprite sprite2 = new Sprite(secondSprite); - Sprite sprite3 = new Sprite(thirdSprite); - - Script firstScript = new StartScript(); - - FormulaElement element1 = new FormulaElement(FormulaElement.ElementType.COLLISION_FORMULA, firstSprite + " " - + collisionTag + " " + thirdSprite, null); - Formula formula1 = new Formula(element1); - IfLogicBeginBrick ifBrick = new IfLogicBeginBrick(formula1); - - firstScript.addBrick(ifBrick); - sprite1.addScript(firstScript); - - project.getDefaultScene().addSprite(sprite1); - project.getDefaultScene().addSprite(sprite2); - project.getDefaultScene().addSprite(sprite3); - - ProjectManager projectManager = ProjectManager.getInstance(); - projectManager.setCurrentProject(project); - return project; - } - public static Pixmap createRectanglePixmap(int width, int height, Color color) { Pixmap pixmap = new Pixmap(width, height, Pixmap.Format.RGBA8888); pixmap.setColor(color); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/stage/AskBrickStageTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/stage/AskBrickStageTest.java index e8e62d41bbb..9dbdcc1b32b 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/stage/AskBrickStageTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/stage/AskBrickStageTest.java @@ -41,7 +41,6 @@ import org.catrobat.catroid.uiespresso.testsuites.Cat; import org.catrobat.catroid.uiespresso.testsuites.Level; import org.catrobat.catroid.uiespresso.util.rules.BaseActivityInstrumentationRule; -import org.junit.Assert; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -55,7 +54,7 @@ import static android.support.test.espresso.matcher.ViewMatchers.withText; import static org.catrobat.catroid.uiespresso.util.UiTestUtils.getResourcesString; -import static org.catrobat.catroid.uiespresso.util.UserVariableTestUtils.userVariableEqualsWithinTimeout; +import static org.catrobat.catroid.uiespresso.util.UserVariableAssertions.assertUserVariableEqualsWithTimeout; import static org.hamcrest.core.StringEndsWith.endsWith; @RunWith(AndroidJUnit4.class) @@ -84,7 +83,7 @@ public void testAskBrickEmptyAnswer() { onView(withText(R.string.brick_ask_dialog_submit)) .perform(click()); - Assert.assertTrue(userVariableEqualsWithinTimeout(userVariable, testAnswer, 1000)); + assertUserVariableEqualsWithTimeout(userVariable, testAnswer, 1000); } @Category({Cat.CatrobatLanguage.class, Level.Functional.class}) @@ -99,7 +98,7 @@ public void testAskBrickNormalAnswer() { onView(withText(R.string.brick_ask_dialog_submit)) .perform(click()); - Assert.assertTrue(userVariableEqualsWithinTimeout(userVariable, testAnswer, 1000)); + assertUserVariableEqualsWithTimeout(userVariable, testAnswer, 1000); } private void createProject(String projectName) { diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/stage/WhenNfcBrickHardwareStageTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/stage/WhenNfcBrickHardwareStageTest.java index 78afc9dd289..288dd991695 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/stage/WhenNfcBrickHardwareStageTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/stage/WhenNfcBrickHardwareStageTest.java @@ -26,8 +26,6 @@ import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; -import junit.framework.Assert; - import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.R; import org.catrobat.catroid.content.Project; @@ -43,7 +41,6 @@ import org.catrobat.catroid.uiespresso.annotations.Flaky; import org.catrobat.catroid.uiespresso.testsuites.Cat; import org.catrobat.catroid.uiespresso.testsuites.Level; -import org.catrobat.catroid.uiespresso.util.UserVariableTestUtils; import org.catrobat.catroid.uiespresso.util.hardware.SensorTestArduinoServerConnection; import org.catrobat.catroid.uiespresso.util.rules.BaseActivityInstrumentationRule; import org.junit.Before; @@ -60,6 +57,8 @@ import static org.catrobat.catroid.uiespresso.content.brick.utils.UiNFCTestUtils.NUM_DETECTED_TAGS; import static org.catrobat.catroid.uiespresso.content.brick.utils.UiNFCTestUtils.READ_TAG_ID; import static org.catrobat.catroid.uiespresso.content.brick.utils.UiNFCTestUtils.READ_TAG_MESSAGE; +import static org.catrobat.catroid.uiespresso.util.UserVariableAssertions.assertUserVariableContainsStringWithTimeout; +import static org.catrobat.catroid.uiespresso.util.UserVariableAssertions.assertUserVariableEqualsWithTimeout; @RunWith(AndroidJUnit4.class) public class WhenNfcBrickHardwareStageTest { @@ -123,8 +122,8 @@ public void testWhenNfcHardware() { onBrickAtPosition(whenNfcBrickPosition).checkShowsText(R.string.brick_when_nfc); onView(withId(R.id.button_play)).perform(click()); SensorTestArduinoServerConnection.emulateNfcTag(true, tagID, catrobatUrl); - Assert.assertTrue(UserVariableTestUtils.userVariableContainsWithinTimeout(readTagId, tagID, waitingTime)); - Assert.assertTrue(UserVariableTestUtils.userVariableContainsWithinTimeout(readTagMessage, catrobatUrl, waitingTime)); - Assert.assertTrue(UserVariableTestUtils.userVariableEqualsWithinTimeout(numDetectedTags, 1, waitingTime)); + assertUserVariableContainsStringWithTimeout(readTagId, tagID, waitingTime); + assertUserVariableContainsStringWithTimeout(readTagMessage, catrobatUrl, waitingTime); + assertUserVariableEqualsWithTimeout(numDetectedTags, 1, waitingTime); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/stage/WhenNfcBrickStageFromScriptTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/stage/WhenNfcBrickStageFromScriptTest.java index 0aba426f974..354361bb853 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/stage/WhenNfcBrickStageFromScriptTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/stage/WhenNfcBrickStageFromScriptTest.java @@ -27,8 +27,6 @@ import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; -import junit.framework.Assert; - import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; @@ -50,7 +48,6 @@ import org.catrobat.catroid.uiespresso.content.brick.utils.UiNFCTestUtils; import org.catrobat.catroid.uiespresso.testsuites.Cat; import org.catrobat.catroid.uiespresso.testsuites.Level; -import org.catrobat.catroid.uiespresso.util.UserVariableTestUtils; import org.catrobat.catroid.uiespresso.util.rules.BaseActivityInstrumentationRule; import org.junit.Before; import org.junit.Rule; @@ -75,6 +72,7 @@ import static org.catrobat.catroid.uiespresso.content.brick.utils.UiNFCTestUtils.TAG_NAME_TEST1; import static org.catrobat.catroid.uiespresso.content.brick.utils.UiNFCTestUtils.TAG_NAME_TEST2; import static org.catrobat.catroid.uiespresso.content.brick.utils.UiNFCTestUtils.onNfcBrickAtPosition; +import static org.catrobat.catroid.uiespresso.util.UserVariableAssertions.assertUserVariableEqualsWithTimeout; @RunWith(AndroidJUnit4.class) public class WhenNfcBrickStageFromScriptTest { @@ -106,8 +104,8 @@ public void testNfcSensorVariable() throws InterpretationException { onView(withId(R.id.button_play)) .perform(click()); - Assert.assertTrue(UserVariableTestUtils.userVariableEqualsWithinTimeout(readTagId, 0, 2000)); - Assert.assertTrue(UserVariableTestUtils.userVariableEqualsWithinTimeout(readTagMessage, "0.0", 2000)); + assertUserVariableEqualsWithTimeout(readTagId, 0, 2000); + assertUserVariableEqualsWithTimeout(readTagMessage, "0.0", 2000); } @Category({Cat.CatrobatLanguage.class, Level.Functional.class, Cat.Gadgets.class, Cat.SettingsAndPermissions.class}) diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/stage/WhenNfcBrickStageTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/stage/WhenNfcBrickStageTest.java index 3c158dd5bac..906eb365625 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/stage/WhenNfcBrickStageTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/stage/WhenNfcBrickStageTest.java @@ -46,7 +46,6 @@ import org.catrobat.catroid.uiespresso.content.brick.utils.UiNFCTestUtils; import org.catrobat.catroid.uiespresso.testsuites.Cat; import org.catrobat.catroid.uiespresso.testsuites.Level; -import org.catrobat.catroid.uiespresso.util.UserVariableTestUtils; import org.catrobat.catroid.uiespresso.util.rules.BaseActivityInstrumentationRule; import org.junit.Before; import org.junit.Rule; @@ -60,6 +59,8 @@ import static org.catrobat.catroid.uiespresso.content.brick.utils.UiNFCTestUtils.READ_TAG_MESSAGE; import static org.catrobat.catroid.uiespresso.content.brick.utils.UiNFCTestUtils.TAG_NAME_TEST1; import static org.catrobat.catroid.uiespresso.content.brick.utils.UiNFCTestUtils.TAG_NAME_TEST2; +import static org.catrobat.catroid.uiespresso.util.UserVariableAssertions.assertUserVariableEqualsWithTimeout; +import static org.catrobat.catroid.uiespresso.util.UserVariableAssertions.assertUserVariableNotEqualsForTimeMs; public class WhenNfcBrickStageTest { @Rule @@ -153,18 +154,18 @@ public void testTriggerAll() throws InterpretationException { Assert.assertEquals("Tag count is not 0.", 0.0, numDetectedTags.getValue()); UiNFCTestUtils.fakeNfcTag(UiNFCTestUtils.FIRST_TEST_TAG_ID, ndefMessage1, null, baseActivityTestRule.getActivity()); - Assert.assertTrue(UserVariableTestUtils.userVariableEqualsWithinTimeout(readTagId, - Double.parseDouble(UiNFCTestUtils.FIRST_TEST_TAG_UID), 2000)); - Assert.assertTrue(UserVariableTestUtils.userVariableEqualsWithinTimeout(readTagMessage, - UiNFCTestUtils.NFC_NDEF_STRING_1, 2000)); - Assert.assertTrue(UserVariableTestUtils.userVariableEqualsWithinTimeout(numDetectedTags, 1.0, 2000)); + assertUserVariableEqualsWithTimeout(readTagId, + Double.parseDouble(UiNFCTestUtils.FIRST_TEST_TAG_UID), 2000); + assertUserVariableEqualsWithTimeout(readTagMessage, + UiNFCTestUtils.NFC_NDEF_STRING_1, 2000); + assertUserVariableEqualsWithTimeout(numDetectedTags, 1.0, 2000); UiNFCTestUtils.fakeNfcTag(UiNFCTestUtils.SECOND_TEST_TAG_ID, ndefMessage2, null, baseActivityTestRule.getActivity()); - Assert.assertTrue(UserVariableTestUtils.userVariableEqualsWithinTimeout(readTagId, - Double.parseDouble(UiNFCTestUtils.SECOND_TEST_TAG_UID), 2000)); - Assert.assertTrue(UserVariableTestUtils.userVariableEqualsWithinTimeout(readTagMessage, - UiNFCTestUtils.NFC_NDEF_STRING_2, 2000)); - Assert.assertTrue(UserVariableTestUtils.userVariableEqualsWithinTimeout(numDetectedTags, 2.0, 2000)); + assertUserVariableEqualsWithTimeout(readTagId, + Double.parseDouble(UiNFCTestUtils.SECOND_TEST_TAG_UID), 2000); + assertUserVariableEqualsWithTimeout(readTagMessage, + UiNFCTestUtils.NFC_NDEF_STRING_2, 2000); + assertUserVariableEqualsWithTimeout(numDetectedTags, 2.0, 2000); } @Category({Cat.CatrobatLanguage.class, Level.Functional.class, Cat.SettingsAndPermissions.class}) @@ -179,13 +180,13 @@ public void testTriggerOne() throws InterpretationException { Assert.assertTrue("Read tag message does not match default value.", readTagMessage.getValue().equals(0.0)); UiNFCTestUtils.fakeNfcTag(UiNFCTestUtils.FIRST_TEST_TAG_ID, ndefMessage1, null, baseActivityTestRule.getActivity()); - Assert.assertTrue(UserVariableTestUtils.userVariableDoesDifferWithinTimeout(numDetectedTags, 1.0, 2000)); + assertUserVariableNotEqualsForTimeMs(numDetectedTags, 1.0, 2000); UiNFCTestUtils.fakeNfcTag(UiNFCTestUtils.SECOND_TEST_TAG_ID, ndefMessage2, null, baseActivityTestRule.getActivity()); - Assert.assertTrue(UserVariableTestUtils.userVariableEqualsWithinTimeout(readTagId, - Double.parseDouble(UiNFCTestUtils.SECOND_TEST_TAG_UID), 2000)); - Assert.assertTrue(UserVariableTestUtils.userVariableEqualsWithinTimeout(readTagMessage, - UiNFCTestUtils.NFC_NDEF_STRING_2, 2000)); - Assert.assertTrue(UserVariableTestUtils.userVariableEqualsWithinTimeout(numDetectedTags, 1.0, 2000)); + assertUserVariableEqualsWithTimeout(readTagId, + Double.parseDouble(UiNFCTestUtils.SECOND_TEST_TAG_UID), 2000); + assertUserVariableEqualsWithTimeout(readTagMessage, + UiNFCTestUtils.NFC_NDEF_STRING_2, 2000); + assertUserVariableEqualsWithTimeout(numDetectedTags, 1.0, 2000); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/BroadcastForClonesRegressionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/BroadcastForClonesRegressionTest.java index 55ac6b9da7b..f29b465531d 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/BroadcastForClonesRegressionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/BroadcastForClonesRegressionTest.java @@ -26,8 +26,6 @@ import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; -import junit.framework.Assert; - import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.R; import org.catrobat.catroid.content.BroadcastScript; @@ -56,7 +54,7 @@ import static android.support.test.espresso.action.ViewActions.click; import static android.support.test.espresso.matcher.ViewMatchers.withId; -import static org.catrobat.catroid.uiespresso.util.UserVariableTestUtils.userVariableEqualsWithinTimeout; +import static org.catrobat.catroid.uiespresso.util.UserVariableAssertions.assertUserVariableEqualsWithTimeout; @RunWith(AndroidJUnit4.class) public class BroadcastForClonesRegressionTest { @@ -80,7 +78,7 @@ public void setUp() throws Exception { public void testIfBroadcastsAreReceivedByClones() { baseActivityTestRule.launchActivity(null); - Assert.assertTrue(userVariableEqualsWithinTimeout(userVariable, 2, 1000)); + assertUserVariableEqualsWithTimeout(userVariable, 2, 1000); } @Category({Level.Functional.class, Cat.CatrobatLanguage.class}) @@ -92,7 +90,7 @@ public void testIfClonesBroadcastReceiversAreRemovedOnRestart() { onView(withId(R.id.stage_dialog_button_restart)) .perform(click()); - Assert.assertTrue(userVariableEqualsWithinTimeout(userVariable, 2, 1000)); + assertUserVariableEqualsWithTimeout(userVariable, 2, 1000); } private void createProject() { diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/BroadcastReceiverRegressionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/BroadcastReceiverRegressionTest.java index 775a3734c42..8d6397b59bc 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/BroadcastReceiverRegressionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/BroadcastReceiverRegressionTest.java @@ -25,8 +25,6 @@ import android.support.test.runner.AndroidJUnit4; -import junit.framework.Assert; - import org.catrobat.catroid.R; import org.catrobat.catroid.content.BroadcastScript; import org.catrobat.catroid.content.Project; @@ -48,7 +46,6 @@ import org.catrobat.catroid.uiespresso.testsuites.Cat; import org.catrobat.catroid.uiespresso.testsuites.Level; import org.catrobat.catroid.uiespresso.util.UiTestUtils; -import org.catrobat.catroid.uiespresso.util.UserVariableTestUtils; import org.catrobat.catroid.uiespresso.util.rules.BaseActivityInstrumentationRule; import org.junit.Before; import org.junit.Rule; @@ -61,8 +58,8 @@ import static android.support.test.espresso.action.ViewActions.click; import static android.support.test.espresso.matcher.ViewMatchers.withId; -import static org.catrobat.catroid.uiespresso.util.UserVariableTestUtils.userVariableEqualsWithinTimeout; -import static org.catrobat.catroid.uiespresso.util.UserVariableTestUtils.userVariableGreaterThanWithinTimeout; +import static org.catrobat.catroid.uiespresso.util.UserVariableAssertions.assertUserVariableEqualsWithTimeout; +import static org.catrobat.catroid.uiespresso.util.UserVariableAssertions.assertUserVariableIsGreaterThanWithTimeout; @RunWith(AndroidJUnit4.class) public class BroadcastReceiverRegressionTest { @@ -104,7 +101,7 @@ public void broadcastScriptNotExecutedWithWrongMessage() { baseActivityTestRule.launchActivity(null); - Assert.assertTrue(userVariableEqualsWithinTimeout(userVariable, 1, 2000)); + assertUserVariableEqualsWithTimeout(userVariable, 1, 2000); } @Category({Level.Functional.class, Cat.CatrobatLanguage.class}) @@ -116,7 +113,7 @@ public void testBroadcastReceiverOnce() { baseActivityTestRule.launchActivity(null); - Assert.assertTrue(userVariableEqualsWithinTimeout(userVariable, 3, 2000)); + assertUserVariableEqualsWithTimeout(userVariable, 3, 2000); } @Category({Level.Functional.class, Cat.CatrobatLanguage.class}) @@ -128,12 +125,12 @@ public void testReceiversWorkMoreThanOnce() { StageTestUtils.addBroadcastScriptSettingUserVariableToSprite(sprite1, BROADCAST_MESSAGE_1, userVariable, 3.0); baseActivityTestRule.launchActivity(null); - userVariableEqualsWithinTimeout(userVariable, 3, 2000); + assertUserVariableEqualsWithTimeout(userVariable, 3, 2000); pressBack(); userVariable.setValue(initialValue); onView(withId(R.id.stage_dialog_button_restart)).perform(click()); - Assert.assertTrue(userVariableEqualsWithinTimeout(userVariable, 3, 2000)); + assertUserVariableEqualsWithTimeout(userVariable, 3, 2000); } @Category({Level.Functional.class, Cat.CatrobatLanguage.class}) @@ -148,7 +145,7 @@ public void testScriptRestartingItself() { baseActivityTestRule.launchActivity(null); - Assert.assertTrue(userVariableGreaterThanWithinTimeout(userVariable, 1.0, 2000)); + assertUserVariableIsGreaterThanWithTimeout(userVariable, 1.0, 2000); } @Category({Level.Functional.class, Cat.CatrobatLanguage.class}) @@ -166,7 +163,7 @@ public void testRestartingOfWhenScriptWithBroadcastWaitBrick() { baseActivityTestRule.launchActivity(null); - Assert.assertTrue(userVariableGreaterThanWithinTimeout(userVariable, 5, 1000)); + assertUserVariableIsGreaterThanWithTimeout(userVariable, 5, 1000); } @Category({Level.Functional.class, Cat.CatrobatLanguage.class}) @@ -191,7 +188,7 @@ public void testRestartingSendBroadcastAfterBroadcastAndWait() { baseActivityTestRule.launchActivity(null); - Assert.assertTrue(userVariableEqualsWithinTimeout(userVariable, 3101, 1000)); + assertUserVariableEqualsWithTimeout(userVariable, 3101, 1000); } @Category({Level.Functional.class, Cat.CatrobatLanguage.class}) @@ -215,7 +212,7 @@ public void testRestartingSendBroadcastInBroadcastAndWait() { baseActivityTestRule.launchActivity(null); - Assert.assertTrue(userVariableGreaterThanWithinTimeout(userVariable, 2002, 1000)); + assertUserVariableIsGreaterThanWithTimeout(userVariable, 2002, 1000); } @Category({Level.Functional.class, Cat.CatrobatLanguage.class}) @@ -240,7 +237,7 @@ public void testCorrectRestartingOfBroadcastsWithSameActionStringsWithinOneSprit baseActivityTestRule.launchActivity(null); - Assert.assertTrue(userVariableEqualsWithinTimeout(userVariable, 20, 1000)); + assertUserVariableEqualsWithTimeout(userVariable, 20, 1000); } public Sprite createSpriteAndAddToProject(String name, Project project) { @@ -269,7 +266,7 @@ public void testBroadcastReceiverWithMoreThanOneReceiverScript() { baseActivityTestRule.launchActivity(null); - Assert.assertTrue(UserVariableTestUtils.userVariableEqualsWithinTimeout(userVariable, 3, 2000)); - Assert.assertTrue(UserVariableTestUtils.userVariableEqualsWithinTimeout(userVariable2, 4, 2000)); + assertUserVariableEqualsWithTimeout(userVariable, 3, 2000); + assertUserVariableEqualsWithTimeout(userVariable2, 4, 2000); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/DisabledBrickInClonesRegressionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/DisabledBrickInClonesRegressionTest.java index b2813d64e8d..28beef4cf08 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/DisabledBrickInClonesRegressionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/DisabledBrickInClonesRegressionTest.java @@ -26,8 +26,6 @@ import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; -import junit.framework.Assert; - import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.content.Project; import org.catrobat.catroid.content.Script; @@ -51,7 +49,7 @@ import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; -import static org.catrobat.catroid.uiespresso.util.UserVariableTestUtils.userVariableEqualsWithinTimeout; +import static org.catrobat.catroid.uiespresso.util.UserVariableAssertions.assertUserVariableEqualsWithTimeout; @RunWith(AndroidJUnit4.class) public class DisabledBrickInClonesRegressionTest { @@ -103,6 +101,6 @@ private void createProject() { public void setVariableInCloneShouldNotBeExecutedTest() { baseActivityTestRule.launchActivity(); lastBrickInScript.waitUntilEvaluated(3000); - Assert.assertTrue(userVariableEqualsWithinTimeout(userVariable, 1D, 2000)); + assertUserVariableEqualsWithTimeout(userVariable, 1D, 2000); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/MultipleBroadcastsTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/MultipleBroadcastsTest.java index c59d4fc6181..b3aac257e58 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/MultipleBroadcastsTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/MultipleBroadcastsTest.java @@ -25,8 +25,6 @@ import android.support.test.runner.AndroidJUnit4; -import junit.framework.Assert; - import org.catrobat.catroid.content.Project; import org.catrobat.catroid.content.Script; import org.catrobat.catroid.content.SingleSprite; @@ -49,7 +47,7 @@ import java.util.ArrayList; -import static org.catrobat.catroid.uiespresso.util.UserVariableTestUtils.userVariableEqualsWithinTimeout; +import static org.catrobat.catroid.uiespresso.util.UserVariableAssertions.assertUserVariableEqualsWithTimeout; @RunWith(AndroidJUnit4.class) public class MultipleBroadcastsTest { @@ -88,7 +86,7 @@ public void testSendMultipleBroadcasts() throws InterruptedException { baseActivityTestRule.launchActivity(null); for (int i = 0; i < userVariables.size(); i++) { - Assert.assertTrue(userVariableEqualsWithinTimeout(userVariables.get(i), VALUES[i], 2000)); + assertUserVariableEqualsWithTimeout(userVariables.get(i), VALUES[i], 2000); } } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/utils/ScriptEvaluationGateBrick.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/utils/ScriptEvaluationGateBrick.java index badc8586096..987c216c3db 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/utils/ScriptEvaluationGateBrick.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/utils/ScriptEvaluationGateBrick.java @@ -30,7 +30,8 @@ import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.formulaeditor.UserVariable; import org.catrobat.catroid.formulaeditor.datacontainer.DataContainer; -import org.catrobat.catroid.uiespresso.util.UserVariableTestUtils; + +import static org.catrobat.catroid.uiespresso.util.UserVariableAssertions.assertUserVariableEqualsWithTimeout; public final class ScriptEvaluationGateBrick { private static int gateCounter; @@ -53,8 +54,8 @@ public static ScriptEvaluationGateBrick appendToScript(Script script) { return new ScriptEvaluationGateBrick(script); } - public boolean waitUntilEvaluated(int timeoutMillis) { - return UserVariableTestUtils.userVariableEqualsWithinTimeout(userVariableGate, DONEVALUE, timeoutMillis); + public void waitUntilEvaluated(int timeoutMillis) { + assertUserVariableEqualsWithTimeout(userVariableGate, DONEVALUE, timeoutMillis); } public void reset() { diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/util/UiTestUtils.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/util/UiTestUtils.java index 54a524d9f78..5bdb894ecf6 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/util/UiTestUtils.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/util/UiTestUtils.java @@ -47,7 +47,7 @@ import static org.hamcrest.CoreMatchers.instanceOf; public final class UiTestUtils { - // Suppress default constructor for noninstantiability + private UiTestUtils() { throw new AssertionError(); } @@ -88,18 +88,6 @@ public static Project createEmptyProject(String projectName) { return project; } - public static boolean comparePixelRgbaArrays(byte[] firstArray, byte[] secondArray) { - if (firstArray == null || secondArray == null || firstArray.length != 4 || secondArray.length != 4) { - return false; - } - for (int i = 0; i < 4; i++) { - if (Math.abs((firstArray[i] & 0xFF) - (secondArray[i] & 0xFF)) > 10) { - return false; - } - } - return true; - } - public static ViewInteraction onToast(Matcher viewMatcher) { return onView(viewMatcher).inRoot(isToast()); } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/util/UserVariableTestUtils.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/util/UserVariableAssertions.java similarity index 51% rename from catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/util/UserVariableTestUtils.java rename to catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/util/UserVariableAssertions.java index 81dbd7d378f..0fe68017368 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/util/UserVariableTestUtils.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/util/UserVariableAssertions.java @@ -29,76 +29,84 @@ import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.matcher.ViewMatchers.isRoot; -public final class UserVariableTestUtils { +import static junit.framework.Assert.assertEquals; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.containsString; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.greaterThan; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.not; + +public final class UserVariableAssertions { private static final double EPSILON = 0.001; - private UserVariableTestUtils() { + private UserVariableAssertions() { throw new AssertionError(); } - public static boolean userVariableEqualsWithinTimeout(UserVariable userVariable, double expectedValue, + public static void assertUserVariableEqualsWithTimeout(UserVariable userVariable, double expectedValue, int timeoutMillis) { - int intervalMillis = 10; - for (; timeoutMillis > 0; timeoutMillis -= intervalMillis) { + for (int intervalMillis = 10; timeoutMillis > 0; timeoutMillis -= intervalMillis) { if (areEqualWithinEpsilon(expectedValue, (Double) userVariable.getValue())) { - return true; + assertEquals(expectedValue, (Double) userVariable.getValue(), EPSILON); + return; } onView(isRoot()) .perform(CustomActions.wait(intervalMillis)); } - return false; + assertEquals(expectedValue, (Double) userVariable.getValue(), EPSILON); } - public static boolean userVariableDoesDifferWithinTimeout(UserVariable userVariable, double expectedValue, + public static void assertUserVariableNotEqualsForTimeMs(UserVariable userVariable, double expectedValue, int timeoutMillis) { - int intervalMillis = 10; - for (; timeoutMillis > 0; timeoutMillis -= intervalMillis) { + for (int intervalMillis = 10; timeoutMillis > 0; timeoutMillis -= intervalMillis) { if (areEqualWithinEpsilon(expectedValue, (Double) userVariable.getValue())) { - return false; + assertThat((Double) userVariable.getValue(), not(equalTo(expectedValue))); } onView(isRoot()) .perform(CustomActions.wait(intervalMillis)); } - return true; + assertThat((Double) userVariable.getValue(), not(equalTo(expectedValue))); } - public static boolean userVariableEqualsWithinTimeout(UserVariable userVariable, String expectedValue, + public static void assertUserVariableEqualsWithTimeout(UserVariable userVariable, String expectedValue, int timeoutMillis) { - int intervalMillis = 10; - for (; timeoutMillis > 0; timeoutMillis -= intervalMillis) { + for (int intervalMillis = 10; timeoutMillis > 0; timeoutMillis -= intervalMillis) { if (expectedValue.equals(userVariable.getValue().toString())) { - return true; + assertEquals(expectedValue, userVariable.getValue().toString()); + return; } onView(isRoot()) .perform(CustomActions.wait(intervalMillis)); } - return false; + assertEquals(expectedValue, userVariable.getValue().toString()); } - public static boolean userVariableContainsWithinTimeout(UserVariable userVariable, String expectedValue, + public static void assertUserVariableContainsStringWithTimeout(UserVariable userVariable, String expectedValue, int timeoutMillis) { - int intervalMillis = 10; - for (; timeoutMillis > 0; timeoutMillis -= intervalMillis) { + for (int intervalMillis = 10; timeoutMillis > 0; timeoutMillis -= intervalMillis) { if (userVariable.getValue().toString().contains(expectedValue)) { - return true; + assertThat(userVariable.getValue().toString(), containsString(expectedValue)); + return; } onView(isRoot()) .perform(CustomActions.wait(intervalMillis)); } - return false; + assertThat(userVariable.getValue().toString(), containsString(expectedValue)); } - public static boolean userVariableGreaterThanWithinTimeout(UserVariable userVariable, double expectedValue, + public static void assertUserVariableIsGreaterThanWithTimeout(UserVariable userVariable, double expectedValue, int timeoutMillis) { - int step = 10; - for (; timeoutMillis > 0; timeoutMillis -= step) { + for (int intervalMillis = 10; timeoutMillis > 0; timeoutMillis -= intervalMillis) { if ((double) userVariable.getValue() > (expectedValue + EPSILON)) { - return true; + assertThat((double) userVariable.getValue(), is(greaterThan(expectedValue + EPSILON))); + return; } - onView(isRoot()).perform(CustomActions.wait(step)); + onView(isRoot()).perform(CustomActions.wait(intervalMillis)); } - return false; + assertThat((double) userVariable.getValue(), is(greaterThan(expectedValue + EPSILON))); } private static boolean areEqualWithinEpsilon(double expected, double actual) { diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/util/matchers/StageMatchers.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/util/matchers/StageMatchers.java index 699edda191f..9d1bfcba0f5 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/util/matchers/StageMatchers.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/util/matchers/StageMatchers.java @@ -29,7 +29,6 @@ import com.badlogic.gdx.backends.android.surfaceview.GLSurfaceView20; import org.catrobat.catroid.stage.StageActivity; -import org.catrobat.catroid.uiespresso.util.UiTestUtils; import org.hamcrest.Description; import org.hamcrest.Matcher; @@ -46,7 +45,7 @@ public static Matcher isColorAtPx(final byte[] color, final int x, final i @Override protected boolean matchesSafely(GLSurfaceView20 view) { byte[] testPixels = StageActivity.stageListener.getPixels(x, y, 1, 1); - return UiTestUtils.comparePixelRgbaArrays(testPixels, color); + return comparePixelRgbaArrays(testPixels, color); } @Override @@ -56,4 +55,16 @@ public void describeTo(Description description) { } }; } + + private static boolean comparePixelRgbaArrays(byte[] firstArray, byte[] secondArray) { + if (firstArray == null || secondArray == null || firstArray.length != 4 || secondArray.length != 4) { + return false; + } + for (int i = 0; i < 4; i++) { + if (Math.abs((firstArray[i] & 0xFF) - (secondArray[i] & 0xFF)) > 10) { + return false; + } + } + return true; + } } From d894e29ad09ae41f40898f986bea52bb668ff198 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch <84n4n4@gmail.com> Date: Thu, 26 Jul 2018 15:48:25 +0200 Subject: [PATCH 11/67] [GSOC18] Refactor facedetection tests to use mockito --- .../FaceDetectionHandlerTest.java | 41 ++++++---- .../test/facedetection/FaceDetectorTest.java | 76 ++++++++++++------- .../catroid/test/utils/TestFaceDetector.java | 45 ----------- .../facedetection/FaceDetectionHandler.java | 6 ++ 4 files changed, 80 insertions(+), 88 deletions(-) delete mode 100644 catroid/src/androidTest/java/org/catrobat/catroid/test/utils/TestFaceDetector.java diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/FaceDetectionHandlerTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/FaceDetectionHandlerTest.java index 3b161afe5bb..390d6e7769e 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/FaceDetectionHandlerTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/FaceDetectionHandlerTest.java @@ -25,39 +25,52 @@ import android.support.test.runner.AndroidJUnit4; import org.catrobat.catroid.facedetection.FaceDetectionHandler; -import org.catrobat.catroid.test.utils.Reflection; -import org.catrobat.catroid.test.utils.TestFaceDetector; +import org.catrobat.catroid.facedetection.FaceDetector; +import org.junit.After; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.InOrder; +import org.mockito.Mockito; -import static junit.framework.Assert.assertFalse; -import static junit.framework.Assert.assertTrue; +import static org.mockito.Mockito.inOrder; +import static org.mockito.Mockito.verifyNoMoreInteractions; +import static org.mockito.Mockito.when; @RunWith(AndroidJUnit4.class) public class FaceDetectionHandlerTest { + @After + public void tearDown() { + FaceDetectionHandler.setFaceDetector(null); + } + @Test - public void testResume() throws Exception { - TestFaceDetector detector = new TestFaceDetector(); - Reflection.setPrivateField(FaceDetectionHandler.class, "faceDetector", detector); - assertFalse(detector.started); + public void testResume() { + FaceDetector detector = Mockito.mock(FaceDetector.class); + when(detector.startFaceDetection()).thenReturn(true); + InOrder inOrder = inOrder(detector); + FaceDetectionHandler.setFaceDetector(detector); FaceDetectionHandler.resumeFaceDetection(); - assertFalse(detector.started); + verifyNoMoreInteractions(detector); FaceDetectionHandler.startFaceDetection(); - assertTrue(detector.started); + inOrder.verify(detector).startFaceDetection(); + verifyNoMoreInteractions(detector); FaceDetectionHandler.pauseFaceDetection(); - assertFalse(detector.started); + inOrder.verify(detector).stopFaceDetection(); + verifyNoMoreInteractions(detector); FaceDetectionHandler.resumeFaceDetection(); - assertTrue(detector.started); + inOrder.verify(detector).startFaceDetection(); + verifyNoMoreInteractions(detector); FaceDetectionHandler.stopFaceDetection(); - assertFalse(detector.started); + inOrder.verify(detector).stopFaceDetection(); + verifyNoMoreInteractions(detector); FaceDetectionHandler.resumeFaceDetection(); - assertFalse(detector.started); + verifyNoMoreInteractions(detector); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/FaceDetectorTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/FaceDetectorTest.java index a9ddc5c0926..3440d1763da 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/FaceDetectorTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/FaceDetectorTest.java @@ -24,54 +24,72 @@ import android.support.test.runner.AndroidJUnit4; +import org.catrobat.catroid.facedetection.FaceDetector; import org.catrobat.catroid.formulaeditor.SensorCustomEvent; import org.catrobat.catroid.formulaeditor.SensorCustomEventListener; -import org.catrobat.catroid.test.utils.TestFaceDetector; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertFalse; -import static junit.framework.Assert.assertTrue; -import static org.hamcrest.Matchers.anyOf; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.lessThanOrEqualTo; -import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; @RunWith(AndroidJUnit4.class) public class FaceDetectorTest { + @Rule + public MockitoRule rule = MockitoJUnit.rule(); - private int numberOfCalls = 0; - private boolean statusFaceDetected = false; - - private SensorCustomEventListener onFaceDetectionStatusListener = new SensorCustomEventListener() { - - public void onCustomSensorChanged(SensorCustomEvent event) { - numberOfCalls++; - assertThat(event.values[0], anyOf(is(1.0f), is(0.0f))); - statusFaceDetected = event.values[0] == 1.0f; - } - }; + @Captor + private ArgumentCaptor captor; @Test public void testStatusListenerCallback() { TestFaceDetector detector = new TestFaceDetector(); - numberOfCalls = 0; - statusFaceDetected = false; + + SensorCustomEventListener onFaceDetectionStatusListener = Mockito.mock(SensorCustomEventListener.class); + detector.addOnFaceDetectionStatusListener(onFaceDetectionStatusListener); - assertEquals(0, numberOfCalls); + verifyNoMoreInteractions(onFaceDetectionStatusListener); + detector.sendFaceDetected(false); - assertEquals(0, numberOfCalls); - assertFalse(statusFaceDetected); + verifyNoMoreInteractions(onFaceDetectionStatusListener); + detector.sendFaceDetected(true); - assertTrue(statusFaceDetected); - assertThat(numberOfCalls, is(lessThanOrEqualTo(1))); - assertEquals(1, numberOfCalls); + verify(onFaceDetectionStatusListener).onCustomSensorChanged(captor.capture()); + assertEquals(1.0f, captor.getValue().values[0]); + verifyNoMoreInteractions(onFaceDetectionStatusListener); + detector.sendFaceDetected(true); - assertEquals(1, numberOfCalls); + verify(onFaceDetectionStatusListener).onCustomSensorChanged(captor.capture()); + assertEquals(1.0f, captor.getValue().values[0]); + verifyNoMoreInteractions(onFaceDetectionStatusListener); + detector.sendFaceDetected(false); - assertEquals(2, numberOfCalls); - assertFalse(statusFaceDetected); + verify(onFaceDetectionStatusListener, times(2)).onCustomSensorChanged(captor.capture()); + assertEquals(0.0f, captor.getValue().values[0]); + verifyNoMoreInteractions(onFaceDetectionStatusListener); + } + + public class TestFaceDetector extends FaceDetector { + @Override + public boolean startFaceDetection() { + return true; + } + + @Override + public void stopFaceDetection() { + } + + void sendFaceDetected(boolean detected) { + this.onFaceDetected(detected); + } } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/TestFaceDetector.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/TestFaceDetector.java deleted file mode 100644 index dbd268d8f16..00000000000 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/TestFaceDetector.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Catroid: An on-device visual programming system for Android devices - * Copyright (C) 2010-2018 The Catrobat Team - * () - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * An additional term exception under section 7 of the GNU Affero - * General Public License, version 3, is available at - * http://developer.catrobat.org/license_additional_term - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -package org.catrobat.catroid.test.utils; - -import org.catrobat.catroid.facedetection.FaceDetector; - -public class TestFaceDetector extends FaceDetector { - - public boolean started = false; - - @Override - public boolean startFaceDetection() { - started = true; - return true; - } - - @Override - public void stopFaceDetection() { - started = false; - } - - public void sendFaceDetected(boolean detected) { - this.onFaceDetected(detected); - } -} diff --git a/catroid/src/main/java/org/catrobat/catroid/facedetection/FaceDetectionHandler.java b/catroid/src/main/java/org/catrobat/catroid/facedetection/FaceDetectionHandler.java index 346d1a872cb..67391aa509d 100644 --- a/catroid/src/main/java/org/catrobat/catroid/facedetection/FaceDetectionHandler.java +++ b/catroid/src/main/java/org/catrobat/catroid/facedetection/FaceDetectionHandler.java @@ -23,6 +23,7 @@ package org.catrobat.catroid.facedetection; import android.hardware.Camera; +import android.support.annotation.VisibleForTesting; import android.util.Log; import org.catrobat.catroid.camera.CameraManager; @@ -163,4 +164,9 @@ private static int getMaxNumberOfFaces(Camera camera) { } return 0; } + + @VisibleForTesting + public static void setFaceDetector(FaceDetector detector) { + faceDetector = detector; + } } From d00984a72383d2cfbc41d69d7f16341c582f1bfd Mon Sep 17 00:00:00 2001 From: Sandro Eitzinger Date: Thu, 12 Jul 2018 22:50:04 +0200 Subject: [PATCH 12/67] jenkins-196 Keep only the last 30 builds per branch/pull request --- Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Jenkinsfile b/Jenkinsfile index f685141f023..b5f88713000 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -51,6 +51,7 @@ pipeline { options { timeout(time: 2, unit: 'HOURS') timestamps() + buildDiscarder(logRotator(numToKeepStr: '30')) } stages { From 7bc8c43ef0b5c3f6fb23a0fe354a937c7eec77ca Mon Sep 17 00:00:00 2001 From: Thomas Hirsch <84n4n4@gmail.com> Date: Fri, 27 Jul 2018 12:37:31 +0200 Subject: [PATCH 13/67] [GSOC18] test refactoring - mockito, reflection, parameterized tests - mockito over homebrew mocks and reflection - @VisibleForTesting over reflection - parameterized tests over loops in tests - removed unnecessary reflection --- ...teranceCompletedListenerContainerTest.java | 78 ++++---- .../content/actions/PlaySoundActionTest.java | 18 +- .../content/actions/SetLookActionTest.java | 16 +- .../actions/StopAllSoundsActionTest.java | 12 +- .../test/content/bricks/BrickCloneTest.java | 4 +- .../test/content/project/ProjectTest.java | 30 +--- .../sprite/LookBreakDownCatroidAngleTest.java | 77 ++++++++ .../LookCatroidAngleToStageAngleTest.java | 75 ++++++++ .../content/sprite/LookDirectionTest.java | 72 ++++++++ .../LookStageAngleToCatroidAngleTest.java | 75 ++++++++ .../catroid/test/content/sprite/LookTest.java | 166 +----------------- .../catroid/test/drone/DroneBrickTest.java | 3 - .../test/drone/DroneBricksActionTests.java | 45 ++--- .../catroid/test/drone/DroneDemoTest.java | 10 -- .../test/facedetection/FaceDetectorTest.java | 34 ++-- .../facedetection/IcsFaceDetectorTest.java | 96 +++++----- .../SlowFaceDetectorCameraTest.java | 10 +- .../facedetection/SlowFaceDetectorTest.java | 120 ++++++------- .../test/formulaeditor/ParserTestSensors.java | 74 +++----- .../formulaeditor/SensorLoudnessTest.java | 63 ------- .../test/io/CatroidFieldKeySorterTest.java | 21 ++- .../catroid/test/io/SoundManagerTest.java | 57 +++--- .../physics/PhysicsActiveStageAreaTest.java | 1 - .../test/physics/PhysicsBricksCloneTest.java | 30 ++-- .../physics/PhysicsCollisionTestRule.java | 1 - .../catroid/test/physics/PhysicsLookTest.java | 1 - .../test/physics/PhysicsObjectTest.java | 1 - .../test/physics/PhysicsShapeBuilderTest.java | 1 - .../physics/PhysicsShapeScaleUtilsTest.java | 1 - .../test/physics/PhysicsSpriteCloneTest.java | 1 - .../catroid/test/physics/PhysicsTestRule.java | 1 - .../{utils => physics}/PhysicsTestUtils.java | 3 +- .../physics/actions/SetLookActionTest.java | 2 +- .../CollisionDetectionAdvancedTest.java | 15 +- .../CollisionDetectionBasicTest.java | 2 +- ...CollisionDetectionPolygonCreationTest.java | 17 +- .../CollisionFormulaConversionTest.java | 2 +- .../collision}/CollisionInformationTest.java | 4 +- .../collision}/CollisionTestUtils.java | 14 +- .../catroid/test/sensing/TouchesEdgeTest.java | 2 +- .../test/sensing/TouchesFingerTest.java | 2 +- .../StatusBarNotificationManagerTest.java | 11 +- .../test/utils/SimulatedSoundRecorder.java | 57 ------ .../catroid/test/utils/XMLValidationUtil.java | 89 ---------- .../UniqueNameProviderTest.java | 2 +- .../{utils => web}/CrashReporterTest.java | 2 +- .../SettingsFragmentCrashReporterTest.java | 2 +- .../org/catrobat/catroid/content/Look.java | 17 +- .../org/catrobat/catroid/content/Project.java | 8 +- .../facedetection/FaceDetectionHandler.java | 5 + .../catroid/facedetection/FaceDetector.java | 15 +- .../facedetection/SlowFaceDetector.java | 6 + .../catroid/formulaeditor/SensorLoudness.java | 11 ++ .../org/catrobat/catroid/io/SoundManager.java | 8 +- .../bricks/SetPhysicsObjectTypeBrick.java | 6 + 55 files changed, 662 insertions(+), 834 deletions(-) create mode 100644 catroid/src/androidTest/java/org/catrobat/catroid/test/content/sprite/LookBreakDownCatroidAngleTest.java create mode 100644 catroid/src/androidTest/java/org/catrobat/catroid/test/content/sprite/LookCatroidAngleToStageAngleTest.java create mode 100644 catroid/src/androidTest/java/org/catrobat/catroid/test/content/sprite/LookDirectionTest.java create mode 100644 catroid/src/androidTest/java/org/catrobat/catroid/test/content/sprite/LookStageAngleToCatroidAngleTest.java delete mode 100644 catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/SensorLoudnessTest.java rename catroid/src/androidTest/java/org/catrobat/catroid/test/{utils => physics}/PhysicsTestUtils.java (97%) rename catroid/src/androidTest/java/org/catrobat/catroid/test/{sensing => physics/collision}/CollisionDetectionAdvancedTest.java (92%) rename catroid/src/androidTest/java/org/catrobat/catroid/test/{sensing => physics/collision}/CollisionDetectionBasicTest.java (98%) rename catroid/src/androidTest/java/org/catrobat/catroid/test/{sensing => physics/collision}/CollisionDetectionPolygonCreationTest.java (93%) rename catroid/src/androidTest/java/org/catrobat/catroid/test/{sensing => physics/collision}/CollisionFormulaConversionTest.java (99%) rename catroid/src/androidTest/java/org/catrobat/catroid/test/{sensing => physics/collision}/CollisionInformationTest.java (98%) rename catroid/src/androidTest/java/org/catrobat/catroid/test/{utils => physics/collision}/CollisionTestUtils.java (88%) rename catroid/src/androidTest/java/org/catrobat/catroid/test/{utils => ui}/StatusBarNotificationManagerTest.java (94%) delete mode 100644 catroid/src/androidTest/java/org/catrobat/catroid/test/utils/SimulatedSoundRecorder.java delete mode 100644 catroid/src/androidTest/java/org/catrobat/catroid/test/utils/XMLValidationUtil.java rename catroid/src/androidTest/java/org/catrobat/catroid/test/{utils => utiltests}/UniqueNameProviderTest.java (98%) rename catroid/src/androidTest/java/org/catrobat/catroid/test/{utils => web}/CrashReporterTest.java (99%) rename catroid/src/androidTest/java/org/catrobat/catroid/test/{utils => web}/SettingsFragmentCrashReporterTest.java (98%) diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/OnUtteranceCompletedListenerContainerTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/OnUtteranceCompletedListenerContainerTest.java index 89a7180d057..d2de7667b65 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/OnUtteranceCompletedListenerContainerTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/OnUtteranceCompletedListenerContainerTest.java @@ -27,78 +27,89 @@ import org.catrobat.catroid.stage.OnUtteranceCompletedListenerContainer; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; import java.io.File; -import java.util.ArrayList; -import java.util.List; -import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertTrue; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + @SuppressWarnings("deprecation") @RunWith(AndroidJUnit4.class) public class OnUtteranceCompletedListenerContainerTest { - private List onUtteranceCompletedIds; - private OnUtteranceCompletedListenerContainer container; + @Rule + public MockitoRule mockitoRule = MockitoJUnit.rule(); - private final File existingFile = new FileMock(true); - private final File nonExistingFile = new FileMock(false); + private OnUtteranceCompletedListenerContainer container; private final String utteranceId1 = "hash1"; private final String utteranceId2 = "hash2"; + @Mock + private File nonExistingFile; + @Mock + private File existingFile; + @Before public void setUp() throws Exception { container = new OnUtteranceCompletedListenerContainer(); - onUtteranceCompletedIds = new ArrayList(); + + when(nonExistingFile.exists()).thenReturn(false); + when(existingFile.exists()).thenReturn(true); } @Test public void testExistingSpeechFile() { - final OnUtteranceCompletedListener listener = new OnUtteranceCompletedListenerMock(); + OnUtteranceCompletedListener listener = Mockito.mock(OnUtteranceCompletedListener.class); boolean returnValue = container.addOnUtteranceCompletedListener(existingFile, listener, utteranceId1); assertFalse(returnValue); - assertTrue(onUtteranceCompletedIds.contains(utteranceId1)); + verify(listener, times(1)).onUtteranceCompleted(utteranceId1); } @Test public void testNonExistingSpeechFile() { - final OnUtteranceCompletedListener listener = new OnUtteranceCompletedListenerMock(); + OnUtteranceCompletedListener listener = Mockito.mock(OnUtteranceCompletedListener.class); boolean returnValue = container.addOnUtteranceCompletedListener(nonExistingFile, listener, utteranceId1); assertTrue(returnValue); container.onUtteranceCompleted(utteranceId1); - assertTrue(onUtteranceCompletedIds.contains(utteranceId1)); + verify(listener, times(1)).onUtteranceCompleted(utteranceId1); } @Test public void testSpeechFilesWithSameHashValue() { - final OnUtteranceCompletedListener listener1 = new OnUtteranceCompletedListenerMock(); - + OnUtteranceCompletedListener listener1 = Mockito.mock(OnUtteranceCompletedListener.class); boolean returnValue = container.addOnUtteranceCompletedListener(nonExistingFile, listener1, utteranceId1); assertTrue(returnValue); - final OnUtteranceCompletedListener listener2 = new OnUtteranceCompletedListenerMock(); + OnUtteranceCompletedListener listener2 = Mockito.mock(OnUtteranceCompletedListener.class); returnValue = container.addOnUtteranceCompletedListener(nonExistingFile, listener2, utteranceId1); assertFalse(returnValue); container.onUtteranceCompleted(utteranceId1); - assertTrue(onUtteranceCompletedIds.contains(utteranceId1)); - assertEquals(2, onUtteranceCompletedIds.size()); + verify(listener1, times(1)).onUtteranceCompleted(utteranceId1); + verify(listener2, times(1)).onUtteranceCompleted(utteranceId1); } @Test public void testNormalBehavior() { - final OnUtteranceCompletedListener listener1 = new OnUtteranceCompletedListenerMock(); - final OnUtteranceCompletedListener listener2 = new OnUtteranceCompletedListenerMock(); - final OnUtteranceCompletedListener listener3 = new OnUtteranceCompletedListenerMock(); + OnUtteranceCompletedListener listener1 = Mockito.mock(OnUtteranceCompletedListener.class); + OnUtteranceCompletedListener listener2 = Mockito.mock(OnUtteranceCompletedListener.class); + OnUtteranceCompletedListener listener3 = Mockito.mock(OnUtteranceCompletedListener.class); boolean returnValue = container.addOnUtteranceCompletedListener(nonExistingFile, listener1, utteranceId1); assertTrue(returnValue); @@ -107,34 +118,13 @@ public void testNormalBehavior() { assertTrue(returnValue); container.onUtteranceCompleted(utteranceId1); - assertTrue(onUtteranceCompletedIds.contains(utteranceId1)); + verify(listener1, times(1)).onUtteranceCompleted(utteranceId1); returnValue = container.addOnUtteranceCompletedListener(existingFile, listener3, utteranceId1); assertFalse(returnValue); - assertEquals(onUtteranceCompletedIds.get(1), utteranceId1); + verify(listener3, times(1)).onUtteranceCompleted(utteranceId1); container.onUtteranceCompleted(utteranceId2); - assertTrue(onUtteranceCompletedIds.contains(utteranceId2)); - } - - private class OnUtteranceCompletedListenerMock implements OnUtteranceCompletedListener { - public void onUtteranceCompleted(String utteranceId) { - onUtteranceCompletedIds.add(utteranceId); - } - } - - private class FileMock extends File { - private static final long serialVersionUID = 1L; - private boolean exists; - - FileMock(boolean exists) { - super(""); - this.exists = exists; - } - - @Override - public boolean exists() { - return exists; - } + verify(listener2, times(1)).onUtteranceCompleted(utteranceId2); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/PlaySoundActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/PlaySoundActionTest.java index 2d193d2e0bf..f64fc19e127 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/PlaySoundActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/PlaySoundActionTest.java @@ -38,7 +38,6 @@ import org.catrobat.catroid.io.SoundManager; import org.catrobat.catroid.io.XstreamSerializer; import org.catrobat.catroid.test.R; -import org.catrobat.catroid.test.utils.Reflection; import org.catrobat.catroid.test.utils.TestUtils; import org.junit.After; import org.junit.Before; @@ -58,8 +57,6 @@ @RunWith(AndroidJUnit4.class) public class PlaySoundActionTest { private final SoundManager soundManager = SoundManager.getInstance(); - private final int soundFileId = R.raw.testsound; - private final String projectName = TestUtils.DEFAULT_TEST_PROJECT_NAME; private File soundFile; @Before @@ -76,7 +73,7 @@ public void tearDown() throws Exception { } @Test - public void testPlaySound() throws Exception { + public void testPlaySound() { Sprite testSprite = new SingleSprite("testSprite"); SoundInfo soundInfo = createSoundInfo(soundFile); testSprite.getSoundList().add(soundInfo); @@ -85,13 +82,13 @@ public void testPlaySound() throws Exception { Action action = factory.createPlaySoundAction(testSprite, soundInfo); action.act(1.0f); - List mediaPlayers = getMediaPlayers(); + List mediaPlayers = soundManager.getMediaPlayers(); assertEquals(1, mediaPlayers.size()); assertTrue(mediaPlayers.get(0).isPlaying()); } @Test - public void testPlaySimultaneousSounds() throws Exception { + public void testPlaySimultaneousSounds() { Sprite testSprite = new SingleSprite("testSprite"); SoundInfo soundInfo = createSoundInfo(soundFile); testSprite.getSoundList().add(soundInfo); @@ -103,17 +100,19 @@ public void testPlaySimultaneousSounds() throws Exception { playSoundAction1.act(1.0f); playSoundAction2.act(1.0f); - List mediaPlayers = getMediaPlayers(); + List mediaPlayers = soundManager.getMediaPlayers(); assertEquals(2, mediaPlayers.size()); assertTrue(mediaPlayers.get(0).isPlaying()); assertTrue(mediaPlayers.get(1).isPlaying()); } private void createTestProject() throws IOException { + String projectName = "testProject"; Project project = new Project(InstrumentationRegistry.getTargetContext(), projectName); XstreamSerializer.getInstance().saveProject(project); ProjectManager.getInstance().setProject(project); + int soundFileId = R.raw.testsound; soundFile = ResourceImporter.createSoundFileFromResourcesInDirectory( InstrumentationRegistry.getContext().getResources(), soundFileId, @@ -126,9 +125,4 @@ private SoundInfo createSoundInfo(File soundFile) { soundInfo.setFile(soundFile); return soundInfo; } - - @SuppressWarnings("unchecked") - private List getMediaPlayers() throws Exception { - return (List) Reflection.getPrivateField(soundManager, "mediaPlayers"); - } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetLookActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetLookActionTest.java index 748c4fc2cae..1896e55d6a7 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetLookActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetLookActionTest.java @@ -54,12 +54,10 @@ @RunWith(AndroidJUnit4.class) public class SetLookActionTest { - protected String projectName = "testProject"; - protected File testImage; - protected Project project; - protected Sprite sprite; - protected LookData firstLookData; - protected LookData secondLookData; + private String projectName = "testProject"; + private Sprite sprite; + private LookData firstLookData; + private LookData secondLookData; @Before public void setUp() throws Exception { @@ -69,11 +67,11 @@ public void setUp() throws Exception { StorageOperations.deleteDir(projectDir); } - project = new Project(InstrumentationRegistry.getTargetContext(), projectName); + Project project = new Project(InstrumentationRegistry.getTargetContext(), projectName); XstreamSerializer.getInstance().saveProject(project); ProjectManager.getInstance().setProject(project); - testImage = ResourceImporter.createImageFileFromResourcesInDirectory( + File testImage = ResourceImporter.createImageFileFromResourcesInDirectory( InstrumentationRegistry.getContext().getResources(), R.raw.icon, new File(project.getDefaultScene().getDirectory(), IMAGE_DIRECTORY_NAME), @@ -82,7 +80,7 @@ public void setUp() throws Exception { BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); bitmapOptions.inJustDecodeBounds = true; - BitmapFactory.decodeFile(this.testImage.getAbsolutePath(), bitmapOptions); + BitmapFactory.decodeFile(testImage.getAbsolutePath(), bitmapOptions); ScreenValues.SCREEN_HEIGHT = 200; ScreenValues.SCREEN_WIDTH = 200; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/StopAllSoundsActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/StopAllSoundsActionTest.java index fe964bbbb54..78c6952bd2e 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/StopAllSoundsActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/StopAllSoundsActionTest.java @@ -38,7 +38,6 @@ import org.catrobat.catroid.io.SoundManager; import org.catrobat.catroid.io.XstreamSerializer; import org.catrobat.catroid.test.R; -import org.catrobat.catroid.test.utils.Reflection; import org.catrobat.catroid.test.utils.TestUtils; import org.junit.After; import org.junit.Before; @@ -59,7 +58,6 @@ @RunWith(AndroidJUnit4.class) public class StopAllSoundsActionTest { private final SoundManager soundManager = SoundManager.getInstance(); - private final int soundFileId = R.raw.testsound; private File soundFile; @Before @@ -81,7 +79,7 @@ public void testStopOneSound() throws Exception { SoundInfo soundInfo = createSoundInfo(soundFile); testSprite.getSoundList().add(soundInfo); - List mediaPlayers = getMediaPlayers(); + List mediaPlayers = soundManager.getMediaPlayers(); ActionFactory factory = testSprite.getActionFactory(); Action playSoundAction = factory.createPlaySoundAction(testSprite, soundInfo); @@ -110,7 +108,7 @@ public void testStopSimultaneousPlayingSounds() throws Exception { playSoundAction1.act(1.0f); playSoundAction2.act(1.0f); - List mediaPlayers = getMediaPlayers(); + List mediaPlayers = soundManager.getMediaPlayers(); assertEquals(2, mediaPlayers.size()); assertTrue(mediaPlayers.get(0).isPlaying()); assertTrue(mediaPlayers.get(1).isPlaying()); @@ -129,6 +127,7 @@ private void createTestProject() throws IOException { XstreamSerializer.getInstance().saveProject(project); ProjectManager.getInstance().setProject(project); + int soundFileId = R.raw.testsound; soundFile = ResourceImporter.createSoundFileFromResourcesInDirectory( InstrumentationRegistry.getContext().getResources(), soundFileId, @@ -141,9 +140,4 @@ private SoundInfo createSoundInfo(File soundFile) { soundInfo.setFile(soundFile); return soundInfo; } - - @SuppressWarnings("unchecked") - private List getMediaPlayers() throws Exception { - return (List) Reflection.getPrivateField(soundManager, "mediaPlayers"); - } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/bricks/BrickCloneTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/bricks/BrickCloneTest.java index 487ca3ddef6..7833c5248f4 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/bricks/BrickCloneTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/bricks/BrickCloneTest.java @@ -70,7 +70,6 @@ import org.catrobat.catroid.formulaeditor.FormulaElement.ElementType; import org.catrobat.catroid.formulaeditor.InterpretationException; import org.catrobat.catroid.formulaeditor.UserVariable; -import org.catrobat.catroid.test.utils.Reflection; import org.catrobat.catroid.test.utils.TestUtils; import org.catrobat.catroid.ui.recyclerview.controller.SpriteController; import org.junit.Before; @@ -230,8 +229,7 @@ private void checkVariableReferences(Class typeOfBrick) thr @SuppressWarnings("unchecked") T clonedBrick = (T) clonedSprite.getScript(0).getBrick(0); UserVariable clonedVariable = project.getDefaultScene().getDataContainer().getUserVariable(clonedSprite, VARIABLE_NAME); - UserVariable clonedVariableFromBrick = (UserVariable) Reflection - .getPrivateField(UserVariableBrick.class, clonedBrick, "userVariable"); + UserVariable clonedVariableFromBrick = ((UserVariableBrick) clonedBrick).getUserVariable(); assertNotNull(clonedVariable); assertNotSame(spriteVariable, clonedVariable); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/project/ProjectTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/project/ProjectTest.java index 2e66af329c2..a51d3b44701 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/project/ProjectTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/project/ProjectTest.java @@ -33,7 +33,6 @@ import org.catrobat.catroid.content.SingleSprite; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.XmlHeader; -import org.catrobat.catroid.test.utils.Reflection; import org.junit.Test; import org.junit.runner.RunWith; @@ -56,7 +55,7 @@ public void testVersionName() throws Exception { XmlHeader projectXmlHeader = project.getXmlHeader(); - assertEquals(packageInfo.versionName, (String) Reflection.getPrivateField(projectXmlHeader, "applicationVersion")); + assertEquals(packageInfo.versionName, projectXmlHeader.getApplicationVersion()); } @Test @@ -103,31 +102,18 @@ public void testAddRemoveScene() { } @Test - public void testSetDeviceData() throws Exception { + public void testSetDeviceData() { Project project = new Project(); XmlHeader header = project.getXmlHeader(); - Reflection.setPrivateField(header, "catrobatLanguageVersion", OLD_LANGUAGE_VERSION); - Reflection.setPrivateField(header, "applicationName", OLD_APPLICATION_NAME); - Reflection.setPrivateField(header, "platform", OLD_PLATFORM); - float languageVersion = (Float) Reflection.getPrivateField(header, "catrobatLanguageVersion"); - assertEquals(OLD_LANGUAGE_VERSION, languageVersion); - - String applicationName = (String) Reflection.getPrivateField(header, "applicationName"); - assertEquals(OLD_APPLICATION_NAME, applicationName); - - String platform = (String) Reflection.getPrivateField(header, "platform"); - assertEquals(OLD_PLATFORM, platform); + header.setCatrobatLanguageVersion(OLD_LANGUAGE_VERSION); + header.setApplicationName(OLD_APPLICATION_NAME); + header.setPlatform(OLD_PLATFORM); project.setDeviceData(InstrumentationRegistry.getTargetContext()); - languageVersion = (Float) Reflection.getPrivateField(header, "catrobatLanguageVersion"); - assertEquals(Constants.CURRENT_CATROBAT_LANGUAGE_VERSION, languageVersion); - - applicationName = (String) Reflection.getPrivateField(header, "applicationName"); - assertEquals(InstrumentationRegistry.getTargetContext().getString(R.string.app_name), applicationName); - - platform = (String) Reflection.getPrivateField(header, "platform"); - assertEquals(Constants.PLATFORM_NAME, platform); + assertEquals(Constants.CURRENT_CATROBAT_LANGUAGE_VERSION, header.getCatrobatLanguageVersion()); + assertEquals(InstrumentationRegistry.getTargetContext().getString(R.string.app_name), header.getApplicationName()); + assertEquals(Constants.PLATFORM_NAME, header.getPlatform()); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/sprite/LookBreakDownCatroidAngleTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/sprite/LookBreakDownCatroidAngleTest.java new file mode 100644 index 00000000000..a8a86226361 --- /dev/null +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/sprite/LookBreakDownCatroidAngleTest.java @@ -0,0 +1,77 @@ +/* + * Catroid: An on-device visual programming system for Android devices + * Copyright (C) 2010-2018 The Catrobat Team + * () + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * An additional term exception under section 7 of the GNU Affero + * General Public License, version 3, is available at + * http://developer.catrobat.org/license_additional_term + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package org.catrobat.catroid.test.content.sprite; + +import android.support.annotation.IdRes; + +import org.catrobat.catroid.content.Look; +import org.catrobat.catroid.content.SingleSprite; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +import java.util.Arrays; + +import static junit.framework.Assert.assertEquals; + +@RunWith(Parameterized.class) +public class LookBreakDownCatroidAngleTest { + + @Parameterized.Parameters(name = "{0}") + public static Iterable data() { + return Arrays.asList(new Object[][] { + {0.0f, 0.0f, -0.0f}, + {45.0f, 45.0f, -45.0f}, + {90.0f, 90.0f, -90.0f}, + {135.0f, 135.0f, -135.0f}, + {180.0f, 180.0f, 180.0f}, + {225.0f, -135.0f, 135.0f}, + {270.0f, -90.0f, 90.0f}, + {315.0f, -45.0f, 45.0f}, + {360.0f, 0.0f, -0.0f} + }); + } + + @Parameterized.Parameter + public @IdRes float inputAngle; + + @Parameterized.Parameter(1) + public @IdRes float expectedAngle; + + @Parameterized.Parameter(2) + public @IdRes float expectedNegativeAngle; + + @Test + public void testBreakDownCatroidAngle() { + Look look = new Look(new SingleSprite("testsprite")); + assertEquals(expectedAngle, look.breakDownCatroidAngle(inputAngle)); + assertEquals(expectedAngle, look.breakDownCatroidAngle(inputAngle + 360.0f)); + assertEquals(expectedAngle, look.breakDownCatroidAngle(inputAngle + 720.0f)); + + float negativeInputAngle = inputAngle * (-1.0f); + assertEquals(expectedNegativeAngle, look.breakDownCatroidAngle(negativeInputAngle)); + assertEquals(expectedNegativeAngle, look.breakDownCatroidAngle(negativeInputAngle - 360.0f)); + assertEquals(expectedNegativeAngle, look.breakDownCatroidAngle(negativeInputAngle - 720.0f)); + } +} diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/sprite/LookCatroidAngleToStageAngleTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/sprite/LookCatroidAngleToStageAngleTest.java new file mode 100644 index 00000000000..3a19fc2f570 --- /dev/null +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/sprite/LookCatroidAngleToStageAngleTest.java @@ -0,0 +1,75 @@ +/* + * Catroid: An on-device visual programming system for Android devices + * Copyright (C) 2010-2018 The Catrobat Team + * () + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * An additional term exception under section 7 of the GNU Affero + * General Public License, version 3, is available at + * http://developer.catrobat.org/license_additional_term + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package org.catrobat.catroid.test.content.sprite; + +import android.support.annotation.IdRes; + +import org.catrobat.catroid.content.Look; +import org.catrobat.catroid.content.SingleSprite; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +import java.util.Arrays; + +import static junit.framework.Assert.assertEquals; + +@RunWith(Parameterized.class) +public class LookCatroidAngleToStageAngleTest { + + @Parameterized.Parameters(name = "{0}") + public static Iterable data() { + return Arrays.asList(new Object[][] { + {0.0f, 90.0f, 90.0f}, + {45.0f, 45.0f, 135.0f}, + {90.0f, 0.0f, 180.0f}, + {135.0f, -45.0f, 225.0f}, + {180.0f, -90.0f, -90.0f}, + {225.0f, 225.0f, -45.0f}, + {270.0f, 180.0f, 0.0f}, + {315.0f, 135.0f, 45.0f}, + {360.0f, 90.0f, 90.0f} + }); + } + + @Parameterized.Parameter + public @IdRes float inputAngle; + + @Parameterized.Parameter(1) + public @IdRes float expectedAngle; + + @Parameterized.Parameter(2) + public @IdRes float expectedNegativeAngle; + + @Test + public void testCatroidAngleToStageAngle() { + Look look = new Look(new SingleSprite("testsprite")); + assertEquals(expectedAngle, look.convertCatroidAngleToStageAngle(inputAngle)); + assertEquals(expectedAngle, look.convertCatroidAngleToStageAngle(inputAngle + 360.0f)); + + float negativeInputAngle = inputAngle * (-1.0f); + assertEquals(expectedNegativeAngle, look.convertCatroidAngleToStageAngle(negativeInputAngle)); + assertEquals(expectedNegativeAngle, look.convertCatroidAngleToStageAngle(negativeInputAngle - 360.0f)); + } +} diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/sprite/LookDirectionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/sprite/LookDirectionTest.java new file mode 100644 index 00000000000..04e0ab695c2 --- /dev/null +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/sprite/LookDirectionTest.java @@ -0,0 +1,72 @@ +/* + * Catroid: An on-device visual programming system for Android devices + * Copyright (C) 2010-2018 The Catrobat Team + * () + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * An additional term exception under section 7 of the GNU Affero + * General Public License, version 3, is available at + * http://developer.catrobat.org/license_additional_term + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package org.catrobat.catroid.test.content.sprite; + +import android.support.annotation.IdRes; + +import org.catrobat.catroid.content.Look; +import org.catrobat.catroid.content.SingleSprite; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +import java.util.Arrays; + +import static junit.framework.Assert.assertEquals; + +@RunWith(Parameterized.class) +public class LookDirectionTest { + + @Parameterized.Parameters(name = "{0}") + public static Iterable data() { + return Arrays.asList(new Object[][] { + {90f, 0f}, + {60f, 30f}, + {30f, 60f}, + {0f, 90f}, + {-30f, 120f}, + {-60f, 150f}, + {-90f, 180.0f}, + {-120f, 210f}, + {-150f, 240f}, + {180f, -90f}, + {150f, -60f}, + {120f, -30f} + }); + } + + @Parameterized.Parameter + public @IdRes float degreesInUserInterfaceDimensionUnit; + + @Parameterized.Parameter(1) + public @IdRes float degrees; + + @Test + public void testDirection() { + Look look = new Look(new SingleSprite("testsprite")); + look.setDirectionInUserInterfaceDimensionUnit(degreesInUserInterfaceDimensionUnit); + assertEquals(degreesInUserInterfaceDimensionUnit, look.getDirectionInUserInterfaceDimensionUnit()); + assertEquals(degrees, look.getRotation()); + } +} diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/sprite/LookStageAngleToCatroidAngleTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/sprite/LookStageAngleToCatroidAngleTest.java new file mode 100644 index 00000000000..1a95bb0644c --- /dev/null +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/sprite/LookStageAngleToCatroidAngleTest.java @@ -0,0 +1,75 @@ +/* + * Catroid: An on-device visual programming system for Android devices + * Copyright (C) 2010-2018 The Catrobat Team + * () + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * An additional term exception under section 7 of the GNU Affero + * General Public License, version 3, is available at + * http://developer.catrobat.org/license_additional_term + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package org.catrobat.catroid.test.content.sprite; + +import android.support.annotation.IdRes; + +import org.catrobat.catroid.content.Look; +import org.catrobat.catroid.content.SingleSprite; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +import java.util.Arrays; + +import static junit.framework.Assert.assertEquals; + +@RunWith(Parameterized.class) +public class LookStageAngleToCatroidAngleTest { + + @Parameterized.Parameters(name = "{0}") + public static Iterable data() { + return Arrays.asList(new Object[][] { + {0.0f, 90.0f, 90.0f}, + {45.0f, 45.0f, 135.0f}, + {90.0f, 0.0f, 180.0f}, + {135.0f, -45.0f, -135.0f}, + {180.0f, -90.0f, -90.0f}, + {225.0f, -135.0f, -45.0f}, + {270.0f, 180.0f, 0.0f}, + {315.0f, 135.0f, 45.0f}, + {360.0f, 90.0f, 90.0f} + }); + } + + @Parameterized.Parameter + public @IdRes float inputAngle; + + @Parameterized.Parameter(1) + public @IdRes float expectedAngle; + + @Parameterized.Parameter(2) + public @IdRes float expectedNegativeAngle; + + @Test + public void testStageAngleToCatroidAngle() { + Look look = new Look(new SingleSprite("testsprite")); + assertEquals(expectedAngle, look.convertStageAngleToCatroidAngle(inputAngle)); + assertEquals(expectedAngle, look.convertStageAngleToCatroidAngle(inputAngle + 360.0f) + 0.0f); + + float negativeInputAngle = inputAngle * (-1.0f); + assertEquals(expectedNegativeAngle, look.convertStageAngleToCatroidAngle(negativeInputAngle)); + assertEquals(expectedNegativeAngle, look.convertStageAngleToCatroidAngle(negativeInputAngle - 360.0f)); + } +} diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/sprite/LookTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/sprite/LookTest.java index c7382b88aa0..92afd0af9f3 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/sprite/LookTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/sprite/LookTest.java @@ -32,8 +32,6 @@ import org.catrobat.catroid.content.Look; import org.catrobat.catroid.content.SingleSprite; import org.catrobat.catroid.content.Sprite; -import org.catrobat.catroid.test.utils.Reflection; -import org.catrobat.catroid.test.utils.Reflection.ParameterList; import org.catrobat.catroid.test.utils.TestUtils; import org.catrobat.catroid.utils.TouchUtil; import org.junit.Before; @@ -118,154 +116,8 @@ private void checkY(float y) { assertEquals(y - height / 2, look.getY()); } - private float convertNegativeZeroToPosigiveZero(float value) { - if (value == 0.0f) { - return 0.0f; - } - return value; - } - - @Test - public void testBreakDownCatroidAngle() throws Exception { - Look look = new Look(new SingleSprite("testsprite")); - - float[] posigiveInputAngles = {0.0f, 45.0f, 90.0f, 135.0f, 180.0f, 225.0f, 270.0f, 315.0f, 360.0f}; - float[] posigiveHighInputAngles = {360.0f, 405.0f, 450.0f, 495.0f, 540.0f, 585.0f, 630.0f, 675.0f, 720.0f}; - float[] posigiveHigherInputAngles = {720.0f, 765.0f, 810.0f, 855.0f, 900.0f, 945.0f, 990.0f, 1035.0f, 1080.0f}; - - float[] expectedPositiveAngles = {0.0f, 45.0f, 90.0f, 135.0f, 180.0f, -135.0f, -90.0f, -45.0f, 0.0f}; - - for (int index = 0; index < posigiveInputAngles.length; index++) { - ParameterList params = new ParameterList(posigiveInputAngles[index]); - float catroidAngle = (Float) Reflection.invokeMethod(look, "breakDownCatroidAngle", params); - assertEquals(expectedPositiveAngles[index], convertNegativeZeroToPosigiveZero(catroidAngle)); - } - for (int index = 0; index < posigiveHighInputAngles.length; index++) { - ParameterList params = new ParameterList(posigiveHighInputAngles[index]); - float catroidAngle = (Float) Reflection.invokeMethod(look, "breakDownCatroidAngle", params); - assertEquals(expectedPositiveAngles[index], convertNegativeZeroToPosigiveZero(catroidAngle)); - } - for (int index = 0; index < posigiveHigherInputAngles.length; index++) { - ParameterList params = new ParameterList(posigiveHigherInputAngles[index]); - float catroidAngle = (Float) Reflection.invokeMethod(look, "breakDownCatroidAngle", params); - assertEquals(expectedPositiveAngles[index], convertNegativeZeroToPosigiveZero(catroidAngle)); - } - - float[] negativeInputAngles = {-0.0f, -45.0f, -90.0f, -135.0f, -180.0f, -225.0f, -270.0f, -315.0f, -360.0f}; - float[] negativeHighInputAngles = {-360.0f, -405.0f, -450.0f, -495.0f, -540.0f, -585.0f, -630.0f, -675.0f, - -720.0f}; - float[] negativeHigherInputAngles = {-720.0f, -765.0f, -810.0f, -855.0f, -900.0f, -945.0f, -990.0f, -1035.0f, - -1080.0f}; - - float[] expectedNegativeCatroidAngles = {0.0f, -45.0f, -90.0f, -135.0f, 180.0f, 135.0f, 90.0f, 45.0f, 0.0f}; - - for (int index = 0; index < negativeInputAngles.length; index++) { - ParameterList params = new ParameterList(negativeInputAngles[index]); - float catroidAngle = (Float) Reflection.invokeMethod(look, "breakDownCatroidAngle", params); - assertEquals(expectedNegativeCatroidAngles[index], convertNegativeZeroToPosigiveZero(catroidAngle), 0.1); - } - - for (int index = 0; index < negativeHighInputAngles.length; index++) { - ParameterList params = new ParameterList(negativeHighInputAngles[index]); - float catroidAngle = (Float) Reflection.invokeMethod(look, "breakDownCatroidAngle", params); - assertEquals(expectedNegativeCatroidAngles[index], convertNegativeZeroToPosigiveZero(catroidAngle)); - } - - for (int index = 0; index < negativeHigherInputAngles.length; index++) { - ParameterList params = new ParameterList(negativeHigherInputAngles[index]); - float catroidAngle = (Float) Reflection.invokeMethod(look, "breakDownCatroidAngle", params); - assertEquals(expectedNegativeCatroidAngles[index], convertNegativeZeroToPosigiveZero(catroidAngle)); - } - } - - @Test - public void testCatroidAngleToStageAngle() throws Exception { - float[] positiveAngles = {0.0f, 45.0f, 90.0f, 135.0f, 180.0f, 225.0f, 270.0f, 315.0f, 360.0f}; - float[] positiveHighAngles = {360.0f, 405.0f, 450.0f, 495.0f, 540.0f, 585.0f, 630.0f, 675.0f, 720.0f}; - - float[] expectedPositiveStageAngles = {90.0f, 45.0f, 0.0f, -45.0f, -90.0f, 225.0f, 180.0f, 135.0f, 90.0f}; - - for (int index = 0; index < positiveAngles.length; index++) { - ParameterList params = new ParameterList(positiveAngles[index]); - float stageAngle = (Float) Reflection.invokeMethod(look, "convertCatroidAngleToStageAngle", params); - assertEquals(expectedPositiveStageAngles[index], convertNegativeZeroToPosigiveZero(stageAngle)); - } - - for (int index = 0; index < positiveHighAngles.length; index++) { - ParameterList params = new ParameterList(positiveHighAngles[index]); - float stageAngle = (Float) Reflection.invokeMethod(look, "convertCatroidAngleToStageAngle", params); - assertEquals(expectedPositiveStageAngles[index], convertNegativeZeroToPosigiveZero(stageAngle)); - } - - float[] negativeCatroidAngles = {-0.0f, -45.0f, -90.0f, -135.0f, -180.0f, -225.0f, -270.0f, -315.0f, -360.0f}; - float[] negativeHighCatroidAngles = {-360.0f, -405.0f, -450.0f, -495.0f, -540.0f, -585.0f, -630.0f, -675.0f, - -720.0f}; - - float[] expectedNegativeStageAngles = {90.0f, 135.0f, 180.0f, 225.0f, -90.0f, -45.0f, 0.0f, 45.0f, 90.0f}; - - for (int index = 0; index < negativeCatroidAngles.length; index++) { - ParameterList params = new ParameterList(negativeCatroidAngles[index]); - float stageAngle = (Float) Reflection.invokeMethod(look, "convertCatroidAngleToStageAngle", params); - assertEquals(expectedNegativeStageAngles[index], convertNegativeZeroToPosigiveZero(stageAngle)); - } - - for (int index = 0; index < negativeHighCatroidAngles.length; index++) { - ParameterList params = new ParameterList(negativeHighCatroidAngles[index]); - float stageAngle = (Float) Reflection.invokeMethod(look, "convertCatroidAngleToStageAngle", params); - assertEquals(expectedNegativeStageAngles[index], convertNegativeZeroToPosigiveZero(stageAngle)); - } - } - - @Test - public void testStageAngleToCatroidAngle() throws Exception { - float[] positiveStageAngles = {0.0f, 45.0f, 90.0f, 135.0f, 180.0f, 225.0f, 270.0f, 315.0f, 360.0f}; - float[] positiveHighStagedAngles = {360.0f, 405.0f, 450.0f, 495.0f, 540.0f, 585.0f, 630.0f, 675.0f, - 720.0f}; - float[] expectedPositiveAngles = {90.0f, 45.0f, 0.0f, -45.0f, -90.0f, -135.0f, 180.0f, 135.0f, 90.0f}; - - for (int index = 0; index < positiveStageAngles.length; index++) { - ParameterList params = new ParameterList(positiveStageAngles[index]); - float stageAngle = (Float) Reflection.invokeMethod(look, "convertStageAngleToCatroidAngle", params); - assertEquals(expectedPositiveAngles[index], convertNegativeZeroToPosigiveZero(stageAngle)); - } - - for (int index = 0; index < positiveHighStagedAngles.length; index++) { - ParameterList params = new ParameterList(positiveHighStagedAngles[index]); - float stageAngle = (Float) Reflection.invokeMethod(look, "convertStageAngleToCatroidAngle", params); - assertEquals(expectedPositiveAngles[index], convertNegativeZeroToPosigiveZero(stageAngle)); - } - - float[] negativeStageAngles = {-0.0f, -45.0f, -90.0f, -135.0f, -180.0f, -225.0f, -270.0f, -315.0f, -360.0f}; - float[] negativeHighStageAngles = {-360.0f, -405.0f, -450.0f, -495.0f, -540.0f, -585.0f, -630.0f, -675.0f, - -720.0f}; - float[] expectedNegativeCatroidAngles = {90.0f, 135.0f, 180.0f, -135.0f, -90.0f, -45.0f, 0.0f, 45.0f, 90.0f}; - - for (int index = 0; index < negativeStageAngles.length; index++) { - ParameterList params = new ParameterList(negativeStageAngles[index]); - float stageAngle = (Float) Reflection.invokeMethod(look, "convertStageAngleToCatroidAngle", params); - assertEquals(expectedNegativeCatroidAngles[index], convertNegativeZeroToPosigiveZero(stageAngle)); - } - - for (int index = 0; index < negativeHighStageAngles.length; index++) { - ParameterList params = new ParameterList(negativeHighStageAngles[index]); - float stageAngle = (Float) Reflection.invokeMethod(look, "convertStageAngleToCatroidAngle", params); - assertEquals(expectedNegativeCatroidAngles[index], convertNegativeZeroToPosigiveZero(stageAngle)); - } - } - @Test public void testDirection() { - float[] degreesInUserInterfaceDimensionUnit = {90f, 60f, 30f, 0f, -30f, -60f, -90f, -120f, -150f, 180f, 150f, - 120f}; - float[] degrees = {0f, 30f, 60f, 90f, 120f, 150f, 180f, 210f, 240f, -90f, -60f, -30f}; - - assertEquals(degrees.length, degreesInUserInterfaceDimensionUnit.length); - for (int index = 0; index < degrees.length; index++) { - look.setDirectionInUserInterfaceDimensionUnit(degreesInUserInterfaceDimensionUnit[index]); - assertEquals(degreesInUserInterfaceDimensionUnit[index], look.getDirectionInUserInterfaceDimensionUnit()); - assertEquals(degrees[index], look.getRotation()); - } - look.setDirectionInUserInterfaceDimensionUnit(90f); look.changeDirectionInUserInterfaceDimensionUnit(10f); @@ -297,39 +149,39 @@ public void testSize() { } @Test - public void testTransparency() throws Exception { + public void testTransparency() { float transparency = 20f; look.setTransparencyInUserInterfaceDimensionUnit(transparency); assertEquals(transparency, look.getTransparencyInUserInterfaceDimensionUnit(), 1e-5); - assertEquals(0.8f, Reflection.getPrivateField(look, "alpha")); + assertEquals(0.8f, look.getAlpha()); look.changeTransparencyInUserInterfaceDimensionUnit(transparency); assertEquals(2 * transparency, look.getTransparencyInUserInterfaceDimensionUnit(), 1e-5); - assertEquals(0.6f, Reflection.getPrivateField(look, "alpha")); + assertEquals(0.6f, look.getAlpha()); look.setTransparencyInUserInterfaceDimensionUnit(-10f); assertEquals(0f, look.getTransparencyInUserInterfaceDimensionUnit()); - assertEquals(1f, Reflection.getPrivateField(look, "alpha")); + assertEquals(1f, look.getAlpha()); look.setTransparencyInUserInterfaceDimensionUnit(200f); assertEquals(100f, look.getTransparencyInUserInterfaceDimensionUnit()); - assertEquals(0f, Reflection.getPrivateField(look, "alpha")); + assertEquals(0f, look.getAlpha()); } @Test - public void testBrightness() throws Exception { + public void testBrightness() { float brightness = 42f; look.setBrightnessInUserInterfaceDimensionUnit(brightness); assertEquals(brightness, look.getBrightnessInUserInterfaceDimensionUnit()); - assertEquals(0.42f, Reflection.getPrivateField(look, "brightness")); + assertEquals(0.42f, look.getBrightness()); look.changeBrightnessInUserInterfaceDimensionUnit(brightness); assertEquals(2 * brightness, look.getBrightnessInUserInterfaceDimensionUnit()); - assertEquals(0.84f, Reflection.getPrivateField(look, "brightness")); + assertEquals(0.84f, look.getBrightness()); look.setBrightnessInUserInterfaceDimensionUnit(-10); assertEquals(0f, look.getBrightnessInUserInterfaceDimensionUnit()); - assertEquals(0f, Reflection.getPrivateField(look, "brightness")); + assertEquals(0f, look.getBrightness()); } @Test diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/drone/DroneBrickTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/drone/DroneBrickTest.java index 58b492bc3cf..3a1b51aa0d2 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/drone/DroneBrickTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/drone/DroneBrickTest.java @@ -23,7 +23,6 @@ package org.catrobat.catroid.test.drone; import android.support.test.runner.AndroidJUnit4; -import android.util.Log; import org.catrobat.catroid.content.bricks.BrickBaseType; import org.catrobat.catroid.drone.ardrone.DroneBrickFactory; @@ -36,7 +35,6 @@ @RunWith(AndroidJUnit4.class) public class DroneBrickTest { - private static final String TAG = DroneBrickTest.class.getSimpleName(); private static final int DRONE_RESOURCE = 0x20; @Test @@ -44,7 +42,6 @@ public void testAllBrickResources() { for (DroneBricks brick : DroneBrickFactory.DroneBricks.values()) { BrickBaseType brickFromFactory = DroneBrickFactory.getInstanceOfDroneBrick(brick, 0, 0); String brickName = brickFromFactory.getClass().getSimpleName(); - Log.d(TAG, "brickName: " + brickName); assertEquals("Resource is wrong for brick: " + brickName, DRONE_RESOURCE, brickFromFactory.getRequiredResources()); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/drone/DroneBricksActionTests.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/drone/DroneBricksActionTests.java index b49038a9552..0536e77e0b3 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/drone/DroneBricksActionTests.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/drone/DroneBricksActionTests.java @@ -22,8 +22,7 @@ */ package org.catrobat.catroid.test.drone; -import android.support.test.InstrumentationRegistry; -import android.test.InstrumentationTestCase; +import android.support.test.runner.AndroidJUnit4; import com.badlogic.gdx.scenes.scene2d.Action; import com.badlogic.gdx.scenes.scene2d.actions.TemporalAction; @@ -31,6 +30,7 @@ import com.parrot.freeflight.drone.DroneConfig; import com.parrot.freeflight.service.DroneControlService; +import org.catrobat.catroid.content.ActionFactory; import org.catrobat.catroid.content.SingleSprite; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.StartScript; @@ -49,18 +49,20 @@ import org.catrobat.catroid.drone.ardrone.DroneServiceWrapper; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.Mockito; import static org.mockito.Mockito.when; -public class DroneBricksActionTests extends InstrumentationTestCase { +@RunWith(AndroidJUnit4.class) +public class DroneBricksActionTests { - public DroneControlService droneControlService; - public DroneConfig droneConfig; + private DroneControlService droneControlService; + private DroneConfig droneConfig; public TemporalAction action; - Sprite sprite; - EventThread sequenceAction; + private Sprite sprite; + private EventThread sequenceAction; private int powerInPercent; private int durationInSeconds; @@ -71,17 +73,13 @@ public DroneBricksActionTests() { @Before public void setUp() throws Exception { - //Workaround for Android 4.4 Devices - //https://code.google.com/p/dexmaker/issues/detail?id=2 - System.setProperty("dexmaker.dexcache", InstrumentationRegistry.getTargetContext().getCacheDir().getPath()); - droneControlService = Mockito.mock(DroneControlService.class); droneConfig = Mockito.mock(DroneConfig.class); when(droneControlService.getDroneConfig()).thenReturn(droneConfig); DroneServiceWrapper.getInstance().setDroneService(droneControlService); - sprite = new SingleSprite(getName()); - sequenceAction = (EventThread) sprite.getActionFactory().createEventThread(new StartScript()); + sprite = new SingleSprite("droneTestSprite"); + sequenceAction = (EventThread) ActionFactory.createEventThread(new StartScript()); } private void addActionToSequenceAndAct(BrickBaseType brick) { @@ -184,27 +182,6 @@ public void testTurnRight() { Mockito.verify(droneControlService, Mockito.atLeast(1)).turnRight(0); } -// public void testConfigBrickSpinnerPosition0() { -// DroneSetConfigBrick configBrick = new DroneSetConfigBrick(); -// configBrick.setSpinnerPosition(0); -// addActionToSequenceAndAct(configBrick); -// Mockito.verify(droneControlService, Mockito.atLeast(1)).resetConfigToDefaults(); -// } -// -// public void testConfigBrickSpinnerPosition1() { -// DroneSetConfigBrick configBrick = new DroneSetConfigBrick(); -// configBrick.setSpinnerPosition(1); -// addActionToSequenceAndAct(configBrick); -// Mockito.verify(droneConfig, Mockito.atLeast(1)).setOutdoorFlight(false); -// } -// -// public void testConfigBrickSpinnerPosition2() { -// DroneSetConfigBrick configBrick = new DroneSetConfigBrick(); -// configBrick.setSpinnerPosition(2); -// addActionToSequenceAndAct(configBrick); -// Mockito.verify(droneConfig, Mockito.atLeast(1)).setOutdoorFlight(true); -// } - @Test public void testSwitch() { DroneSwitchCameraBrick switchBrick = new DroneSwitchCameraBrick(); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/drone/DroneDemoTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/drone/DroneDemoTest.java index 85a5a676309..223ceab58b1 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/drone/DroneDemoTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/drone/DroneDemoTest.java @@ -22,12 +22,10 @@ */ package org.catrobat.catroid.test.drone; -import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; import com.parrot.freeflight.drone.DroneProxy; -import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; @@ -35,19 +33,11 @@ @RunWith(AndroidJUnit4.class) public class DroneDemoTest { - @Before - public void setUp() throws Exception { - //Workaround for Android 4.4 Devices - //https://code.google.com/p/dexmaker/issues/detail?id=2 - System.setProperty("dexmaker.dexcache", InstrumentationRegistry.getTargetContext().getCacheDir().getPath()); - } - @Test public void testDemo() { DroneProxy droneMock = Mockito.mock(DroneProxy.class); droneMock.doFlip(); - // was the method called once? Mockito.verify(droneMock, Mockito.atLeast(1)).doFlip(); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/FaceDetectorTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/FaceDetectorTest.java index 3440d1763da..c1f89e98fff 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/FaceDetectorTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/FaceDetectorTest.java @@ -52,44 +52,38 @@ public class FaceDetectorTest { @Test public void testStatusListenerCallback() { - TestFaceDetector detector = new TestFaceDetector(); + FaceDetector detector = new FaceDetector() { + @Override + public boolean startFaceDetection() { + return true; + } + + @Override + public void stopFaceDetection() { + } + }; SensorCustomEventListener onFaceDetectionStatusListener = Mockito.mock(SensorCustomEventListener.class); detector.addOnFaceDetectionStatusListener(onFaceDetectionStatusListener); verifyNoMoreInteractions(onFaceDetectionStatusListener); - detector.sendFaceDetected(false); + detector.callOnFaceDetected(false); verifyNoMoreInteractions(onFaceDetectionStatusListener); - detector.sendFaceDetected(true); + detector.callOnFaceDetected(true); verify(onFaceDetectionStatusListener).onCustomSensorChanged(captor.capture()); assertEquals(1.0f, captor.getValue().values[0]); verifyNoMoreInteractions(onFaceDetectionStatusListener); - detector.sendFaceDetected(true); + detector.callOnFaceDetected(true); verify(onFaceDetectionStatusListener).onCustomSensorChanged(captor.capture()); assertEquals(1.0f, captor.getValue().values[0]); verifyNoMoreInteractions(onFaceDetectionStatusListener); - detector.sendFaceDetected(false); + detector.callOnFaceDetected(false); verify(onFaceDetectionStatusListener, times(2)).onCustomSensorChanged(captor.capture()); assertEquals(0.0f, captor.getValue().values[0]); verifyNoMoreInteractions(onFaceDetectionStatusListener); } - - public class TestFaceDetector extends FaceDetector { - @Override - public boolean startFaceDetection() { - return true; - } - - @Override - public void stopFaceDetection() { - } - - void sendFaceDetected(boolean detected) { - this.onFaceDetected(detected); - } - } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/IcsFaceDetectorTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/IcsFaceDetectorTest.java index 36050d20d5d..2d37ce1e793 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/IcsFaceDetectorTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/IcsFaceDetectorTest.java @@ -31,17 +31,22 @@ import org.catrobat.catroid.facedetection.IcsFaceDetector; import org.catrobat.catroid.formulaeditor.SensorCustomEvent; import org.catrobat.catroid.formulaeditor.SensorCustomEventListener; -import org.catrobat.catroid.formulaeditor.Sensors; import org.catrobat.catroid.uiespresso.annotations.Device; import org.junit.After; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; +import java.util.List; import java.util.Random; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; import static org.hamcrest.Matchers.allOf; import static org.hamcrest.Matchers.is; @@ -49,16 +54,19 @@ import static org.hamcrest.number.OrderingComparison.greaterThanOrEqualTo; import static org.hamcrest.number.OrderingComparison.lessThanOrEqualTo; import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.verify; +import static org.mockito.internal.verification.VerificationModeFactory.times; @RunWith(AndroidJUnit4.class) public class IcsFaceDetectorTest { - private static final int FACE_RECT_SIZE = 2000; // see reference of Camera.Face.rect (1000 - -1000 = 2000) + @Rule + public MockitoRule rule = MockitoJUnit.rule(); + + @Captor + private ArgumentCaptor captor; - private static final int COUNTER_INDEX = 0; - private static final int SIZE_INDEX = 1; - private static final int X_POSITION_INDEX = 2; - private static final int Y_POSITION_INDEX = 3; + private static final int FACE_RECT_SIZE = 2000; // see reference of Camera.Face.rect (1000 - -1000 = 2000) private static final int FACE_LEFT = -20; private static final int FACE_RIGHT = 200; @@ -111,32 +119,8 @@ public void onCustomSensorChanged(SensorCustomEvent event) { @Device @Test public void testOnFaceDetectedListener() { - final int[] detectedFaces = new int[4]; - SensorCustomEventListener detectionListener = new SensorCustomEventListener() { - - public void onCustomSensorChanged(SensorCustomEvent event) { - detectedFaces[COUNTER_INDEX]++; - int icsValue = (int) event.values[0]; - float intFloatDifference = event.values[0] - icsValue; - assertEquals(intFloatDifference, 0f); - switch (event.sensor) { - case FACE_X_POSITION: - detectedFaces[X_POSITION_INDEX] = icsValue; - break; - case FACE_Y_POSITION: - detectedFaces[Y_POSITION_INDEX] = icsValue; - break; - case FACE_SIZE: - detectedFaces[SIZE_INDEX] = icsValue; - break; - default: - fail("Unexpected Sensor on Ics Face Detection event. Expected face size or position." - + event.sensor); - } - } - }; - detector.addOnFaceDetectedListener(detectionListener); - assertEquals(0, detectedFaces[COUNTER_INDEX]); + SensorCustomEventListener mockedListener = Mockito.mock(SensorCustomEventListener.class); + detector.addOnFaceDetectedListener(mockedListener); Rect faceBounds = new Rect(FACE_LEFT, FACE_TOP, FACE_RIGHT, FACE_BOTTOM); Face[] faces = new Face[2]; @@ -148,40 +132,33 @@ public void onCustomSensorChanged(SensorCustomEvent event) { faces[1].score = 80; detector.onFaceDetection(faces, null); - assertEquals(3, detectedFaces[COUNTER_INDEX]); + verify(mockedListener, times(3)).onCustomSensorChanged(captor.capture()); + List capturedEvents = captor.getAllValues(); - assertThat(LOW_SCORE_FACE_WIDTH * 100 * 2 / FACE_RECT_SIZE, is(not(detectedFaces[SIZE_INDEX]))); + assertThat(LOW_SCORE_FACE_WIDTH * 100 * 2 / FACE_RECT_SIZE, is(not((int) capturedEvents.get(2).values[0]))); - int expectedSize = (FACE_RIGHT - FACE_LEFT) * 100 * 2 / FACE_RECT_SIZE; - assertEquals(expectedSize, detectedFaces[SIZE_INDEX]); + float expectedSize = (FACE_RIGHT - FACE_LEFT) * 100 * 2 / FACE_RECT_SIZE; + assertEquals(expectedSize, capturedEvents.get(2).values[0]); - int expectedXPosition = Math.abs((FACE_TOP + (FACE_BOTTOM - FACE_TOP) / 2) * ScreenValues.SCREEN_WIDTH + float expectedXPosition = Math.abs((FACE_TOP + (FACE_BOTTOM - FACE_TOP) / 2) * ScreenValues.SCREEN_WIDTH / FACE_RECT_SIZE); - assertEquals(expectedXPosition, Math.abs(detectedFaces[X_POSITION_INDEX])); + assertEquals(expectedXPosition, Math.abs(capturedEvents.get(0).values[0])); - int expectedYPosition = Math.abs((FACE_LEFT + (FACE_RIGHT - FACE_LEFT) / 2) * ScreenValues.SCREEN_HEIGHT + float expectedYPosition = Math.abs((FACE_LEFT + (FACE_RIGHT - FACE_LEFT) / 2) * ScreenValues.SCREEN_HEIGHT / FACE_RECT_SIZE); - assertEquals(expectedYPosition, Math.abs(detectedFaces[Y_POSITION_INDEX])); + assertEquals(expectedYPosition, Math.abs(capturedEvents.get(1).values[0])); detector.onFaceDetection(faces, null); + verify(mockedListener, times(6)).onCustomSensorChanged(captor.capture()); - assertEquals(6, detectedFaces[COUNTER_INDEX]); - - detector.removeOnFaceDetectedListener(detectionListener); + detector.removeOnFaceDetectedListener(mockedListener); } @Device @Test public void testFaceSizeBounds() { - final float[] faceSize = new float[1]; - SensorCustomEventListener detectionListener = new SensorCustomEventListener() { - public void onCustomSensorChanged(SensorCustomEvent event) { - if (event.sensor == Sensors.FACE_SIZE) { - faceSize[0] = event.values[0]; - } - } - }; - detector.addOnFaceDetectedListener(detectionListener); + SensorCustomEventListener mockedListener = Mockito.mock(SensorCustomEventListener.class); + detector.addOnFaceDetectedListener(mockedListener); Rect faceBounds = new Rect(FACE_LEFT, FACE_TOP, FACE_RIGHT, FACE_BOTTOM); Face[] faces = new Face[1]; @@ -189,7 +166,10 @@ public void onCustomSensorChanged(SensorCustomEvent event) { faces[0].rect = faceBounds; detector.onFaceDetection(faces, null); - assertThat(faceSize[0], allOf(greaterThanOrEqualTo(0f), lessThanOrEqualTo(100f))); + verify(mockedListener, times(3)).onCustomSensorChanged(captor.capture()); + List capturedEvents = captor.getAllValues(); + + assertThat(capturedEvents.get(1).values[0], allOf(greaterThanOrEqualTo(0f), lessThanOrEqualTo(100f))); Random random = new Random(); int left = random.nextInt(FACE_RECT_SIZE - 1); @@ -200,9 +180,13 @@ public void onCustomSensorChanged(SensorCustomEvent event) { - FACE_RECT_SIZE / 2); faces[0].rect = faceBounds; + detector.onFaceDetection(faces, null); - assertThat(faceSize[0], allOf(greaterThanOrEqualTo(0f), lessThanOrEqualTo(100f))); + verify(mockedListener, times(6)).onCustomSensorChanged(captor.capture()); + capturedEvents = captor.getAllValues(); + + assertThat(capturedEvents.get(1).values[0], allOf(greaterThanOrEqualTo(0f), lessThanOrEqualTo(100f))); - detector.removeOnFaceDetectedListener(detectionListener); + detector.removeOnFaceDetectedListener(mockedListener); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/SlowFaceDetectorCameraTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/SlowFaceDetectorCameraTest.java index 0b896bbea6e..369a3b8df12 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/SlowFaceDetectorCameraTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/SlowFaceDetectorCameraTest.java @@ -25,7 +25,9 @@ import android.hardware.Camera; import android.support.test.runner.AndroidJUnit4; +import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.common.ScreenValues; +import org.catrobat.catroid.content.Project; import org.catrobat.catroid.facedetection.SlowFaceDetector; import org.junit.After; import org.junit.Before; @@ -33,6 +35,7 @@ import org.junit.runner.RunWith; import static junit.framework.Assert.assertNotNull; +import static junit.framework.Assert.assertTrue; @RunWith(AndroidJUnit4.class) public class SlowFaceDetectorCameraTest { @@ -42,8 +45,7 @@ public class SlowFaceDetectorCameraTest { public void setUp() throws Exception { ScreenValues.SCREEN_WIDTH = 720; ScreenValues.SCREEN_HEIGHT = 1080; - - camera = Camera.open(); + ProjectManager.getInstance().setCurrentProject(new Project()); } @After @@ -58,9 +60,11 @@ public void testStartAndStop() { SlowFaceDetector detector = new SlowFaceDetector(); assertNotNull(detector); - detector.startFaceDetection(); + assertTrue(detector.startFaceDetection()); + detector.stopFaceDetection(); camera = Camera.open(); + assertNotNull(Camera.open()); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/SlowFaceDetectorTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/SlowFaceDetectorTest.java index 7472b5b378a..16dea26d11c 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/SlowFaceDetectorTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/facedetection/SlowFaceDetectorTest.java @@ -30,35 +30,43 @@ import org.catrobat.catroid.formulaeditor.SensorCustomEvent; import org.catrobat.catroid.formulaeditor.SensorCustomEventListener; import org.catrobat.catroid.formulaeditor.Sensors; -import org.catrobat.catroid.test.utils.Reflection; -import org.catrobat.catroid.test.utils.Reflection.ParameterList; import org.junit.After; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; +import java.util.List; import java.util.Random; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; import static org.hamcrest.Matchers.allOf; import static org.hamcrest.number.OrderingComparison.greaterThanOrEqualTo; import static org.hamcrest.number.OrderingComparison.lessThanOrEqualTo; import static org.junit.Assert.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.verify; +import static org.mockito.internal.verification.VerificationModeFactory.times; @RunWith(AndroidJUnit4.class) public class SlowFaceDetectorTest { + @Rule + public MockitoRule rule = MockitoJUnit.rule(); + + @Captor + private ArgumentCaptor captor; + private static final int DETECTION_WIDTH = 400; private static final int DETECTION_HEIGHT = 300; private static final float EYE_DISTANCE = 4.0f; - private static final int COUNTER_INDEX = 0; - private static final int SIZE_INDEX = 1; - private static final int X_POSITION_INDEX = 2; - private static final int Y_POSITION_INDEX = 3; - private SlowFaceDetector detector; @Before @@ -80,77 +88,55 @@ public void testDoubleStart() { } @Test - public void testOnFaceDetectedListener() throws Exception { - final int[] detectedFaces = new int[4]; - SensorCustomEventListener detectionListener = new SensorCustomEventListener() { - - public void onCustomSensorChanged(SensorCustomEvent event) { - detectedFaces[COUNTER_INDEX]++; - int value = (int) event.values[0]; - float intFloatDifference = event.values[0] - value; - assertEquals(intFloatDifference, 0f); - switch (event.sensor) { - case FACE_X_POSITION: - detectedFaces[X_POSITION_INDEX] = value; - break; - case FACE_Y_POSITION: - detectedFaces[Y_POSITION_INDEX] = value; - break; - case FACE_SIZE: - detectedFaces[SIZE_INDEX] = value; - break; - default: - fail("Unexpected Sensor on Face Detection event. Expected face size or position."); - } - } - }; - detector.addOnFaceDetectedListener(detectionListener); - assertEquals(0, detectedFaces[COUNTER_INDEX]); - + public void testOnFaceDetectedListener() { + SensorCustomEventListener mockedListener = Mockito.mock(SensorCustomEventListener.class); + detector.addOnFaceDetectedListener(mockedListener); PointF centerPoint = new PointF(DETECTION_WIDTH / 2, DETECTION_HEIGHT / 2); - ParameterList parameters = new ParameterList(centerPoint, Float.valueOf(EYE_DISTANCE), - Integer.valueOf(DETECTION_WIDTH), Integer.valueOf(DETECTION_HEIGHT)); - Reflection.invokeMethod(detector, "onFaceFound", parameters); - assertEquals(3, detectedFaces[COUNTER_INDEX]); + detector.callOnFaceFound(centerPoint, EYE_DISTANCE, DETECTION_WIDTH, DETECTION_HEIGHT); + + verify(mockedListener, times(3)).onCustomSensorChanged(captor.capture()); + List capturedEvents = captor.getAllValues(); - int expectedSize = (int) (EYE_DISTANCE * 400 / DETECTION_WIDTH); - assertEquals(expectedSize, detectedFaces[SIZE_INDEX]); + float expectedSize = (int) (EYE_DISTANCE * 400 / DETECTION_WIDTH); + assertEquals(expectedSize, capturedEvents.get(2).values[0]); + assertEquals(Sensors.FACE_SIZE, capturedEvents.get(2).sensor); - int expectedXPosition = (int) (centerPoint.x / DETECTION_WIDTH * (-1) * ScreenValues.SCREEN_WIDTH) + float expectedXPosition = (int) (centerPoint.x / DETECTION_WIDTH * (-1) * ScreenValues.SCREEN_WIDTH) + ScreenValues.SCREEN_WIDTH / 2; - assertEquals(expectedXPosition, detectedFaces[X_POSITION_INDEX]); + assertEquals(expectedXPosition, capturedEvents.get(0).values[0]); + assertEquals(Sensors.FACE_X_POSITION, capturedEvents.get(0).sensor); - int expectedYPosition = (int) (centerPoint.y / DETECTION_HEIGHT * (-1) * ScreenValues.SCREEN_HEIGHT) + float expectedYPosition = (int) (centerPoint.y / DETECTION_HEIGHT * (-1) * ScreenValues.SCREEN_HEIGHT) + ScreenValues.SCREEN_HEIGHT / 2; - assertEquals(expectedYPosition, detectedFaces[Y_POSITION_INDEX]); + assertEquals(expectedYPosition, capturedEvents.get(1).values[0]); + assertEquals(Sensors.FACE_Y_POSITION, capturedEvents.get(1).sensor); - Reflection.invokeMethod(detector, "onFaceFound", parameters); - assertEquals(6, detectedFaces[COUNTER_INDEX]); + detector.callOnFaceFound(centerPoint, EYE_DISTANCE, DETECTION_WIDTH, DETECTION_HEIGHT); + verify(mockedListener, times(6)).onCustomSensorChanged(any(SensorCustomEvent.class)); + + detector.removeOnFaceDetectedListener(mockedListener); } @Test - public void testFaceSizeBounds() throws Exception { - final float[] faceSize = new float[1]; - SensorCustomEventListener detectionListener = new SensorCustomEventListener() { - public void onCustomSensorChanged(SensorCustomEvent event) { - if (event.sensor == Sensors.FACE_SIZE) { - faceSize[0] = event.values[0]; - } - } - }; - detector.addOnFaceDetectedListener(detectionListener); - - ParameterList parameters = new ParameterList(new PointF(), Float.valueOf(EYE_DISTANCE), - Integer.valueOf(DETECTION_WIDTH), Integer.valueOf(DETECTION_HEIGHT)); - Reflection.invokeMethod(detector, "onFaceFound", parameters); - assertThat(faceSize[0], allOf(greaterThanOrEqualTo(0f), lessThanOrEqualTo(100f))); + public void testFaceSizeBounds() { + SensorCustomEventListener mockedListener = Mockito.mock(SensorCustomEventListener.class); + detector.addOnFaceDetectedListener(mockedListener); + + detector.callOnFaceFound(new PointF(), EYE_DISTANCE, + DETECTION_WIDTH, DETECTION_HEIGHT); + + verify(mockedListener, times(3)).onCustomSensorChanged(captor.capture()); + List capturedEvents = captor.getAllValues(); + + assertThat(capturedEvents.get(2).values[0], allOf(greaterThanOrEqualTo(0f), lessThanOrEqualTo(100f))); Random random = new Random(); - parameters = new ParameterList(new PointF(), Float.valueOf(random.nextInt(DETECTION_WIDTH)), - Integer.valueOf(DETECTION_WIDTH), Integer.valueOf(DETECTION_HEIGHT)); - Reflection.invokeMethod(detector, "onFaceFound", parameters); - assertThat(faceSize[0], allOf(greaterThanOrEqualTo(0f), lessThanOrEqualTo(100f))); + detector.callOnFaceFound(new PointF(), random.nextInt(DETECTION_WIDTH), + DETECTION_WIDTH, DETECTION_HEIGHT); + verify(mockedListener, times(6)).onCustomSensorChanged(captor.capture()); + capturedEvents = captor.getAllValues(); + assertThat(capturedEvents.get(2).values[0], allOf(greaterThanOrEqualTo(0f), lessThanOrEqualTo(100f))); - detector.removeOnFaceDetectedListener(detectionListener); + detector.removeOnFaceDetectedListener(mockedListener); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestSensors.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestSensors.java index 86bef90143b..4cedaca86e9 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestSensors.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/ParserTestSensors.java @@ -26,7 +26,6 @@ import android.support.test.InstrumentationRegistry; import android.support.test.annotation.UiThreadTest; import android.support.test.runner.AndroidJUnit4; -import android.util.Log; import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.content.Project; @@ -46,30 +45,30 @@ import org.catrobat.catroid.formulaeditor.SensorHandler; import org.catrobat.catroid.formulaeditor.SensorLoudness; import org.catrobat.catroid.formulaeditor.Sensors; -import org.catrobat.catroid.test.utils.Reflection; -import org.catrobat.catroid.test.utils.Reflection.ParameterList; -import org.catrobat.catroid.test.utils.SimulatedSoundRecorder; +import org.catrobat.catroid.soundrecorder.SoundRecorder; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.InOrder; +import org.mockito.Mockito; -import java.lang.reflect.Method; +import java.io.IOException; import java.util.LinkedList; import java.util.List; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertNotNull; -import static junit.framework.Assert.assertTrue; + +import static org.mockito.Mockito.inOrder; +import static org.mockito.Mockito.when; @RunWith(AndroidJUnit4.class) public class ParserTestSensors { - private static final String TAG = ParserTestSensors.class.getSimpleName(); private Project project; private Sprite firstSprite; - Script startScript1; + private Script startScript1; private float delta = 0.001f; @Before @@ -78,19 +77,12 @@ public void setUp() throws Exception { createProject(); ProjectManager.getInstance().setProject(project); ProjectManager.getInstance().setCurrentSprite(firstSprite); - //For initialization - SensorLoudness.getSensorLoudness(); - SensorLoudness loudnessSensor = (SensorLoudness) Reflection.getPrivateField(SensorLoudness.class, "instance"); - SimulatedSoundRecorder simSoundRec = new SimulatedSoundRecorder("/dev/null"); - Reflection.setPrivateField(loudnessSensor, "recorder", simSoundRec); } @After @UiThreadTest public void tearDown() throws Exception { SensorHandler.stopSensorListeners(); - Reflection.setPrivateField(SensorHandler.class, "instance", null); - Reflection.setPrivateField(SensorLoudness.class, "instance", null); } @Test @@ -100,11 +92,7 @@ public void testSensorManagerNotInitialized() { SensorHandler.unregisterListener(null); SensorHandler.startSensorListener(InstrumentationRegistry.getTargetContext()); - if (ProjectManager.getInstance().isCurrentProjectLandscapeMode()) { - assertEquals(0d, Math.abs((Double) SensorHandler.getSensorValue(Sensors.Y_ACCELERATION))); - } else { - assertEquals(0d, Math.abs((Double) SensorHandler.getSensorValue(Sensors.X_ACCELERATION))); - } + assertEquals(0d, Math.abs((Double) SensorHandler.getSensorValue(Sensors.X_ACCELERATION))); } @Test @@ -119,21 +107,14 @@ public void testSensorHandlerWithLookSensorValue() { @UiThreadTest public void testFaceDetection() throws Exception { SensorHandler.startSensorListener(InstrumentationRegistry.getTargetContext()); - FaceDetector faceDetector = (FaceDetector) Reflection.getPrivateField(FaceDetectionHandler.class, - "faceDetector"); + FaceDetector faceDetector = FaceDetectionHandler.getFaceDetector(); assertNotNull(faceDetector); assertEquals(0d, SensorHandler.getSensorValue(Sensors.FACE_DETECTED)); assertEquals(0d, SensorHandler.getSensorValue(Sensors.FACE_SIZE)); - Method[] methods = faceDetector.getClass().getSuperclass().getDeclaredMethods(); - for (Method method : methods) { - Log.e(TAG, method.getName()); - } - - ParameterList parameters = new ParameterList(Boolean.TRUE); - Reflection.invokeMethod(faceDetector.getClass().getSuperclass(), faceDetector, "onFaceDetected", parameters); + faceDetector.callOnFaceDetected(true); int expectedFaceSize = (int) (Math.random() * 100); int exampleScreenWidth = 320; @@ -141,9 +122,7 @@ public void testFaceDetection() throws Exception { int expectedFaceXPosition = (int) (-exampleScreenWidth / 2 + (Math.random() * exampleScreenWidth)); int expectedFaceYPosition = (int) (-exampleScreenHeight / 2 + (Math.random() * exampleScreenHeight)); - parameters = new ParameterList(new Point(expectedFaceXPosition, expectedFaceYPosition), - expectedFaceSize); - Reflection.invokeMethod(faceDetector.getClass().getSuperclass(), faceDetector, "onFaceDetected", parameters); + faceDetector.callOnFaceDetected(new Point(expectedFaceXPosition, expectedFaceYPosition), expectedFaceSize); Formula formula6 = createFormulaWithSensor(Sensors.FACE_DETECTED); ChangeSizeByNBrick faceDetectionStatusBrick = new ChangeSizeByNBrick(formula6); @@ -165,31 +144,28 @@ public void testFaceDetection() throws Exception { assertEquals(expectedFaceSize, formula7.interpretFloat(firstSprite), delta); - if (ProjectManager.getInstance().isCurrentProjectLandscapeMode()) { - assertEquals(expectedFaceXPosition, formula9.interpretFloat(firstSprite), delta); + assertEquals(expectedFaceXPosition, formula8.interpretFloat(firstSprite), delta); - assertEquals(expectedFaceYPosition, -formula8.interpretFloat(firstSprite), delta); - } else { - assertEquals(expectedFaceXPosition, formula8.interpretFloat(firstSprite), delta); + assertEquals(expectedFaceYPosition, -formula9.interpretFloat(firstSprite), delta); - assertEquals(expectedFaceYPosition, -formula9.interpretFloat(firstSprite), delta); - } SensorHandler.stopSensorListeners(); } @Test @UiThreadTest - public void testMicRelease() throws Exception { - - SensorLoudness.getSensorLoudness(); - SensorLoudness loudnessSensor = (SensorLoudness) Reflection.getPrivateField(SensorLoudness.class, "instance"); - SimulatedSoundRecorder simulatedSoundRecorder = new SimulatedSoundRecorder("/dev/null"); - Reflection.setPrivateField(loudnessSensor, "recorder", simulatedSoundRecorder); + public void testMicRelease() throws IOException { + SensorLoudness loudnessSensor = SensorLoudness.getSensorLoudness(); + SoundRecorder soundRecorder = Mockito.mock(SoundRecorder.class); + loudnessSensor.setSoundRecorder(soundRecorder); + InOrder inOrder = inOrder(soundRecorder); + when(soundRecorder.isRecording()).thenReturn(false); SensorHandler.startSensorListener(InstrumentationRegistry.getTargetContext()); - assertTrue(simulatedSoundRecorder.isRecording()); + inOrder.verify(soundRecorder).start(); + + when(soundRecorder.isRecording()).thenReturn(true); SensorHandler.stopSensorListeners(); - assertFalse(simulatedSoundRecorder.isRecording()); + inOrder.verify(soundRecorder).stop(); } private Formula createFormulaWithSensor(Sensors sensor) { @@ -204,8 +180,8 @@ private void createProject() { this.project = new Project(InstrumentationRegistry.getTargetContext(), "testProject"); firstSprite = new SingleSprite("zwoosh"); startScript1 = new StartScript(); - Brick changeBrick = new ChangeSizeByNBrick(10); firstSprite.addScript(startScript1); + Brick changeBrick = new ChangeSizeByNBrick(10); startScript1.addBrick(changeBrick); project.getDefaultScene().addSprite(firstSprite); } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/SensorLoudnessTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/SensorLoudnessTest.java deleted file mode 100644 index 25336dac68e..00000000000 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/formulaeditor/SensorLoudnessTest.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Catroid: An on-device visual programming system for Android devices - * Copyright (C) 2010-2018 The Catrobat Team - * () - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * An additional term exception under section 7 of the GNU Affero - * General Public License, version 3, is available at - * http://developer.catrobat.org/license_additional_term - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -package org.catrobat.catroid.test.formulaeditor; - -import android.support.test.InstrumentationRegistry; -import android.support.test.annotation.UiThreadTest; -import android.support.test.runner.AndroidJUnit4; - -import org.catrobat.catroid.formulaeditor.SensorHandler; -import org.catrobat.catroid.formulaeditor.SensorLoudness; -import org.catrobat.catroid.test.utils.Reflection; -import org.catrobat.catroid.test.utils.SimulatedSoundRecorder; -import org.junit.After; -import org.junit.Test; -import org.junit.runner.RunWith; - -import static junit.framework.Assert.assertFalse; -import static junit.framework.Assert.assertTrue; - -@RunWith(AndroidJUnit4.class) -public class SensorLoudnessTest { - - @After - @UiThreadTest - public void tearDown() throws Exception { - SensorHandler.stopSensorListeners(); - Reflection.setPrivateField(SensorLoudness.class, "instance", null); - } - - @Test - @UiThreadTest - public void testMicRelease() throws Exception { - SensorLoudness.getSensorLoudness(); - SensorLoudness loudnessSensor = (SensorLoudness) Reflection.getPrivateField(SensorLoudness.class, "instance"); - SimulatedSoundRecorder simSoundRec = new SimulatedSoundRecorder("/dev/null"); - Reflection.setPrivateField(loudnessSensor, "recorder", simSoundRec); - - SensorHandler.startSensorListener(InstrumentationRegistry.getTargetContext()); - assertTrue(simSoundRec.isRecording()); - SensorHandler.stopSensorListeners(); - assertFalse(simSoundRec.isRecording()); - } -} diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/io/CatroidFieldKeySorterTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/io/CatroidFieldKeySorterTest.java index 7362fbb72a7..9e3f9eb7102 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/io/CatroidFieldKeySorterTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/io/CatroidFieldKeySorterTest.java @@ -23,7 +23,6 @@ package org.catrobat.catroid.test.io; import android.support.test.runner.AndroidJUnit4; -import android.test.MoreAsserts; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.annotations.XStreamAlias; @@ -49,6 +48,8 @@ import static junit.framework.Assert.assertEquals; +import static org.junit.Assert.assertArrayEquals; + @RunWith(AndroidJUnit4.class) public class CatroidFieldKeySorterTest { @@ -95,14 +96,16 @@ public void setUp() { public void testSortTagsAlphabetically() { xstream.toXML(new BaseClass()); - MoreAsserts.assertEquals(new String[] {"a", "x"}, fieldKeySorter.getFieldNames(BaseClass.class)); + assertArrayEquals(new String[] {"a", "x"}, + fieldKeySorter.getFieldNames(BaseClass.class)); } @Test public void testSortTagsAlphabeticallyByClassHierarchy() { xstream.toXML(new SubClass()); - MoreAsserts.assertEquals(new String[] {"a", "x", "b", "y", "z"}, fieldKeySorter.getFieldNames(SubClass.class)); + assertArrayEquals(new String[] {"a", "x", "b", "y", "z"}, + fieldKeySorter.getFieldNames(SubClass.class)); } @SuppressWarnings("PMD.UnusedPrivateField") @@ -139,7 +142,8 @@ public void testSortAlphabeticallyWithAliases() { xstream.processAnnotations(SortAlphabeticallyWithAliases.class); xstream.toXML(new SortAlphabeticallyWithAliases()); - MoreAsserts.assertEquals(new String[] {"b", "x", "y"}, fieldKeySorter.getFieldNames(SortAlphabeticallyWithAliases.class)); + assertArrayEquals(new String[] {"b", "x", "y"}, + fieldKeySorter.getFieldNames(SortAlphabeticallyWithAliases.class)); } @SuppressWarnings("PMD.UnusedPrivateField") @@ -154,7 +158,8 @@ private static class SortAlphabeticallyWithAliases { public void testSortByAnnotation() { xstream.toXML(new SortByAnnotation()); - MoreAsserts.assertEquals(new String[] {"c", "a", "d", "b"}, fieldKeySorter.getFieldNames(SortByAnnotation.class)); + assertArrayEquals(new String[] {"c", "a", "d", "b"}, + fieldKeySorter.getFieldNames(SortByAnnotation.class)); } // Remove checkstyle disable when https://github.com/checkstyle/checkstyle/issues/1349 is fixed @@ -177,7 +182,8 @@ private static class SortByAnnotation { public void testSortByAnnotationWithAliases() { xstream.toXML(new SortByAnnotationWithAliases()); - MoreAsserts.assertEquals(new String[] {"x", "b"}, fieldKeySorter.getFieldNames(SortByAnnotationWithAliases.class)); + assertArrayEquals(new String[] {"x", "b"}, + fieldKeySorter.getFieldNames(SortByAnnotationWithAliases.class)); } // Remove checkstyle disable when https://github.com/checkstyle/checkstyle/issues/1349 is fixed @@ -214,7 +220,8 @@ private static class MissingFieldInAnnotation { public void testSortByAnnotationIsInBaseClass() { xstream.toXML(new SubClassWithoutAnnotation()); - MoreAsserts.assertEquals(new String[] {"b", "a"}, fieldKeySorter.getFieldNames(SubClassWithoutAnnotation.class)); + assertArrayEquals(new String[] {"b", "a"}, + fieldKeySorter.getFieldNames(SubClassWithoutAnnotation.class)); } @Test diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/io/SoundManagerTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/io/SoundManagerTest.java index 112ff406a4d..04502d818ed 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/io/SoundManagerTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/io/SoundManagerTest.java @@ -33,7 +33,6 @@ import org.catrobat.catroid.io.SoundManager; import org.catrobat.catroid.io.XstreamSerializer; import org.catrobat.catroid.test.R; -import org.catrobat.catroid.test.utils.Reflection; import org.catrobat.catroid.test.utils.TestUtils; import org.junit.After; import org.junit.Before; @@ -41,6 +40,7 @@ import org.junit.Test; import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; +import org.mockito.Mockito; import java.io.File; import java.util.Collections; @@ -51,6 +51,7 @@ import static junit.framework.Assert.assertTrue; import static org.catrobat.catroid.common.Constants.SOUND_DIRECTORY_NAME; +import static org.mockito.Mockito.verify; @RunWith(AndroidJUnit4.class) public class SoundManagerTest { @@ -82,33 +83,33 @@ public void tearDown() throws Exception { } @Test - public void testPlaySound() throws Exception { + public void testPlaySound() { soundManager.playSoundFile(soundFile.getAbsolutePath()); - MediaPlayer mediaPlayer = getMediaPlayers().get(0); + MediaPlayer mediaPlayer = soundManager.getMediaPlayers().get(0); assertTrue(mediaPlayer.isPlaying()); assertEquals(144, mediaPlayer.getDuration()); } @Test - public void testClear() throws Exception { + public void testClear() { soundManager.playSoundFile(soundFile.getAbsolutePath()); - MediaPlayer mediaPlayer = getMediaPlayers().get(0); + MediaPlayer mediaPlayer = soundManager.getMediaPlayers().get(0); assertTrue(mediaPlayer.isPlaying()); soundManager.clear(); - assertTrue(getMediaPlayers().isEmpty()); + assertTrue(soundManager.getMediaPlayers().isEmpty()); exception.expect(IllegalStateException.class); mediaPlayer.isPlaying(); } @Test - public void testPauseAndResume() throws Exception { + public void testPauseAndResume() { soundManager.playSoundFile(soundFile.getAbsolutePath()); - MediaPlayer mediaPlayer = getMediaPlayers().get(0); + MediaPlayer mediaPlayer = soundManager.getMediaPlayers().get(0); assertTrue(mediaPlayer.isPlaying()); soundManager.pause(); @@ -119,9 +120,9 @@ public void testPauseAndResume() throws Exception { } @Test - public void testPauseAndResumeMultipleSounds() throws Exception { + public void testPauseAndResumeMultipleSounds() { final int playSoundFilesCount = 3; - List mediaPlayers = getMediaPlayers(); + List mediaPlayers = soundManager.getMediaPlayers(); for (int index = 0; index < playSoundFilesCount; index++) { soundManager.playSoundFile(soundFile.getAbsolutePath()); @@ -145,10 +146,10 @@ public void testPauseAndResumeMultipleSounds() throws Exception { } @Test - public void testMediaPlayerLimit() throws Exception { + public void testMediaPlayerLimit() { assertEquals(7, SoundManager.MAX_MEDIA_PLAYERS); - List mediaPlayers = getMediaPlayers(); + List mediaPlayers = soundManager.getMediaPlayers(); for (int index = 0; index < SoundManager.MAX_MEDIA_PLAYERS + 3; index++) { soundManager.playSoundFile(soundFile.getAbsolutePath()); } @@ -157,8 +158,8 @@ public void testMediaPlayerLimit() throws Exception { } @Test - public void testIfAllMediaPlayersInTheListAreUnique() throws Exception { - List mediaPlayers = getMediaPlayers(); + public void testIfAllMediaPlayersInTheListAreUnique() { + List mediaPlayers = soundManager.getMediaPlayers(); for (int index = 0; index < SoundManager.MAX_MEDIA_PLAYERS; index++) { SoundManager.getInstance().playSoundFile(soundFile.getAbsolutePath()); } @@ -170,39 +171,21 @@ public void testIfAllMediaPlayersInTheListAreUnique() throws Exception { @Test public void testInitialVolume() { - SoundManager soundManager = new SoundManager() { - }; + SoundManager soundManager = new SoundManager(); assertEquals(70.0f, soundManager.getVolume()); } @Test - public void testSetVolume() throws Exception { - List mediaPlayers = getMediaPlayers(); - MediaPlayerMock mediaPlayerMock = new MediaPlayerMock(); + public void testSetVolume() { + List mediaPlayers = soundManager.getMediaPlayers(); + MediaPlayer mediaPlayerMock = Mockito.mock(MediaPlayer.class); mediaPlayers.add(mediaPlayerMock); float newVolume = 80.9f; soundManager.setVolume(newVolume); - assertEquals(newVolume, soundManager.getVolume()); - assertEquals(newVolume / 100f, mediaPlayerMock.leftVolume); - assertEquals(newVolume / 100f, mediaPlayerMock.rightVolume); - } - - @SuppressWarnings("unchecked") - private List getMediaPlayers() throws Exception { - return (List) Reflection.getPrivateField(soundManager, "mediaPlayers"); - } - - private class MediaPlayerMock extends MediaPlayer { - private float leftVolume; - private float rightVolume; - @Override - public void setVolume(float leftVolume, float rightVolume) { - this.leftVolume = leftVolume; - this.rightVolume = rightVolume; - } + verify(mediaPlayerMock).setVolume(newVolume / 100f, newVolume / 100f); } private void createProject() { diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsActiveStageAreaTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsActiveStageAreaTest.java index d48656a6227..09b71dc1386 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsActiveStageAreaTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsActiveStageAreaTest.java @@ -35,7 +35,6 @@ import org.catrobat.catroid.physics.PhysicsObject; import org.catrobat.catroid.physics.PhysicsWorld; import org.catrobat.catroid.physics.content.ActionPhysicsFactory; -import org.catrobat.catroid.test.utils.PhysicsTestUtils; import org.junit.Before; import org.junit.Rule; import org.junit.Test; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsBricksCloneTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsBricksCloneTest.java index 847b5f58df4..ad3a6a73333 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsBricksCloneTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsBricksCloneTest.java @@ -41,7 +41,6 @@ import org.catrobat.catroid.physics.content.bricks.SetVelocityBrick; import org.catrobat.catroid.physics.content.bricks.TurnLeftSpeedBrick; import org.catrobat.catroid.physics.content.bricks.TurnRightSpeedBrick; -import org.catrobat.catroid.test.utils.Reflection; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -95,8 +94,8 @@ public void testCloneCollisionReceiverBrick() throws Exception { Brick brick = new CollisionReceiverBrick(new CollisionScript(null)); Brick clonedBrick = brick.clone(); - CollisionScript brickReceiverScript = (CollisionScript) Reflection.getPrivateField(brick, "collisionScript"); - CollisionScript clonedBrickReceiverScript = (CollisionScript) Reflection.getPrivateField(clonedBrick, "collisionScript"); + CollisionScript brickReceiverScript = (CollisionScript) ((CollisionReceiverBrick) brick).getScriptSafe(); + CollisionScript clonedBrickReceiverScript = (CollisionScript) ((CollisionReceiverBrick) clonedBrick).getScriptSafe(); assertNotSame(brickReceiverScript, clonedBrickReceiverScript); } @@ -111,22 +110,23 @@ public void testCloneSetPhysicsObjectTypeBrick() throws Exception { Brick clonedFixedBrick = fixedBrick.clone(); Brick clonedNoneBrick = noneBrick.clone(); - PhysicsObject.Type dynamicBrickType = (PhysicsObject.Type) Reflection.getPrivateField(dynamicBrick, "type"); - PhysicsObject.Type clonedDynamicBrickType = (PhysicsObject.Type) Reflection.getPrivateField(clonedDynamicBrick, "type"); - - PhysicsObject.Type fixedBrickType = (PhysicsObject.Type) Reflection.getPrivateField(fixedBrick, "type"); - PhysicsObject.Type clonedFixedBrickType = (PhysicsObject.Type) Reflection.getPrivateField(clonedFixedBrick, "type"); - - PhysicsObject.Type noneBrickType = (PhysicsObject.Type) Reflection.getPrivateField(noneBrick, "type"); - PhysicsObject.Type clonedNoneBrickType = (PhysicsObject.Type) Reflection.getPrivateField(clonedNoneBrick, "type"); - + PhysicsObject.Type dynamicBrickType = ((SetPhysicsObjectTypeBrick) dynamicBrick).getType(); + PhysicsObject.Type clonedDynamicBrickType = ((SetPhysicsObjectTypeBrick) clonedDynamicBrick).getType(); assertEquals(dynamicBrickType, clonedDynamicBrickType); - assertEquals(fixedBrickType, clonedFixedBrickType); - assertEquals(noneBrickType, clonedNoneBrickType); - assertThat(clonedDynamicBrick, is(instanceOf(dynamicBrick.getClass()))); + assertNotSame(clonedDynamicBrick, dynamicBrickType); + + PhysicsObject.Type fixedBrickType = ((SetPhysicsObjectTypeBrick) fixedBrick).getType(); + PhysicsObject.Type clonedFixedBrickType = ((SetPhysicsObjectTypeBrick) clonedFixedBrick).getType(); + assertEquals(fixedBrickType, clonedFixedBrickType); assertThat(clonedFixedBrick, is(instanceOf(fixedBrick.getClass()))); + assertNotSame(clonedFixedBrick, fixedBrick); + + PhysicsObject.Type noneBrickType = ((SetPhysicsObjectTypeBrick) noneBrick).getType(); + PhysicsObject.Type clonedNoneBrickType = ((SetPhysicsObjectTypeBrick) clonedNoneBrick).getType(); + assertEquals(noneBrickType, clonedNoneBrickType); assertThat(clonedNoneBrick, is(instanceOf(noneBrick.getClass()))); + assertNotSame(clonedNoneBrick, noneBrick); } private void brickClone(Brick brick, Brick.BrickField... brickFields) throws Exception { diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsCollisionTestRule.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsCollisionTestRule.java index 30de03134a9..d380ff6ea4d 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsCollisionTestRule.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsCollisionTestRule.java @@ -37,7 +37,6 @@ import org.catrobat.catroid.physics.PhysicsObject; import org.catrobat.catroid.physics.PhysicsWorld; import org.catrobat.catroid.physics.content.ActionPhysicsFactory; -import org.catrobat.catroid.test.utils.PhysicsTestUtils; import org.catrobat.catroid.test.utils.Reflection; import static junit.framework.Assert.assertNotNull; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsLookTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsLookTest.java index 27027971f95..67254fb40db 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsLookTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsLookTest.java @@ -48,7 +48,6 @@ import org.catrobat.catroid.physics.shapebuilder.PhysicsShapeBuilder; import org.catrobat.catroid.physics.shapebuilder.PhysicsShapeScaleUtils; import org.catrobat.catroid.test.R; -import org.catrobat.catroid.test.utils.PhysicsTestUtils; import org.catrobat.catroid.test.utils.Reflection; import org.catrobat.catroid.test.utils.TestUtils; import org.catrobat.catroid.utils.Utils; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsObjectTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsObjectTest.java index 4f34bcd54c0..579d0943bc5 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsObjectTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsObjectTest.java @@ -40,7 +40,6 @@ import org.catrobat.catroid.physics.PhysicsObject; import org.catrobat.catroid.physics.PhysicsWorld; import org.catrobat.catroid.physics.PhysicsWorldConverter; -import org.catrobat.catroid.test.utils.PhysicsTestUtils; import org.catrobat.catroid.test.utils.Reflection; import org.catrobat.catroid.test.utils.Reflection.ParameterList; import org.catrobat.catroid.test.utils.TestUtils; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsShapeBuilderTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsShapeBuilderTest.java index 6e91bbf3dd3..710b82bef5d 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsShapeBuilderTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsShapeBuilderTest.java @@ -43,7 +43,6 @@ import org.catrobat.catroid.physics.PhysicsWorld; import org.catrobat.catroid.physics.shapebuilder.PhysicsShapeBuilder; import org.catrobat.catroid.test.R; -import org.catrobat.catroid.test.utils.PhysicsTestUtils; import org.catrobat.catroid.test.utils.Reflection; import org.catrobat.catroid.test.utils.TestUtils; import org.junit.After; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsShapeScaleUtilsTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsShapeScaleUtilsTest.java index 0ec3353974c..0e03fac1315 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsShapeScaleUtilsTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsShapeScaleUtilsTest.java @@ -43,7 +43,6 @@ import org.catrobat.catroid.physics.shapebuilder.PhysicsShapeBuilderStrategyFastHull; import org.catrobat.catroid.physics.shapebuilder.PhysicsShapeScaleUtils; import org.catrobat.catroid.test.R; -import org.catrobat.catroid.test.utils.PhysicsTestUtils; import org.catrobat.catroid.test.utils.Reflection; import org.catrobat.catroid.test.utils.TestUtils; import org.junit.After; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsSpriteCloneTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsSpriteCloneTest.java index 7a34fc80f0b..c68cf55632e 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsSpriteCloneTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsSpriteCloneTest.java @@ -55,7 +55,6 @@ import org.catrobat.catroid.physics.content.bricks.SetVelocityBrick; import org.catrobat.catroid.physics.content.bricks.TurnLeftSpeedBrick; import org.catrobat.catroid.physics.content.bricks.TurnRightSpeedBrick; -import org.catrobat.catroid.test.utils.PhysicsTestUtils; import org.catrobat.catroid.test.utils.TestUtils; import org.catrobat.catroid.ui.recyclerview.controller.SpriteController; import org.junit.After; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsTestRule.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsTestRule.java index 0eb51ae9310..0dd36e6b693 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsTestRule.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsTestRule.java @@ -34,7 +34,6 @@ import org.catrobat.catroid.physics.PhysicsWorld; import org.catrobat.catroid.physics.content.ActionPhysicsFactory; import org.catrobat.catroid.test.R; -import org.catrobat.catroid.test.utils.PhysicsTestUtils; import org.catrobat.catroid.test.utils.TestUtils; import org.junit.rules.ExternalResource; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/PhysicsTestUtils.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsTestUtils.java similarity index 97% rename from catroid/src/androidTest/java/org/catrobat/catroid/test/utils/PhysicsTestUtils.java rename to catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsTestUtils.java index aa4c2a5ddb3..e11c7f5b692 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/PhysicsTestUtils.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsTestUtils.java @@ -20,7 +20,7 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ -package org.catrobat.catroid.test.utils; +package org.catrobat.catroid.test.physics; import com.badlogic.gdx.graphics.Pixmap; import com.badlogic.gdx.physics.box2d.Body; @@ -32,6 +32,7 @@ import org.catrobat.catroid.content.SingleSprite; import org.catrobat.catroid.physics.PhysicsObject; import org.catrobat.catroid.physics.PhysicsWorld; +import org.catrobat.catroid.test.utils.Reflection; import org.catrobat.catroid.utils.Utils; import java.io.File; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/SetLookActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/SetLookActionTest.java index 679e86da5d5..5ff1f033dac 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/SetLookActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/actions/SetLookActionTest.java @@ -33,7 +33,7 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.io.ResourceImporter; import org.catrobat.catroid.test.physics.PhysicsTestRule; -import org.catrobat.catroid.test.utils.PhysicsTestUtils; +import org.catrobat.catroid.test.physics.PhysicsTestUtils; import org.catrobat.catroid.test.utils.TestUtils; import org.junit.After; import org.junit.Before; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/CollisionDetectionAdvancedTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/collision/CollisionDetectionAdvancedTest.java similarity index 92% rename from catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/CollisionDetectionAdvancedTest.java rename to catroid/src/androidTest/java/org/catrobat/catroid/test/physics/collision/CollisionDetectionAdvancedTest.java index 7b434e3eb43..d54543f4c4b 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/CollisionDetectionAdvancedTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/collision/CollisionDetectionAdvancedTest.java @@ -21,12 +21,11 @@ * along with this program. If not, see . */ -package org.catrobat.catroid.test.sensing; +package org.catrobat.catroid.test.physics.collision; import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; -import com.badlogic.gdx.graphics.Pixmap; import com.badlogic.gdx.math.Polygon; import com.badlogic.gdx.scenes.scene2d.Action; @@ -55,6 +54,7 @@ import static junit.framework.Assert.assertEquals; import static org.catrobat.catroid.common.Constants.IMAGE_DIRECTORY_NAME; +import static org.catrobat.catroid.test.physics.PhysicsTestUtils.generateLookData; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.is; @@ -65,16 +65,7 @@ public class CollisionDetectionAdvancedTest { protected Sprite sprite1; protected Sprite sprite2; - protected static LookData generateLookData(File testImage) { - LookData lookData = new LookData(); - lookData.setFile(testImage); - lookData.setName(testImage.getName()); - Pixmap pixmap = Utils.getPixmapFromFile(testImage); - lookData.setPixmap(pixmap); - return lookData; - } - - protected void initializeSprite(Sprite sprite, int resourceId, String filename) throws IOException { + private void initializeSprite(Sprite sprite, int resourceId, String filename) throws IOException { sprite.look = new Look(sprite); sprite.setActionFactory(new ActionFactory()); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/CollisionDetectionBasicTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/collision/CollisionDetectionBasicTest.java similarity index 98% rename from catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/CollisionDetectionBasicTest.java rename to catroid/src/androidTest/java/org/catrobat/catroid/test/physics/collision/CollisionDetectionBasicTest.java index 698ae37a1ac..b64c3cf5516 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/CollisionDetectionBasicTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/collision/CollisionDetectionBasicTest.java @@ -21,7 +21,7 @@ * along with this program. If not, see . */ -package org.catrobat.catroid.test.sensing; +package org.catrobat.catroid.test.physics.collision; import android.support.test.runner.AndroidJUnit4; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/CollisionDetectionPolygonCreationTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/collision/CollisionDetectionPolygonCreationTest.java similarity index 93% rename from catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/CollisionDetectionPolygonCreationTest.java rename to catroid/src/androidTest/java/org/catrobat/catroid/test/physics/collision/CollisionDetectionPolygonCreationTest.java index 719bc5b1b70..1af0de7f50e 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/CollisionDetectionPolygonCreationTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/collision/CollisionDetectionPolygonCreationTest.java @@ -21,13 +21,11 @@ * along with this program. If not, see . */ -package org.catrobat.catroid.test.sensing; +package org.catrobat.catroid.test.physics.collision; import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; -import com.badlogic.gdx.graphics.Pixmap; - import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.common.LookData; import org.catrobat.catroid.content.Project; @@ -35,9 +33,8 @@ import org.catrobat.catroid.io.ResourceImporter; import org.catrobat.catroid.io.XstreamSerializer; import org.catrobat.catroid.sensing.CollisionInformation; -import org.catrobat.catroid.test.utils.PhysicsTestUtils; +import org.catrobat.catroid.test.physics.PhysicsTestUtils; import org.catrobat.catroid.test.utils.TestUtils; -import org.catrobat.catroid.utils.Utils; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -49,6 +46,7 @@ import static junit.framework.Assert.assertNotNull; import static org.catrobat.catroid.common.Constants.IMAGE_DIRECTORY_NAME; +import static org.catrobat.catroid.test.physics.PhysicsTestUtils.generateLookData; import static org.junit.Assert.assertArrayEquals; @RunWith(AndroidJUnit4.class) @@ -57,15 +55,6 @@ public class CollisionDetectionPolygonCreationTest { protected Sprite sprite; private static final float DELTA = Float.MIN_VALUE; - public static LookData generateLookData(File testImage) { - LookData lookData = new LookData(); - lookData.setFile(testImage); - lookData.setName(testImage.getName()); - Pixmap pixmap = Utils.getPixmapFromFile(testImage); - lookData.setPixmap(pixmap); - return lookData; - } - @Before public void setUp() throws Exception { TestUtils.deleteProjects(); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/CollisionFormulaConversionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/collision/CollisionFormulaConversionTest.java similarity index 99% rename from catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/CollisionFormulaConversionTest.java rename to catroid/src/androidTest/java/org/catrobat/catroid/test/physics/collision/CollisionFormulaConversionTest.java index 769b831abd8..354997548f9 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/CollisionFormulaConversionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/collision/CollisionFormulaConversionTest.java @@ -21,7 +21,7 @@ * along with this program. If not, see . */ -package org.catrobat.catroid.test.sensing; +package org.catrobat.catroid.test.physics.collision; import android.content.Context; import android.content.res.Configuration; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/CollisionInformationTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/collision/CollisionInformationTest.java similarity index 98% rename from catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/CollisionInformationTest.java rename to catroid/src/androidTest/java/org/catrobat/catroid/test/physics/collision/CollisionInformationTest.java index 061934994dd..393dd12ccb4 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/CollisionInformationTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/collision/CollisionInformationTest.java @@ -21,7 +21,7 @@ * along with this program. If not, see . */ -package org.catrobat.catroid.test.sensing; +package org.catrobat.catroid.test.physics.collision; import android.graphics.Bitmap; import android.support.test.InstrumentationRegistry; @@ -37,7 +37,7 @@ import org.catrobat.catroid.io.XstreamSerializer; import org.catrobat.catroid.sensing.CollisionInformation; import org.catrobat.catroid.sensing.CollisionPolygonVertex; -import org.catrobat.catroid.test.utils.PhysicsTestUtils; +import org.catrobat.catroid.test.physics.PhysicsTestUtils; import org.catrobat.catroid.test.utils.TestUtils; import org.catrobat.catroid.utils.Utils; import org.junit.Test; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/CollisionTestUtils.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/collision/CollisionTestUtils.java similarity index 88% rename from catroid/src/androidTest/java/org/catrobat/catroid/test/utils/CollisionTestUtils.java rename to catroid/src/androidTest/java/org/catrobat/catroid/test/physics/collision/CollisionTestUtils.java index dfcc72e953b..e121e094801 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/CollisionTestUtils.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/collision/CollisionTestUtils.java @@ -21,13 +21,11 @@ * along with this program. If not, see . */ -package org.catrobat.catroid.test.utils; +package org.catrobat.catroid.test.physics.collision; import android.content.Context; import android.support.test.InstrumentationRegistry; -import com.badlogic.gdx.graphics.Pixmap; - import junit.framework.Assert; import org.catrobat.catroid.common.LookData; @@ -43,6 +41,7 @@ import java.io.IOException; import static org.catrobat.catroid.common.Constants.IMAGE_DIRECTORY_NAME; +import static org.catrobat.catroid.test.physics.PhysicsTestUtils.generateLookData; public final class CollisionTestUtils { @@ -50,15 +49,6 @@ private CollisionTestUtils() { throw new AssertionError(); } - public static LookData generateLookData(File testImage) { - LookData lookData = new LookData(); - lookData.setFile(testImage); - lookData.setName(testImage.getName()); - Pixmap pixmap = Utils.getPixmapFromFile(testImage); - lookData.setPixmap(pixmap); - return lookData; - } - public static void initializeSprite(Sprite sprite, int resourceId, String filename, Context context, Project project) throws IOException { sprite.look = new Look(sprite); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/TouchesEdgeTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/TouchesEdgeTest.java index 83352a6be0f..b6b6e73dbef 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/TouchesEdgeTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/TouchesEdgeTest.java @@ -31,7 +31,7 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.io.XstreamSerializer; import org.catrobat.catroid.sensing.CollisionDetection; -import org.catrobat.catroid.test.utils.CollisionTestUtils; +import org.catrobat.catroid.test.physics.collision.CollisionTestUtils; import org.catrobat.catroid.test.utils.TestUtils; import org.junit.Before; import org.junit.Test; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/TouchesFingerTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/TouchesFingerTest.java index b06772b33d8..99bfb284acf 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/TouchesFingerTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/sensing/TouchesFingerTest.java @@ -31,7 +31,7 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.io.XstreamSerializer; import org.catrobat.catroid.sensing.CollisionDetection; -import org.catrobat.catroid.test.utils.CollisionTestUtils; +import org.catrobat.catroid.test.physics.collision.CollisionTestUtils; import org.catrobat.catroid.test.utils.TestUtils; import org.catrobat.catroid.utils.TouchUtil; import org.junit.Before; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/StatusBarNotificationManagerTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/ui/StatusBarNotificationManagerTest.java similarity index 94% rename from catroid/src/androidTest/java/org/catrobat/catroid/test/utils/StatusBarNotificationManagerTest.java rename to catroid/src/androidTest/java/org/catrobat/catroid/test/ui/StatusBarNotificationManagerTest.java index 6828c7709d1..fb08846bd1d 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/StatusBarNotificationManagerTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/ui/StatusBarNotificationManagerTest.java @@ -21,7 +21,7 @@ * along with this program. If not, see . */ -package org.catrobat.catroid.test.utils; +package org.catrobat.catroid.test.ui; import android.app.NotificationManager; import android.content.Context; @@ -31,6 +31,8 @@ import android.util.SparseArray; import org.catrobat.catroid.R; +import org.catrobat.catroid.test.utils.Reflection; +import org.catrobat.catroid.test.utils.TestUtils; import org.catrobat.catroid.utils.NotificationData; import org.catrobat.catroid.utils.StatusBarNotificationManager; import org.junit.After; @@ -39,7 +41,10 @@ import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; -import static junit.framework.Assert.assertTrue; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.greaterThanOrEqualTo; +import static org.hamcrest.Matchers.is; @RunWith(AndroidJUnit4.class) public class StatusBarNotificationManagerTest { @@ -107,7 +112,7 @@ public void testUploadRejectedNotification() throws Exception { } private void checkNotificationData(int id) throws Exception { - assertTrue(id >= 0); + assertThat(id, is(greaterThanOrEqualTo(0))); @SuppressWarnings("unchecked") SparseArray notificationDataMap = (SparseArray) Reflection.getPrivateField( diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/SimulatedSoundRecorder.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/SimulatedSoundRecorder.java deleted file mode 100644 index 4483587fa9a..00000000000 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/SimulatedSoundRecorder.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Catroid: An on-device visual programming system for Android devices - * Copyright (C) 2010-2018 The Catrobat Team - * () - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * An additional term exception under section 7 of the GNU Affero - * General Public License, version 3, is available at - * http://developer.catrobat.org/license_additional_term - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package org.catrobat.catroid.test.utils; - -import org.catrobat.catroid.soundrecorder.SoundRecorder; - -public class SimulatedSoundRecorder extends SoundRecorder { - private boolean recording = false; - - public SimulatedSoundRecorder(String path) { - super(path); - } - - @Override - public void start() { - recording = true; - } - - @Override - public boolean isRecording() { - return recording; - } - - @Override - public void stop() { - if (!recording) { - throw new IllegalStateException(); - } - recording = false; - } - - @Override - public int getMaxAmplitude() { - return (int) (Math.random() * 32000 + 767); - } -} diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/XMLValidationUtil.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/XMLValidationUtil.java deleted file mode 100644 index 6c45243ccee..00000000000 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/XMLValidationUtil.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Catroid: An on-device visual programming system for Android devices - * Copyright (C) 2010-2018 The Catrobat Team - * () - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * An additional term exception under section 7 of the GNU Affero - * General Public License, version 3, is available at - * http://developer.catrobat.org/license_additional_term - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -package org.catrobat.catroid.test.utils; - -import android.util.Log; - -import junit.framework.Assert; - -import org.catrobat.catroid.common.Constants; -import org.catrobat.catroid.content.Project; -import org.catrobat.catroid.utils.PathBuilder; -import org.catrobat.catroid.web.ServerCalls; -import org.catrobat.catroid.web.WebconnectionException; -import org.json.JSONException; -import org.json.JSONObject; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; -import java.util.HashMap; - -public final class XMLValidationUtil { - // TODO: change to new XML schema - private static final String XML_VALIDATING_URL = "http://catroid.org/CatrobatLanguage/xmlSchema/version-0.3/validateXmlVersion3.php"; - private static final String LOG_TAG = XMLValidationUtil.class.getSimpleName(); - - // Suppress default constructor for noninstantiability - private XMLValidationUtil() { - throw new AssertionError(); - } - - public static void sendProjectXMLToServerForValidating(Project projectToValidate) throws IOException, - JSONException, WebconnectionException { - String projectName = projectToValidate.getName(); - String fullPathFilename = PathBuilder.buildPath(PathBuilder.buildProjectPath(projectName), Constants.CODE_XML_FILE_NAME); - sendProjectXMLToServerForValidating(fullPathFilename); - } - - public static void sendProjectXMLToServerForValidating(String fullPathFilename) throws IOException, JSONException, - WebconnectionException { - - String xmlContent = readTextFile(fullPathFilename); - - HashMap postValues = new HashMap(); - postValues.put("xmlToValidate", xmlContent); - - String response = ServerCalls.getInstance().httpFormUpload(XML_VALIDATING_URL, postValues); - - JSONObject jsonResponse = new JSONObject(response); - Log.i(LOG_TAG, "JSON response: " + jsonResponse.toString()); - boolean valid = jsonResponse.getBoolean("valid"); - String message = jsonResponse.optString("message"); - - Assert.assertTrue(message, valid); - } - - private static String readTextFile(String fullPathFilename) throws IOException { - StringBuffer contents = new StringBuffer(); - BufferedReader reader = new BufferedReader(new FileReader(fullPathFilename)); - String text; - - while ((text = reader.readLine()) != null) { - contents.append(text).append(System.getProperty("line.separator")); - } - reader.close(); - - return contents.toString(); - } -} diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/UniqueNameProviderTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/UniqueNameProviderTest.java similarity index 98% rename from catroid/src/androidTest/java/org/catrobat/catroid/test/utils/UniqueNameProviderTest.java rename to catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/UniqueNameProviderTest.java index ff8b71721cd..a2df49a0ebe 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/UniqueNameProviderTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/UniqueNameProviderTest.java @@ -21,7 +21,7 @@ * along with this program. If not, see . */ -package org.catrobat.catroid.test.utils; +package org.catrobat.catroid.test.utiltests; import com.google.common.collect.Lists; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/CrashReporterTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/web/CrashReporterTest.java similarity index 99% rename from catroid/src/androidTest/java/org/catrobat/catroid/test/utils/CrashReporterTest.java rename to catroid/src/androidTest/java/org/catrobat/catroid/test/web/CrashReporterTest.java index 30c57d99238..f68847ffab5 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/CrashReporterTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/web/CrashReporterTest.java @@ -21,7 +21,7 @@ * along with this program. If not, see . */ -package org.catrobat.catroid.test.utils; +package org.catrobat.catroid.test.web; import android.content.Context; import android.content.SharedPreferences; diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/SettingsFragmentCrashReporterTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/web/SettingsFragmentCrashReporterTest.java similarity index 98% rename from catroid/src/androidTest/java/org/catrobat/catroid/test/utils/SettingsFragmentCrashReporterTest.java rename to catroid/src/androidTest/java/org/catrobat/catroid/test/web/SettingsFragmentCrashReporterTest.java index 8d27d5fb0be..2de4fa3f6bc 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/SettingsFragmentCrashReporterTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/web/SettingsFragmentCrashReporterTest.java @@ -21,7 +21,7 @@ * along with this program. If not, see . */ -package org.catrobat.catroid.test.utils; +package org.catrobat.catroid.test.web; import android.content.Context; import android.support.test.InstrumentationRegistry; diff --git a/catroid/src/main/java/org/catrobat/catroid/content/Look.java b/catroid/src/main/java/org/catrobat/catroid/content/Look.java index df7894deb63..b89972c5065 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/Look.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/Look.java @@ -23,6 +23,7 @@ package org.catrobat.catroid.content; import android.graphics.PointF; +import android.support.annotation.VisibleForTesting; import com.badlogic.gdx.graphics.Pixmap; import com.badlogic.gdx.graphics.g2d.Batch; @@ -514,7 +515,7 @@ private boolean isAngleInCatroidInterval(float catroidAngle) { return (catroidAngle > -180 && catroidAngle <= 180); } - private float breakDownCatroidAngle(float catroidAngle) { + public float breakDownCatroidAngle(float catroidAngle) { catroidAngle = catroidAngle % 360; if (catroidAngle >= 0 && !isAngleInCatroidInterval(catroidAngle)) { return catroidAngle - 360; @@ -524,12 +525,12 @@ private float breakDownCatroidAngle(float catroidAngle) { return catroidAngle; } - protected float convertCatroidAngleToStageAngle(float catroidAngle) { + public float convertCatroidAngleToStageAngle(float catroidAngle) { catroidAngle = breakDownCatroidAngle(catroidAngle); return -catroidAngle + DEGREE_UI_OFFSET; } - protected float convertStageAngleToCatroidAngle(float stageAngle) { + public float convertStageAngleToCatroidAngle(float stageAngle) { float catroidAngle = -stageAngle + DEGREE_UI_OFFSET; return breakDownCatroidAngle(catroidAngle); } @@ -642,4 +643,14 @@ void notifyAllWaiters() { } } } + + @VisibleForTesting + public float getAlpha() { + return alpha; + } + + @VisibleForTesting + public float getBrightness() { + return brightness; + } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/Project.java b/catroid/src/main/java/org/catrobat/catroid/content/Project.java index f32ee758707..abb6e2e0aa1 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/Project.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/Project.java @@ -24,6 +24,7 @@ import android.content.Context; import android.os.Build; +import android.support.annotation.VisibleForTesting; import com.thoughtworks.xstream.annotations.XStreamAlias; @@ -269,8 +270,6 @@ public int getRequiredResources() { return resources; } - // this method should be removed by the nex refactoring - // (used only in tests) public void setCatrobatLanguageVersion(float catrobatLanguageVersion) { xmlHeader.setCatrobatLanguageVersion(catrobatLanguageVersion); } @@ -442,4 +441,9 @@ public void updateCollisionScripts() { } } } + + @VisibleForTesting + public void setXmlHeader(XmlHeader xmlHeader) { + this.xmlHeader = xmlHeader; + } } diff --git a/catroid/src/main/java/org/catrobat/catroid/facedetection/FaceDetectionHandler.java b/catroid/src/main/java/org/catrobat/catroid/facedetection/FaceDetectionHandler.java index 67391aa509d..34b53fa2f42 100644 --- a/catroid/src/main/java/org/catrobat/catroid/facedetection/FaceDetectionHandler.java +++ b/catroid/src/main/java/org/catrobat/catroid/facedetection/FaceDetectionHandler.java @@ -169,4 +169,9 @@ private static int getMaxNumberOfFaces(Camera camera) { public static void setFaceDetector(FaceDetector detector) { faceDetector = detector; } + + @VisibleForTesting + public static FaceDetector getFaceDetector() { + return faceDetector; + } } diff --git a/catroid/src/main/java/org/catrobat/catroid/facedetection/FaceDetector.java b/catroid/src/main/java/org/catrobat/catroid/facedetection/FaceDetector.java index 2ae7b4b53d7..0294b77d158 100644 --- a/catroid/src/main/java/org/catrobat/catroid/facedetection/FaceDetector.java +++ b/catroid/src/main/java/org/catrobat/catroid/facedetection/FaceDetector.java @@ -23,6 +23,7 @@ package org.catrobat.catroid.facedetection; import android.graphics.Point; +import android.support.annotation.VisibleForTesting; import org.catrobat.catroid.camera.CameraManager; import org.catrobat.catroid.common.ScreenValues; @@ -66,7 +67,7 @@ public void removeOnFaceDetectionStatusListener(SensorCustomEventListener listen faceDetectionStatusListeners.remove(listener); } - protected void onFaceDetected(Point position, int size) { + void onFaceDetected(Point position, int size) { float[] positionXFloatValue = new float[] {position.x}; boolean invertY = !CameraManager.getInstance().isCurrentCameraFacingBack(); float[] positionYFloatValue = new float[] {invertY ? -position.y : position.y}; @@ -92,7 +93,17 @@ protected void onFaceDetected(boolean faceDetected) { } } - protected Point getRelationForFacePosition() { + Point getRelationForFacePosition() { return new Point(-ScreenValues.SCREEN_WIDTH, -ScreenValues.SCREEN_HEIGHT); } + + @VisibleForTesting + public void callOnFaceDetected(boolean faceDetected) { + onFaceDetected(faceDetected); + } + + @VisibleForTesting + public void callOnFaceDetected(Point position, int size) { + onFaceDetected(position, size); + } } diff --git a/catroid/src/main/java/org/catrobat/catroid/facedetection/SlowFaceDetector.java b/catroid/src/main/java/org/catrobat/catroid/facedetection/SlowFaceDetector.java index 07dc5aadd9a..f48265a5221 100644 --- a/catroid/src/main/java/org/catrobat/catroid/facedetection/SlowFaceDetector.java +++ b/catroid/src/main/java/org/catrobat/catroid/facedetection/SlowFaceDetector.java @@ -32,6 +32,7 @@ import android.graphics.PointF; import android.media.FaceDetector; import android.media.FaceDetector.Face; +import android.support.annotation.VisibleForTesting; import org.catrobat.catroid.camera.CameraManager; import org.catrobat.catroid.camera.JpgPreviewCallback; @@ -105,4 +106,9 @@ private void onFaceFound(PointF centerPoint, float eyeDistance, int detectionWid relativeFaceSize = relativeFaceSize > 100 ? 100 : relativeFaceSize; onFaceDetected(relativePoint, relativeFaceSize); } + + @VisibleForTesting + public void callOnFaceFound(PointF centerPoint, float eyeDistance, int detectionWidth, int detectionHeight) { + onFaceFound(centerPoint, eyeDistance, detectionWidth, detectionHeight); + } } diff --git a/catroid/src/main/java/org/catrobat/catroid/formulaeditor/SensorLoudness.java b/catroid/src/main/java/org/catrobat/catroid/formulaeditor/SensorLoudness.java index 780bd64a7bc..ac62250a7e6 100644 --- a/catroid/src/main/java/org/catrobat/catroid/formulaeditor/SensorLoudness.java +++ b/catroid/src/main/java/org/catrobat/catroid/formulaeditor/SensorLoudness.java @@ -23,6 +23,7 @@ package org.catrobat.catroid.formulaeditor; import android.os.Handler; +import android.support.annotation.VisibleForTesting; import android.util.Log; import org.catrobat.catroid.soundrecorder.SoundRecorder; @@ -113,4 +114,14 @@ public synchronized void unregisterListener(SensorCustomEventListener listener) } } } + + @VisibleForTesting + public void setSoundRecorder(SoundRecorder soundRecorder) { + recorder = soundRecorder; + } + + @VisibleForTesting + public SoundRecorder getSoundRecorder() { + return recorder; + } } diff --git a/catroid/src/main/java/org/catrobat/catroid/io/SoundManager.java b/catroid/src/main/java/org/catrobat/catroid/io/SoundManager.java index 7906cdf4955..be3e017201b 100644 --- a/catroid/src/main/java/org/catrobat/catroid/io/SoundManager.java +++ b/catroid/src/main/java/org/catrobat/catroid/io/SoundManager.java @@ -23,6 +23,7 @@ package org.catrobat.catroid.io; import android.media.MediaPlayer; +import android.support.annotation.VisibleForTesting; import android.util.Log; import java.util.ArrayList; @@ -41,7 +42,7 @@ public class SoundManager { private final List mediaPlayers = new ArrayList(MAX_MEDIA_PLAYERS); private float volume = 70.0f; - protected SoundManager() { + public SoundManager() { } public static SoundManager getInstance() { @@ -145,4 +146,9 @@ public synchronized void stopAllSounds() { } } } + + @VisibleForTesting + public List getMediaPlayers() { + return mediaPlayers; + } } diff --git a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetPhysicsObjectTypeBrick.java b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetPhysicsObjectTypeBrick.java index 4c7b217b86f..e495da5759f 100644 --- a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetPhysicsObjectTypeBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetPhysicsObjectTypeBrick.java @@ -23,6 +23,7 @@ package org.catrobat.catroid.physics.content.bricks; import android.content.Context; +import android.support.annotation.VisibleForTesting; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; @@ -118,4 +119,9 @@ public List addActionToSequence(Sprite sprite, ScriptSeque sequence.addAction(sprite.getActionFactory().createSetPhysicsObjectTypeAction(sprite, type)); return null; } + + @VisibleForTesting + public PhysicsObject.Type getType() { + return type; + } } From 1a0869a17e6932403e21a9be88b51bd9de476ac0 Mon Sep 17 00:00:00 2001 From: Thomas Schranz Date: Fri, 27 Jul 2018 11:37:43 +0200 Subject: [PATCH 14/67] [GSoC18] Refactored Clones of Bricks/Scripts - added Tests to verify clone behaviour - Bricks now correctly override super.clone() if necessary which means: + commentOut state is correctly adapted on cloning + x.getClass() == x.clone().getClass is true. + all clone methods work consistantly (no more deep/shallow mixture) - ScriptBricks are now always linked to their scripts + no more duplicate creation of ScriptBricks or Scripts in the getBrick() / getScript() methods. - removed side magic where scripts where initialized through getScriptSafe(), which was not even implemented consistantly. --- .../content/bricks/CloneScriptBrickTest.java | 142 ++++++++++++++ .../test/content/script/CloneScriptTest.java | 176 ++++++++++++++++++ .../script/WhenConditionScriptTest.java | 2 +- .../test/physics/PhysicsBricksCloneTest.java | 4 +- .../test/physics/PhysicsSpriteCloneTest.java | 4 +- ...AndWaitForDeletedClonesRegressionTest.java | 3 - ...oadcastForDeletedClonesRegressionTest.java | 3 - .../DisabledBrickInClonesRegressionTest.java | 2 +- .../catroid/content/BroadcastScript.java | 17 +- .../catroid/content/CollisionScript.java | 13 +- .../catroid/content/RaspiInterruptScript.java | 13 +- .../org/catrobat/catroid/content/Script.java | 94 ++++++---- .../catrobat/catroid/content/StartScript.java | 20 +- .../content/WhenBackgroundChangesScript.java | 13 +- .../catroid/content/WhenClonedScript.java | 13 +- .../catroid/content/WhenConditionScript.java | 23 +-- .../content/WhenGamepadButtonScript.java | 21 +-- .../catroid/content/WhenNfcScript.java | 13 +- .../catrobat/catroid/content/WhenScript.java | 21 +-- .../catroid/content/WhenTouchDownScript.java | 13 +- .../bricks/AddItemToUserListBrick.java | 13 +- .../bricks/ArduinoSendDigitalValueBrick.java | 13 +- .../bricks/ArduinoSendPWMValueBrick.java | 11 +- .../catroid/content/bricks/AskBrick.java | 13 +- .../content/bricks/AskSpeechBrick.java | 13 +- .../catroid/content/bricks/BrickBaseType.java | 21 ++- .../content/bricks/BroadcastBrick.java | 5 - .../content/bricks/BroadcastMessageBrick.java | 15 +- .../bricks/BroadcastReceiverBrick.java | 42 +++-- .../content/bricks/BroadcastWaitBrick.java | 5 - .../catroid/content/bricks/CameraBrick.java | 8 +- .../bricks/ChangeBrightnessByNBrick.java | 14 +- .../content/bricks/ChangeColorByNBrick.java | 15 +- .../content/bricks/ChangeSizeByNBrick.java | 15 +- .../content/bricks/ChangeVariableBrick.java | 5 - .../content/bricks/ChangeVolumeByNBrick.java | 15 +- .../content/bricks/ChangeXByNBrick.java | 13 +- .../content/bricks/ChangeYByNBrick.java | 14 +- .../content/bricks/ClearBackgroundBrick.java | 21 --- .../bricks/ClearGraphicEffectBrick.java | 6 +- .../catroid/content/bricks/CloneBrick.java | 17 +- .../content/bricks/ComeToFrontBrick.java | 6 +- .../bricks/DeleteItemOfUserListBrick.java | 5 - .../content/bricks/DeleteThisCloneBrick.java | 6 +- .../catroid/content/bricks/ForeverBrick.java | 11 +- .../catroid/content/bricks/FormulaBrick.java | 17 +- .../content/bricks/GoNStepsBackBrick.java | 17 +- .../catroid/content/bricks/GoToBrick.java | 14 +- .../catroid/content/bricks/HideBrick.java | 7 +- .../catroid/content/bricks/HideTextBrick.java | 8 +- .../content/bricks/IfLogicBeginBrick.java | 33 ++-- .../content/bricks/IfLogicElseBrick.java | 28 +-- .../content/bricks/IfLogicEndBrick.java | 27 +-- .../content/bricks/IfOnEdgeBounceBrick.java | 5 - .../content/bricks/IfThenLogicBeginBrick.java | 9 +- .../content/bricks/IfThenLogicEndBrick.java | 7 +- .../bricks/InsertItemIntoUserListBrick.java | 19 +- .../catroid/content/bricks/LoopEndBrick.java | 21 +-- .../content/bricks/LoopEndlessBrick.java | 5 - .../catroid/content/bricks/NestingBrick.java | 2 +- .../catroid/content/bricks/NextLookBrick.java | 9 +- .../catroid/content/bricks/NoteBrick.java | 10 +- .../catroid/content/bricks/PenDownBrick.java | 20 -- .../catroid/content/bricks/PenUpBrick.java | 21 --- .../bricks/PhiroIfLogicBeginBrick.java | 22 +-- .../bricks/PhiroMotorMoveBackwardBrick.java | 19 +- .../bricks/PhiroMotorMoveForwardBrick.java | 9 +- .../content/bricks/PhiroRGBLightBrick.java | 25 +-- .../catroid/content/bricks/PlaceAtBrick.java | 24 +-- .../content/bricks/PlaySoundAndWaitBrick.java | 7 - .../content/bricks/PlaySoundBrick.java | 10 +- .../content/bricks/PointInDirectionBrick.java | 14 +- .../catroid/content/bricks/PointToBrick.java | 11 +- .../content/bricks/PreviousLookBrick.java | 21 +-- .../bricks/RaspiIfLogicBeginBrick.java | 11 -- .../catroid/content/bricks/RepeatBrick.java | 18 +- .../content/bricks/RepeatUntilBrick.java | 17 +- .../bricks/ReplaceItemInUserListBrick.java | 19 +- .../content/bricks/SceneStartBrick.java | 10 +- .../content/bricks/SceneTransitionBrick.java | 10 +- .../catroid/content/bricks/ScriptBrick.java | 2 +- .../bricks/SetBackgroundAndWaitBrick.java | 7 - .../content/bricks/SetBackgroundBrick.java | 7 - .../content/bricks/SetBrightnessBrick.java | 9 +- .../catroid/content/bricks/SetColorBrick.java | 8 +- .../catroid/content/bricks/SetLookBrick.java | 18 +- .../content/bricks/SetLookByIndexBrick.java | 10 +- .../content/bricks/SetPenColorBrick.java | 27 +-- .../content/bricks/SetRotationStyleBrick.java | 16 +- .../catroid/content/bricks/SetTextBrick.java | 27 +-- .../content/bricks/SetVariableBrick.java | 13 +- .../catroid/content/bricks/SetXBrick.java | 9 +- .../catroid/content/bricks/SetYBrick.java | 9 +- .../catroid/content/bricks/ShowBrick.java | 6 +- .../catroid/content/bricks/StampBrick.java | 21 --- .../content/bricks/StopAllSoundsBrick.java | 6 +- .../content/bricks/StopScriptBrick.java | 40 ++-- .../catroid/content/bricks/UserBrick.java | 6 +- .../bricks/UserScriptDefinitionBrick.java | 14 +- .../content/bricks/WaitUntilBrick.java | 9 +- .../bricks/WhenBackgroundChangesBrick.java | 48 +++-- .../catroid/content/bricks/WhenBrick.java | 35 ++-- .../content/bricks/WhenClonedBrick.java | 26 +-- .../content/bricks/WhenConditionBrick.java | 37 ++-- .../bricks/WhenGamepadButtonBrick.java | 18 +- .../catroid/content/bricks/WhenNfcBrick.java | 66 +++---- .../bricks/WhenRaspiPinChangedBrick.java | 20 +- .../content/bricks/WhenStartedBrick.java | 31 +-- .../content/bricks/WhenTouchDownBrick.java | 28 ++- .../bricks/CollisionReceiverBrick.java | 31 ++- .../content/bricks/SetBounceBrick.java | 7 +- .../content/bricks/SetFrictionBrick.java | 15 +- .../content/bricks/SetGravityBrick.java | 12 +- .../physics/content/bricks/SetMassBrick.java | 15 +- .../bricks/SetPhysicsObjectTypeBrick.java | 12 +- .../content/bricks/SetVelocityBrick.java | 11 +- .../content/bricks/TurnLeftSpeedBrick.java | 16 +- .../content/bricks/TurnRightSpeedBrick.java | 20 +- .../catroid/ui/adapter/BrickAdapter.java | 34 ++-- .../catroid/ui/fragment/AddBrickFragment.java | 15 +- .../CategoryBeginnerBricksFactory.java | 2 +- .../ui/fragment/CategoryBricksFactory.java | 7 +- .../catroid/ui/fragment/ScriptFragment.java | 8 +- .../controller/ScriptController.java | 2 +- 124 files changed, 984 insertions(+), 1254 deletions(-) create mode 100644 catroid/src/androidTest/java/org/catrobat/catroid/test/content/bricks/CloneScriptBrickTest.java create mode 100644 catroid/src/androidTest/java/org/catrobat/catroid/test/content/script/CloneScriptTest.java diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/bricks/CloneScriptBrickTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/bricks/CloneScriptBrickTest.java new file mode 100644 index 00000000000..e71556b06f1 --- /dev/null +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/bricks/CloneScriptBrickTest.java @@ -0,0 +1,142 @@ +/* + * Catroid: An on-device visual programming system for Android devices + * Copyright (C) 2010-2018 The Catrobat Team + * () + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * An additional term exception under section 7 of the GNU Affero + * General Public License, version 3, is available at + * http://developer.catrobat.org/license_additional_term + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package org.catrobat.catroid.test.content.bricks; + +import org.catrobat.catroid.common.BrickValues; +import org.catrobat.catroid.common.NfcTagData; +import org.catrobat.catroid.content.BroadcastScript; +import org.catrobat.catroid.content.CollisionScript; +import org.catrobat.catroid.content.RaspiInterruptScript; +import org.catrobat.catroid.content.Script; +import org.catrobat.catroid.content.StartScript; +import org.catrobat.catroid.content.WhenBackgroundChangesScript; +import org.catrobat.catroid.content.WhenClonedScript; +import org.catrobat.catroid.content.WhenConditionScript; +import org.catrobat.catroid.content.WhenGamepadButtonScript; +import org.catrobat.catroid.content.WhenNfcScript; +import org.catrobat.catroid.content.WhenScript; +import org.catrobat.catroid.content.WhenTouchDownScript; +import org.catrobat.catroid.content.bricks.ScriptBrick; +import org.junit.Test; + +import static junit.framework.Assert.assertNotSame; +import static junit.framework.Assert.assertSame; + +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +public class CloneScriptBrickTest { + + @Test + public void testCloneBroadcastReceiverBrick() throws CloneNotSupportedException { + BroadcastScript script = new BroadcastScript("broadCastMessage"); + ScriptBrick brick = script.getScriptBrick(); + assertIsClone((ScriptBrick) brick.clone(), brick); + } + + @Test + public void testCloneCollisionReceiverBrick() throws CloneNotSupportedException { + CollisionScript script = new CollisionScript(null); + ScriptBrick brick = script.getScriptBrick(); + assertIsClone((ScriptBrick) brick.clone(), brick); + } + + @Test + public void testCloneWhenRaspiPinChangedBrick() throws CloneNotSupportedException { + RaspiInterruptScript script = new RaspiInterruptScript( + Integer.toString(BrickValues.RASPI_DIGITAL_INITIAL_PIN_NUMBER), BrickValues.RASPI_EVENTS[0]); + ScriptBrick brick = script.getScriptBrick(); + assertIsClone((ScriptBrick) brick.clone(), brick); + } + + @Test + public void testCloneWhenStartedBrick() throws CloneNotSupportedException { + StartScript script = new StartScript(); + ScriptBrick brick = script.getScriptBrick(); + assertIsClone((ScriptBrick) brick.clone(), brick); + } + + @Test + public void testCloneWhenBackgroundChangesBrick() throws CloneNotSupportedException { + WhenBackgroundChangesScript script = new WhenBackgroundChangesScript(); + ScriptBrick brick = script.getScriptBrick(); + assertIsClone((ScriptBrick) brick.clone(), brick); + } + + @Test + public void testCloneWhenClonedBrick() throws CloneNotSupportedException { + WhenClonedScript script = new WhenClonedScript(); + ScriptBrick brick = script.getScriptBrick(); + assertIsClone((ScriptBrick) brick.clone(), brick); + } + + @Test + public void testCloneWhenConditionBrick() throws CloneNotSupportedException { + WhenConditionScript script = new WhenConditionScript(); + ScriptBrick brick = script.getScriptBrick(); + assertIsClone((ScriptBrick) brick.clone(), brick); + } + + @Test + public void testCloneWhenGamepadButtonBrick() throws CloneNotSupportedException { + WhenGamepadButtonScript script = new WhenGamepadButtonScript("cast_gamepad_A"); + ScriptBrick brick = script.getScriptBrick(); + assertIsClone((ScriptBrick) brick.clone(), brick); + } + + @Test + public void testCloneWhenNfcBrick() throws CloneNotSupportedException { + WhenNfcScript script = new WhenNfcScript(new NfcTagData()); + ScriptBrick brick = script.getScriptBrick(); + assertIsClone((ScriptBrick) brick.clone(), brick); + } + + @Test + public void testCloneWhenBrick() throws CloneNotSupportedException { + WhenScript script = new WhenScript(); + ScriptBrick brick = script.getScriptBrick(); + assertIsClone((ScriptBrick) brick.clone(), brick); + } + + @Test + public void testCloneWhenTouchDownBrick() throws CloneNotSupportedException { + WhenTouchDownScript script = new WhenTouchDownScript(); + ScriptBrick brick = script.getScriptBrick(); + assertIsClone((ScriptBrick) brick.clone(), brick); + } + + private void assertIsClone(ScriptBrick clone, ScriptBrick brick) { + assertNotSame(clone, brick); + + Script cloneScript = clone.getScript(); + Script originalScript = brick.getScript(); + + assertThat(cloneScript, is(instanceOf(originalScript.getClass()))); + assertNotSame(cloneScript, originalScript); + + assertSame(clone.getScript().getScriptBrick(), clone); + assertSame(brick.getScript().getScriptBrick(), brick); + } +} diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/script/CloneScriptTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/script/CloneScriptTest.java new file mode 100644 index 00000000000..8a3bb0baf85 --- /dev/null +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/script/CloneScriptTest.java @@ -0,0 +1,176 @@ +/* + * Catroid: An on-device visual programming system for Android devices + * Copyright (C) 2010-2018 The Catrobat Team + * () + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * An additional term exception under section 7 of the GNU Affero + * General Public License, version 3, is available at + * http://developer.catrobat.org/license_additional_term + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package org.catrobat.catroid.test.content.script; + +import android.support.test.runner.AndroidJUnit4; + +import org.catrobat.catroid.common.BrickValues; +import org.catrobat.catroid.common.NfcTagData; +import org.catrobat.catroid.content.BroadcastScript; +import org.catrobat.catroid.content.CollisionScript; +import org.catrobat.catroid.content.RaspiInterruptScript; +import org.catrobat.catroid.content.Script; +import org.catrobat.catroid.content.StartScript; +import org.catrobat.catroid.content.WhenBackgroundChangesScript; +import org.catrobat.catroid.content.WhenClonedScript; +import org.catrobat.catroid.content.WhenConditionScript; +import org.catrobat.catroid.content.WhenGamepadButtonScript; +import org.catrobat.catroid.content.WhenNfcScript; +import org.catrobat.catroid.content.WhenScript; +import org.catrobat.catroid.content.WhenTouchDownScript; +import org.catrobat.catroid.content.bricks.Brick; +import org.catrobat.catroid.content.bricks.SetXBrick; +import org.catrobat.catroid.content.bricks.SetYBrick; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.util.List; + +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertNotSame; +import static junit.framework.Assert.assertSame; + +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +@RunWith(AndroidJUnit4.class) +public class CloneScriptTest { + + @Test + public void testCloneBroadcastScript() throws CloneNotSupportedException { + BroadcastScript script = new BroadcastScript("broadCastMessage"); + script.getScriptBrick(); // side magic + addBricksToScript(script); + assertIsClone(script.clone(), script); + } + + @Test + public void testCloneCollisionScript() throws CloneNotSupportedException { + CollisionScript script = new CollisionScript(null); + script.getScriptBrick(); // side magic + addBricksToScript(script); + assertIsClone(script.clone(), script); + } + + @Test + public void testCloneRaspiInterruptScript() throws CloneNotSupportedException { + RaspiInterruptScript script = new RaspiInterruptScript( + Integer.toString(BrickValues.RASPI_DIGITAL_INITIAL_PIN_NUMBER), BrickValues.RASPI_EVENTS[0]); + script.getScriptBrick(); // side magic + addBricksToScript(script); + assertIsClone(script.clone(), script); + } + + @Test + public void testCloneStartScript() throws CloneNotSupportedException { + StartScript script = new StartScript(); + script.getScriptBrick(); // side magic + addBricksToScript(script); + assertIsClone(script.clone(), script); + } + + @Test + public void testCloneWhenBackgroundChangesScript() throws CloneNotSupportedException { + WhenBackgroundChangesScript script = new WhenBackgroundChangesScript(); + script.getScriptBrick(); // side magic + addBricksToScript(script); + assertIsClone(script.clone(), script); + } + + @Test + public void testCloneWhenClonedScript() throws CloneNotSupportedException { + WhenClonedScript script = new WhenClonedScript(); + script.getScriptBrick(); // side magic + addBricksToScript(script); + assertIsClone(script.clone(), script); + } + + @Test + public void testCloneWhenConditionScript() throws CloneNotSupportedException { + WhenConditionScript script = new WhenConditionScript(); + script.getScriptBrick(); // side magic + addBricksToScript(script); + assertIsClone(script.clone(), script); + } + + @Test + public void testCloneWhenGamepadButtonScript() throws CloneNotSupportedException { + WhenGamepadButtonScript script = new WhenGamepadButtonScript("cast_gamepad_A"); + script.getScriptBrick(); // side magic + addBricksToScript(script); + assertIsClone(script.clone(), script); + } + + @Test + public void testCloneWhenNfcScript() throws CloneNotSupportedException { + WhenNfcScript script = new WhenNfcScript(new NfcTagData()); + script.getScriptBrick(); // side magic + addBricksToScript(script); + assertIsClone(script.clone(), script); + } + + @Test + public void testCloneWhenScript() throws CloneNotSupportedException { + WhenScript script = new WhenScript(); + script.getScriptBrick(); // side magic + addBricksToScript(script); + assertIsClone(script.clone(), script); + } + + @Test + public void testCloneWhenTouchDownScript() throws CloneNotSupportedException { + WhenTouchDownScript script = new WhenTouchDownScript(); + script.getScriptBrick(); // side magic + addBricksToScript(script); + assertIsClone(script.clone(), script); + } + + private void addBricksToScript(Script script) { + script.addBrick(new SetXBrick(100)); + script.addBrick(new SetYBrick(100)); + } + + private void assertIsClone(Script clone, Script script) { + assertNotSame(clone, script); + assertNotSame(clone.getScriptBrick(), script.getScriptBrick()); + + assertNotSame(clone.getScriptBrick().getScript(), script.getScriptBrick().getScript()); + + assertSame(clone.getScriptBrick().getScript(), clone); + assertSame(script.getScriptBrick().getScript(), script); + + List cloneBrickList = clone.getBrickList(); + List scriptBrickList = script.getBrickList(); + + assertEquals(cloneBrickList.size(), scriptBrickList.size()); + + for (int i = 0; i < cloneBrickList.size(); i++) { + Brick clonedBrick = cloneBrickList.get(i); + Brick originalBrick = scriptBrickList.get(i); + assertThat(clonedBrick, is(instanceOf(originalBrick.getClass()))); + assertNotSame(clonedBrick, originalBrick); + } + } +} diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/script/WhenConditionScriptTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/script/WhenConditionScriptTest.java index 23561b6fdc2..192e77b4e8d 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/script/WhenConditionScriptTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/script/WhenConditionScriptTest.java @@ -62,7 +62,7 @@ public void setUp() throws InterpretationException { formula = Mockito.mock(Formula.class); WhenConditionBrick whenConditionBrick = new WhenConditionBrick(formula); - conditionScript = (WhenConditionScript) whenConditionBrick.getScriptSafe(); + conditionScript = (WhenConditionScript) whenConditionBrick.getScript(); sprite.addScript(conditionScript); } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsBricksCloneTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsBricksCloneTest.java index ad3a6a73333..93758d0d8ff 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsBricksCloneTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsBricksCloneTest.java @@ -94,8 +94,8 @@ public void testCloneCollisionReceiverBrick() throws Exception { Brick brick = new CollisionReceiverBrick(new CollisionScript(null)); Brick clonedBrick = brick.clone(); - CollisionScript brickReceiverScript = (CollisionScript) ((CollisionReceiverBrick) brick).getScriptSafe(); - CollisionScript clonedBrickReceiverScript = (CollisionScript) ((CollisionReceiverBrick) clonedBrick).getScriptSafe(); + CollisionScript brickReceiverScript = (CollisionScript) ((CollisionReceiverBrick) brick).getScript(); + CollisionScript clonedBrickReceiverScript = (CollisionScript) ((CollisionReceiverBrick) clonedBrick).getScript(); assertNotSame(brickReceiverScript, clonedBrickReceiverScript); } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsSpriteCloneTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsSpriteCloneTest.java index c68cf55632e..65a20808581 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsSpriteCloneTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/PhysicsSpriteCloneTest.java @@ -39,7 +39,6 @@ import org.catrobat.catroid.content.bricks.Brick; import org.catrobat.catroid.content.bricks.FormulaBrick; import org.catrobat.catroid.content.bricks.ScriptBrick; -import org.catrobat.catroid.content.bricks.WhenStartedBrick; import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.formulaeditor.InterpretationException; import org.catrobat.catroid.io.ResourceImporter; @@ -186,8 +185,7 @@ public void testSpriteCloneWithCollisionScript() throws IOException, Interpretat @Test public void testSpriteClonePhysicsLookAndPhysicsObject() throws IOException { - WhenStartedBrick brick = new WhenStartedBrick(); - StartScript startScript = new StartScript(brick); + StartScript startScript = new StartScript(); Brick setPhysicsObjectTypeBrick = new SetPhysicsObjectTypeBrick(TYPE_TEST_VALUE); startScript.addBrick(setPhysicsObjectTypeBrick); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/BroadcastAndWaitForDeletedClonesRegressionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/BroadcastAndWaitForDeletedClonesRegressionTest.java index dc2b0b1c076..181ecc5f471 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/BroadcastAndWaitForDeletedClonesRegressionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/BroadcastAndWaitForDeletedClonesRegressionTest.java @@ -52,7 +52,6 @@ public class BroadcastAndWaitForDeletedClonesRegressionTest { private static final String BROADCAST_MESSAGE_1 = "message1"; private ScriptEvaluationGateBrick broadCastReceived; - private ScriptEvaluationGateBrick cloneDeleted; @Rule public BaseActivityInstrumentationRule baseActivityTestRule = new @@ -67,7 +66,6 @@ public void setUp() throws Exception { @Test public void testBroadcastsAndWaitToDeletedClones() { baseActivityTestRule.launchActivity(null); - cloneDeleted.waitUntilEvaluated(3000); broadCastReceived.waitUntilEvaluated(3000); } @@ -85,7 +83,6 @@ private void createProject() { Script whenStartAsCloneScript = new WhenClonedScript(); whenStartAsCloneScript.addBrick(new DeleteThisCloneBrick()); sprite.addScript(whenStartAsCloneScript); - cloneDeleted = ScriptEvaluationGateBrick.appendToScript(whenStartAsCloneScript); Script broadcastReceiveScript = new BroadcastScript(BROADCAST_MESSAGE_1); sprite.addScript(broadcastReceiveScript); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/BroadcastForDeletedClonesRegressionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/BroadcastForDeletedClonesRegressionTest.java index aadeec7c62c..f0caaf30a45 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/BroadcastForDeletedClonesRegressionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/BroadcastForDeletedClonesRegressionTest.java @@ -52,7 +52,6 @@ public class BroadcastForDeletedClonesRegressionTest { private static final String BROADCAST_MESSAGE_1 = "message1"; private ScriptEvaluationGateBrick broadCastReceived; - private ScriptEvaluationGateBrick cloneDeleted; @Rule public BaseActivityInstrumentationRule baseActivityTestRule = new @@ -67,7 +66,6 @@ public void setUp() throws Exception { @Test public void testBroadcastsToDeletedClones() { baseActivityTestRule.launchActivity(null); - cloneDeleted.waitUntilEvaluated(3000); broadCastReceived.waitUntilEvaluated(3000); } @@ -85,7 +83,6 @@ private void createProject() { Script whenStartAsCloneScript = new WhenClonedScript(); whenStartAsCloneScript.addBrick(new DeleteThisCloneBrick()); sprite.addScript(whenStartAsCloneScript); - cloneDeleted = ScriptEvaluationGateBrick.appendToScript(whenStartAsCloneScript); Script broadcastReceiveScript = new BroadcastScript(BROADCAST_MESSAGE_1); sprite.addScript(broadcastReceiveScript); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/DisabledBrickInClonesRegressionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/DisabledBrickInClonesRegressionTest.java index 28beef4cf08..27f0d2f4cb3 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/DisabledBrickInClonesRegressionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/stage/DisabledBrickInClonesRegressionTest.java @@ -88,7 +88,7 @@ private void createProject() { startScript.addBrick(new CloneBrick()); Script whenClonedScript = new WhenClonedScript(); - sprite.addScript(startScript); + sprite.addScript(whenClonedScript); Brick shouldntBeExecuted = new SetVariableBrick(new Formula(9000.1D), userVariable); shouldntBeExecuted.setCommentedOut(true); whenClonedScript.addBrick(shouldntBeExecuted); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/BroadcastScript.java b/catroid/src/main/java/org/catrobat/catroid/content/BroadcastScript.java index d1efa7c22c6..120a57fcec7 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/BroadcastScript.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/BroadcastScript.java @@ -32,16 +32,16 @@ public class BroadcastScript extends Script { private static final long serialVersionUID = 1L; private String receivedMessage; - public BroadcastScript(String broadcastMessage) { - this.receivedMessage = broadcastMessage; + public BroadcastScript(String receivedMessage) { + this.receivedMessage = receivedMessage; } @Override public ScriptBrick getScriptBrick() { - if (brick == null) { - brick = new BroadcastReceiverBrick(this); + if (scriptBrick == null) { + scriptBrick = new BroadcastReceiverBrick(this); } - return brick; + return scriptBrick; } public String getBroadcastMessage() { @@ -52,13 +52,6 @@ public void setBroadcastMessage(String broadcastMessage) { this.receivedMessage = broadcastMessage; } - @Override - public Script clone() throws CloneNotSupportedException { - BroadcastScript clone = new BroadcastScript(receivedMessage); - clone.getBrickList().addAll(cloneBrickList()); - return clone; - } - @Override public EventId createEventId(Sprite sprite) { return new BroadcastEventId(receivedMessage); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/CollisionScript.java b/catroid/src/main/java/org/catrobat/catroid/content/CollisionScript.java index 33e7e623ec7..54e3477b9ff 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/CollisionScript.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/CollisionScript.java @@ -41,17 +41,10 @@ public CollisionScript(String spriteToCollideWithName) { @Override public ScriptBrick getScriptBrick() { - if (brick == null) { - brick = new CollisionReceiverBrick(this); + if (scriptBrick == null) { + scriptBrick = new CollisionReceiverBrick(this); } - return brick; - } - - @Override - public Script clone() throws CloneNotSupportedException { - CollisionScript clone = new CollisionScript(spriteToCollideWithName); - clone.getBrickList().addAll(cloneBrickList()); - return clone; + return scriptBrick; } public String getSpriteToCollideWithName() { diff --git a/catroid/src/main/java/org/catrobat/catroid/content/RaspiInterruptScript.java b/catroid/src/main/java/org/catrobat/catroid/content/RaspiInterruptScript.java index 0b33cef9bcd..381956e4b33 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/RaspiInterruptScript.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/RaspiInterruptScript.java @@ -39,10 +39,10 @@ public RaspiInterruptScript(String pin, String eventValue) { @Override public ScriptBrick getScriptBrick() { - if (brick == null) { - brick = new WhenRaspiPinChangedBrick(this); + if (scriptBrick == null) { + scriptBrick = new WhenRaspiPinChangedBrick(this); } - return brick; + return scriptBrick; } public void setPin(String pin) { @@ -61,13 +61,6 @@ public String getEventValue() { return eventValue; } - @Override - public Script clone() throws CloneNotSupportedException { - RaspiInterruptScript clone = new RaspiInterruptScript(pin, eventValue); - clone.getBrickList().addAll(cloneBrickList()); - return clone; - } - @Override public EventId createEventId(Sprite sprite) { return new RaspiEventId(pin, eventValue); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/Script.java b/catroid/src/main/java/org/catrobat/catroid/content/Script.java index 1d7a2d7bf13..10720b44c3e 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/Script.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/Script.java @@ -39,31 +39,35 @@ import java.util.ArrayList; import java.util.List; -public abstract class Script implements Serializable { +public abstract class Script implements Serializable, Cloneable { private static final long serialVersionUID = 1L; protected ArrayList brickList = new ArrayList<>(); protected boolean commentedOut = false; - protected transient ScriptBrick brick; + protected transient ScriptBrick scriptBrick; public ArrayList getBrickList() { return brickList; } - @Override - public abstract Script clone() throws CloneNotSupportedException; - public abstract EventId createEventId(Sprite sprite); - public List cloneBrickList() throws CloneNotSupportedException { - List copies = new ArrayList<>(); + @Override + public Script clone() throws CloneNotSupportedException { + Script clone = (Script) super.clone(); + clone.commentedOut = commentedOut; + clone.scriptBrick = null; + clone.brickList = cloneBrickList(); + return clone; + } + + private ArrayList cloneBrickList() throws CloneNotSupportedException { + ArrayList clones = new ArrayList<>(); for (Brick brick : brickList) { - Brick clone = brick.clone(); - clone.setCommentedOut(brick.isCommentedOut()); - copies.add(clone); + clones.add(brick.clone()); } for (Brick brick : brickList) { @@ -77,8 +81,8 @@ public List cloneBrickList() throws CloneNotSupportedException { continue; } - LoopBeginBrick beginBrick = (LoopBeginBrick) copies.get(begin); - LoopEndBrick endBrick = (LoopEndBrick) copies.get(end); + LoopBeginBrick beginBrick = (LoopBeginBrick) clones.get(begin); + LoopEndBrick endBrick = (LoopEndBrick) clones.get(end); beginBrick.setLoopEndBrick(endBrick); endBrick.setLoopBeginBrick(beginBrick); @@ -87,8 +91,8 @@ public List cloneBrickList() throws CloneNotSupportedException { int begin = brickList.indexOf(brick); int end = brickList.indexOf(((IfThenLogicBeginBrick) brick).getIfThenEndBrick()); - IfThenLogicBeginBrick beginBrick = (IfThenLogicBeginBrick) copies.get(begin); - IfThenLogicEndBrick endBrick = (IfThenLogicEndBrick) copies.get(end); + IfThenLogicBeginBrick beginBrick = (IfThenLogicBeginBrick) clones.get(begin); + IfThenLogicEndBrick endBrick = (IfThenLogicEndBrick) clones.get(end); beginBrick.setIfThenEndBrick(endBrick); endBrick.setIfThenBeginBrick(beginBrick); @@ -103,9 +107,9 @@ public List cloneBrickList() throws CloneNotSupportedException { continue; } - IfLogicBeginBrick beginBrick = (IfLogicBeginBrick) copies.get(begin); - IfLogicElseBrick elseBrick = (IfLogicElseBrick) copies.get(middle); - IfLogicEndBrick endBrick = (IfLogicEndBrick) copies.get(end); + IfLogicBeginBrick beginBrick = (IfLogicBeginBrick) clones.get(begin); + IfLogicElseBrick elseBrick = (IfLogicElseBrick) clones.get(middle); + IfLogicEndBrick endBrick = (IfLogicEndBrick) clones.get(end); beginBrick.setIfElseBrick(elseBrick); beginBrick.setIfEndBrick(endBrick); @@ -116,23 +120,42 @@ public List cloneBrickList() throws CloneNotSupportedException { } } - return copies; + return clones; + } + + public boolean isCommentedOut() { + return commentedOut; + } + + public void setCommentedOut(boolean commentedOut) { + this.commentedOut = commentedOut; + for (Brick brick : brickList) { + brick.setCommentedOut(commentedOut); + } } public abstract ScriptBrick getScriptBrick(); + public void setScriptBrick(ScriptBrick scriptBrick) { + this.scriptBrick = scriptBrick; + } + public void run(Sprite sprite, ScriptSequenceAction sequence) { - if (this.isCommentedOut()) { + if (commentedOut) { return; } ArrayList sequenceList = new ArrayList<>(); sequenceList.add(sequence); - for (int i = 0; i < brickList.size(); i++) { - if (brickList.get(i).isCommentedOut()) { + + for (Brick brick : brickList) { + if (brick.isCommentedOut()) { continue; } - List actions = brickList.get(i).addActionToSequence(sprite, sequenceList.get(sequenceList.size() - 1)); + + List actions = brick + .addActionToSequence(sprite, sequenceList.get(sequenceList.size() - 1)); + if (actions != null) { for (ScriptSequenceAction action : actions) { if (sequenceList.contains(action)) { @@ -155,6 +178,14 @@ public void addBrick(int position, Brick brick) { updateUserBricksIfNecessary(brick); } + public Brick getBrick(int index) { + return brickList.get(index); + } + + public void removeBrick(Brick brick) { + brickList.remove(brick); + } + private void updateUserBricksIfNecessary(Brick brick) { if (brick instanceof UserBrick) { UserBrick userBrick = (UserBrick) brick; @@ -162,10 +193,6 @@ private void updateUserBricksIfNecessary(Brick brick) { } } - public void removeBrick(Brick brick) { - brickList.remove(brick); - } - public int getRequiredResources() { int resources = Brick.NO_RESOURCES; @@ -177,21 +204,6 @@ public int getRequiredResources() { return resources; } - public Brick getBrick(int index) { - return brickList.get(index); - } - - public boolean isCommentedOut() { - return commentedOut; - } - - public void setCommentedOut(boolean commentedOut) { - this.commentedOut = commentedOut; - for (Brick brick : brickList) { - brick.setCommentedOut(commentedOut); - } - } - public List getBricksRequiringResources(int resource) { List resourceBrickList = new ArrayList<>(); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/StartScript.java b/catroid/src/main/java/org/catrobat/catroid/content/StartScript.java index 02d88616e7d..bd341c5487a 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/StartScript.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/StartScript.java @@ -30,27 +30,13 @@ public class StartScript extends Script { private static final long serialVersionUID = 1L; - public StartScript() { - } - - public StartScript(WhenStartedBrick brick) { - this.brick = brick; - } - @Override public ScriptBrick getScriptBrick() { - if (brick == null) { - brick = new WhenStartedBrick(this); + if (scriptBrick == null) { + scriptBrick = new WhenStartedBrick(this); } - return brick; - } - - @Override - public Script clone() throws CloneNotSupportedException { - Script clone = new StartScript(); - clone.getBrickList().addAll(cloneBrickList()); - return clone; + return scriptBrick; } @Override diff --git a/catroid/src/main/java/org/catrobat/catroid/content/WhenBackgroundChangesScript.java b/catroid/src/main/java/org/catrobat/catroid/content/WhenBackgroundChangesScript.java index 6ccebd3a4ab..624c7da31f9 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/WhenBackgroundChangesScript.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/WhenBackgroundChangesScript.java @@ -38,19 +38,12 @@ public class WhenBackgroundChangesScript extends Script { private LookData look; - @Override - public Script clone() throws CloneNotSupportedException { - WhenBackgroundChangesScript clone = new WhenBackgroundChangesScript(); - clone.getBrickList().addAll(cloneBrickList()); - return clone; - } - @Override public ScriptBrick getScriptBrick() { - if (brick == null) { - brick = new WhenBackgroundChangesBrick(this); + if (scriptBrick == null) { + scriptBrick = new WhenBackgroundChangesBrick(this); } - return brick; + return scriptBrick; } @Override diff --git a/catroid/src/main/java/org/catrobat/catroid/content/WhenClonedScript.java b/catroid/src/main/java/org/catrobat/catroid/content/WhenClonedScript.java index 1844293090a..218f3baee35 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/WhenClonedScript.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/WhenClonedScript.java @@ -32,18 +32,11 @@ public class WhenClonedScript extends Script { @Override public ScriptBrick getScriptBrick() { - if (brick == null) { - brick = new WhenClonedBrick(this); + if (scriptBrick == null) { + scriptBrick = new WhenClonedBrick(this); } - return brick; - } - - @Override - public Script clone() throws CloneNotSupportedException { - WhenClonedScript clone = new WhenClonedScript(); - clone.getBrickList().addAll(cloneBrickList()); - return clone; + return scriptBrick; } @Override diff --git a/catroid/src/main/java/org/catrobat/catroid/content/WhenConditionScript.java b/catroid/src/main/java/org/catrobat/catroid/content/WhenConditionScript.java index 52f1a13c213..ac42b42f75e 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/WhenConditionScript.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/WhenConditionScript.java @@ -22,15 +22,12 @@ */ package org.catrobat.catroid.content; -import android.util.Log; - import org.catrobat.catroid.content.bricks.Brick; import org.catrobat.catroid.content.bricks.ConcurrentFormulaHashMap; import org.catrobat.catroid.content.bricks.ScriptBrick; import org.catrobat.catroid.content.bricks.WhenConditionBrick; import org.catrobat.catroid.content.eventids.EventId; import org.catrobat.catroid.content.eventids.WhenConditionEventId; -import org.catrobat.catroid.utils.CrashReporter; import java.util.ArrayList; @@ -40,29 +37,19 @@ public class WhenConditionScript extends Script { private ConcurrentFormulaHashMap formulaMap; - public WhenConditionScript(ScriptBrick brick) { - this.brick = brick; - } - @Override public Script clone() throws CloneNotSupportedException { - WhenConditionScript clone = new WhenConditionScript(null); - try { - clone.formulaMap = formulaMap.clone(); - } catch (CloneNotSupportedException e) { - Log.e(getClass().getSimpleName(), "clone exception should never happen"); - CrashReporter.logException(e); - } - clone.getBrickList().addAll(cloneBrickList()); + WhenConditionScript clone = (WhenConditionScript) super.clone(); + clone.formulaMap = formulaMap.clone(); return clone; } @Override public ScriptBrick getScriptBrick() { - if (brick == null) { - brick = new WhenConditionBrick(this); + if (scriptBrick == null) { + scriptBrick = new WhenConditionBrick(this); } - return brick; + return scriptBrick; } public ConcurrentFormulaHashMap getFormulaMap() { diff --git a/catroid/src/main/java/org/catrobat/catroid/content/WhenGamepadButtonScript.java b/catroid/src/main/java/org/catrobat/catroid/content/WhenGamepadButtonScript.java index 460f8503df1..095d3dc5382 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/WhenGamepadButtonScript.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/WhenGamepadButtonScript.java @@ -37,20 +37,20 @@ public WhenGamepadButtonScript(String action) { this.action = action; } - public void setAction(String action) { - this.action = action; - } - public String getAction() { return action; } + public void setAction(String action) { + this.action = action; + } + @Override public ScriptBrick getScriptBrick() { - if (brick == null) { - brick = new WhenGamepadButtonBrick(this); + if (scriptBrick == null) { + scriptBrick = new WhenGamepadButtonBrick(this); } - return brick; + return scriptBrick; } @Override @@ -58,13 +58,6 @@ public int getRequiredResources() { return Brick.CAST_REQUIRED | super.getRequiredResources(); } - @Override - public Script clone() throws CloneNotSupportedException { - WhenGamepadButtonScript clone = new WhenGamepadButtonScript(action); - clone.getBrickList().addAll(cloneBrickList()); - return clone; - } - @Override public EventId createEventId(Sprite sprite) { return new GamepadEventId(action); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/WhenNfcScript.java b/catroid/src/main/java/org/catrobat/catroid/content/WhenNfcScript.java index 92d0be331f7..173dddf2c28 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/WhenNfcScript.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/WhenNfcScript.java @@ -38,13 +38,6 @@ public class WhenNfcScript extends Script { private NfcTagData nfcTag; private boolean matchAll = true; - @Override - public Script clone() throws CloneNotSupportedException { - WhenNfcScript clone = new WhenNfcScript(nfcTag); - clone.getBrickList().addAll(cloneBrickList()); - return clone; - } - public WhenNfcScript() { } @@ -54,10 +47,10 @@ public WhenNfcScript(NfcTagData nfcTag) { @Override public ScriptBrick getScriptBrick() { - if (brick == null) { - brick = new WhenNfcBrick(this); + if (scriptBrick == null) { + scriptBrick = new WhenNfcBrick(this); } - return brick; + return scriptBrick; } @Override diff --git a/catroid/src/main/java/org/catrobat/catroid/content/WhenScript.java b/catroid/src/main/java/org/catrobat/catroid/content/WhenScript.java index da24abfdb14..d128976b041 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/WhenScript.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/WhenScript.java @@ -30,27 +30,12 @@ public class WhenScript extends Script { private static final long serialVersionUID = 1L; - public WhenScript() { - } - - public WhenScript(WhenBrick brick) { - this.brick = brick; - } - @Override public ScriptBrick getScriptBrick() { - if (brick == null) { - brick = new WhenBrick(this); + if (scriptBrick == null) { + scriptBrick = new WhenBrick(this); } - - return brick; - } - - @Override - public Script clone() throws CloneNotSupportedException { - WhenScript clone = new WhenScript(); - clone.getBrickList().addAll(cloneBrickList()); - return clone; + return scriptBrick; } @Override diff --git a/catroid/src/main/java/org/catrobat/catroid/content/WhenTouchDownScript.java b/catroid/src/main/java/org/catrobat/catroid/content/WhenTouchDownScript.java index cdfabe43cff..ec42fd9e2b1 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/WhenTouchDownScript.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/WhenTouchDownScript.java @@ -33,19 +33,12 @@ public class WhenTouchDownScript extends Script { private static final long serialVersionUID = 1L; - @Override - public Script clone() throws CloneNotSupportedException { - WhenTouchDownScript clone = new WhenTouchDownScript(); - clone.getBrickList().addAll(cloneBrickList()); - return clone; - } - @Override public ScriptBrick getScriptBrick() { - if (brick == null) { - brick = new WhenTouchDownBrick(this); + if (scriptBrick == null) { + scriptBrick = new WhenTouchDownBrick(this); } - return brick; + return scriptBrick; } @Override diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/AddItemToUserListBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/AddItemToUserListBrick.java index 69b440aac6b..d4ee04c1cb9 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/AddItemToUserListBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/AddItemToUserListBrick.java @@ -72,14 +72,14 @@ public int getViewResource() { @Override public View getView(final Context context) { super.getView(context); - TextView textField = (TextView) view.findViewById(R.id.brick_add_item_to_userlist_edit_text); + TextView textField = view.findViewById(R.id.brick_add_item_to_userlist_edit_text); getFormulaWithBrickField(BrickField.LIST_ADD_ITEM).setTextFieldId(R.id.brick_add_item_to_userlist_edit_text); getFormulaWithBrickField(BrickField.LIST_ADD_ITEM).refreshTextField(view); textField.setOnClickListener(this); - Spinner userListSpinner = (Spinner) view.findViewById(R.id.add_item_to_userlist_spinner); + Spinner userListSpinner = view.findViewById(R.id.add_item_to_userlist_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyEditedScene().getDataContainer() .createDataAdapter(context, ProjectManager.getInstance().getCurrentSprite()); UserListAdapterWrapper userListAdapterWrapper = new UserListAdapterWrapper(context, dataAdapter); @@ -97,7 +97,7 @@ public View getView(final Context context) { @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - Spinner userListSpinner = (Spinner) prototypeView.findViewById(R.id.add_item_to_userlist_spinner); + Spinner userListSpinner = prototypeView.findViewById(R.id.add_item_to_userlist_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyEditedScene().getDataContainer() .createDataAdapter(context, ProjectManager.getInstance().getCurrentSprite()); @@ -108,7 +108,7 @@ public View getPrototypeView(Context context) { userListSpinner.setAdapter(userListAdapterWrapper); setSpinnerSelection(userListSpinner, null); - TextView textAddItemToList = (TextView) prototypeView.findViewById(R.id.brick_add_item_to_userlist_edit_text); + TextView textAddItemToList = prototypeView.findViewById(R.id.brick_add_item_to_userlist_edit_text); textAddItemToList.setText(formatNumberForPrototypeView(BrickValues.ADD_ITEM_TO_USERLIST)); return prototypeView; @@ -120,11 +120,6 @@ public void onNewList(UserList userList) { setSpinnerSelection(spinner, userList); } - @Override - public Brick clone() { - return new AddItemToUserListBrick(getFormulaWithBrickField(BrickField.LIST_ADD_ITEM).clone(), userList); - } - @Override public void showFormulaEditorToEditFormula(View view) { FormulaEditorFragment.showFragment(view, this, BrickField.LIST_ADD_ITEM); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ArduinoSendDigitalValueBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ArduinoSendDigitalValueBrick.java index 4c2830e3380..61f359a93b3 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ArduinoSendDigitalValueBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ArduinoSendDigitalValueBrick.java @@ -38,7 +38,6 @@ public class ArduinoSendDigitalValueBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - private transient View prototypeView; public ArduinoSendDigitalValueBrick() { addAllowedBrickField(BrickField.ARDUINO_DIGITAL_PIN_NUMBER); @@ -73,13 +72,11 @@ public int getRequiredResources() { @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); + View prototypeView = super.getPrototypeView(context); - TextView textSetPinNumber = (TextView) prototypeView.findViewById(R.id - .brick_arduino_set_digital_pin_edit_text); + TextView textSetPinNumber = prototypeView.findViewById(R.id.brick_arduino_set_digital_pin_edit_text); textSetPinNumber.setText(formatNumberForPrototypeView(BrickValues.ARDUINO_DIGITAL_INITIAL_PIN_NUMBER)); - TextView textSetPinValue = (TextView) prototypeView.findViewById(R.id - .brick_arduino_set_digital_value_edit_text); + TextView textSetPinValue = prototypeView.findViewById(R.id.brick_arduino_set_digital_value_edit_text); textSetPinValue.setText(formatNumberForPrototypeView(BrickValues.ARDUINO_DIGITAL_INITIAL_PIN_VALUE)); return prototypeView; @@ -93,13 +90,13 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - TextView editPinNumber = (TextView) view.findViewById(R.id.brick_arduino_set_digital_pin_edit_text); + TextView editPinNumber = view.findViewById(R.id.brick_arduino_set_digital_pin_edit_text); getFormulaWithBrickField(BrickField.ARDUINO_DIGITAL_PIN_NUMBER).setTextFieldId(R.id.brick_arduino_set_digital_pin_edit_text); getFormulaWithBrickField(BrickField.ARDUINO_DIGITAL_PIN_NUMBER).refreshTextField(view); editPinNumber.setOnClickListener(this); - TextView editPinValue = (TextView) view.findViewById(R.id.brick_arduino_set_digital_value_edit_text); + TextView editPinValue = view.findViewById(R.id.brick_arduino_set_digital_value_edit_text); getFormulaWithBrickField(BrickField.ARDUINO_DIGITAL_PIN_VALUE).setTextFieldId(R.id.brick_arduino_set_digital_value_edit_text); getFormulaWithBrickField(BrickField.ARDUINO_DIGITAL_PIN_VALUE).refreshTextField(view); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ArduinoSendPWMValueBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ArduinoSendPWMValueBrick.java index a21f74889e9..b8283a2251c 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ArduinoSendPWMValueBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ArduinoSendPWMValueBrick.java @@ -40,7 +40,6 @@ public class ArduinoSendPWMValueBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - private transient View prototypeView; public ArduinoSendPWMValueBrick() { addAllowedBrickField(BrickField.ARDUINO_ANALOG_PIN_NUMBER); @@ -71,11 +70,11 @@ public int getRequiredResources() { @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); + View prototypeView = super.getPrototypeView(context); - TextView textSetPinNumber = (TextView) prototypeView.findViewById(R.id.brick_arduino_set_analog_pin_edit_text); + TextView textSetPinNumber = prototypeView.findViewById(R.id.brick_arduino_set_analog_pin_edit_text); textSetPinNumber.setText(formatNumberForPrototypeView(BrickValues.ARDUINO_PWM_INITIAL_PIN_NUMBER)); - TextView textSetPinValue = (TextView) prototypeView.findViewById(R.id.brick_arduino_set_analog_value_edit_text); + TextView textSetPinValue = prototypeView.findViewById(R.id.brick_arduino_set_analog_value_edit_text); textSetPinValue.setText(formatNumberForPrototypeView(BrickValues.ARDUINO_PWM_INITIAL_PIN_VALUE)); return prototypeView; @@ -89,13 +88,13 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - TextView editPinNumber = (TextView) view.findViewById(R.id.brick_arduino_set_analog_pin_edit_text); + TextView editPinNumber = view.findViewById(R.id.brick_arduino_set_analog_pin_edit_text); getFormulaWithBrickField(BrickField.ARDUINO_ANALOG_PIN_NUMBER).setTextFieldId(R.id.brick_arduino_set_analog_pin_edit_text); getFormulaWithBrickField(BrickField.ARDUINO_ANALOG_PIN_NUMBER).refreshTextField(view); editPinNumber.setOnClickListener(this); - TextView editPinValue = (TextView) view.findViewById(R.id.brick_arduino_set_analog_value_edit_text); + TextView editPinValue = view.findViewById(R.id.brick_arduino_set_analog_value_edit_text); getFormulaWithBrickField(BrickField.ARDUINO_ANALOG_PIN_VALUE).setTextFieldId(R.id.brick_arduino_set_analog_value_edit_text); getFormulaWithBrickField(BrickField.ARDUINO_ANALOG_PIN_VALUE).refreshTextField(view); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/AskBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/AskBrick.java index 79c1b328932..4c423765c5b 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/AskBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/AskBrick.java @@ -48,12 +48,12 @@ public class AskBrick extends UserVariableBrick { private transient String defaultPrototypeToken = null; public AskBrick(Formula questionFormula, UserVariable answerVariable) { - this.userVariable = answerVariable; + userVariable = answerVariable; initializeBrickFields(questionFormula); } public AskBrick(String questionText) { - this.userVariable = null; + userVariable = null; initializeBrickFields(new Formula(questionText)); } @@ -69,8 +69,8 @@ public int getRequiredResources() { @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createAskAction(sprite, - getFormulaWithBrickField(BrickField.ASK_QUESTION), userVariable)); + sequence.addAction(sprite.getActionFactory() + .createAskAction(sprite, getFormulaWithBrickField(BrickField.ASK_QUESTION), userVariable)); return Collections.emptyList(); } @@ -137,11 +137,6 @@ public void onNewVariable(UserVariable userVariable) { setSpinnerSelection(spinner, userVariable); } - @Override - public AskBrick clone() { - return new AskBrick(getFormulaWithBrickField(BrickField.ASK_QUESTION).clone(), userVariable); - } - public void showFormulaEditorToEditFormula(View view) { FormulaEditorFragment.showFragment(view, this, BrickField.ASK_QUESTION); } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/AskSpeechBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/AskSpeechBrick.java index e0ef88fd4b2..ad031ac48b7 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/AskSpeechBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/AskSpeechBrick.java @@ -83,13 +83,13 @@ public int getViewResource() { @Override public View getView(final Context context) { super.getView(context); - TextView textField = (TextView) view.findViewById(R.id.brick_ask_speech_question_edit_text); + TextView textField = view.findViewById(R.id.brick_ask_speech_question_edit_text); getFormulaWithBrickField(BrickField.ASK_SPEECH_QUESTION).setTextFieldId(R.id.brick_ask_speech_question_edit_text); getFormulaWithBrickField(BrickField.ASK_SPEECH_QUESTION).refreshTextField(view); textField.setOnClickListener(this); - Spinner variableSpinner = (Spinner) view.findViewById(R.id.brick_ask_speech_spinner); + Spinner variableSpinner = view.findViewById(R.id.brick_ask_speech_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyPlayingScene().getDataContainer() .createDataAdapter(context, ProjectManager.getInstance().getCurrentSprite()); @@ -109,7 +109,7 @@ public View getView(final Context context) { @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - Spinner variableSpinner = (Spinner) prototypeView.findViewById(R.id.brick_ask_speech_spinner); + Spinner variableSpinner = prototypeView.findViewById(R.id.brick_ask_speech_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyPlayingScene().getDataContainer() .createDataAdapter(context, ProjectManager.getInstance().getCurrentSprite()); @@ -121,7 +121,7 @@ public View getPrototypeView(Context context) { variableSpinner.setAdapter(userVariableAdapterWrapper); setSpinnerSelection(variableSpinner, null); - TextView textSetVariable = (TextView) prototypeView.findViewById(R.id.brick_ask_speech_question_edit_text); + TextView textSetVariable = prototypeView.findViewById(R.id.brick_ask_speech_question_edit_text); if (defaultPrototypeToken != null) { int defaultValueId = InternToExternGenerator.getMappedString(defaultPrototypeToken); @@ -138,11 +138,6 @@ public void onNewVariable(UserVariable userVariable) { setSpinnerSelection(spinner, userVariable); } - @Override - public AskSpeechBrick clone() { - return new AskSpeechBrick(getFormulaWithBrickField(BrickField.ASK_SPEECH_QUESTION).clone(), userVariable); - } - public void showFormulaEditorToEditFormula(View view) { FormulaEditorFragment.showFragment(view, this, BrickField.ASK_SPEECH_QUESTION); } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/BrickBaseType.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/BrickBaseType.java index 19ec96b23b9..8f4a40bb41b 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/BrickBaseType.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/BrickBaseType.java @@ -39,10 +39,13 @@ public abstract class BrickBaseType implements Brick { private static final long serialVersionUID = 1L; + public transient View view; + protected transient CheckBox checkbox; protected transient BrickAdapter adapter; - protected transient int alphaValue = 255; + + transient int alphaValue = 255; protected boolean commentedOut; @@ -67,13 +70,18 @@ public CheckBox getCheckBox() { } @Override - public Brick clone() throws CloneNotSupportedException { - return (Brick) super.clone(); + public BrickBaseType clone() throws CloneNotSupportedException { + BrickBaseType clone = (BrickBaseType) super.clone(); + clone.view = null; + clone.checkbox = null; + clone.alphaValue = alphaValue; + clone.commentedOut = commentedOut; + return clone; } @Override - public void setAlpha(int newAlpha) { - alphaValue = newAlpha; + public void setAlpha(int alphaValue) { + this.alphaValue = alphaValue; } @Override @@ -81,7 +89,8 @@ public int getRequiredResources() { return NO_RESOURCES; } - public abstract @LayoutRes int getViewResource(); + @LayoutRes + public abstract int getViewResource(); @CallSuper @Override diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastBrick.java index e203c9b5eb9..1aa342480f9 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastBrick.java @@ -45,11 +45,6 @@ public List addActionToSequence(Sprite sprite, ScriptSeque return null; } - @Override - public Brick clone() { - return new BroadcastBrick(broadcastMessage); - } - @Override public int getViewResource() { return R.layout.brick_broadcast; diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastMessageBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastMessageBrick.java index 02ac429a4b1..6a4a47a92c1 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastMessageBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastMessageBrick.java @@ -36,16 +36,17 @@ public abstract class BroadcastMessageBrick extends BrickBaseType implements NewBroadcastMessageDialog.NewBroadcastMessageInterface { transient BroadcastSpinnerAdapter messageAdapter; - private transient int spinnerId = R.id.brick_broadcast_spinner; - protected Object readResolve() { - this.spinnerId = R.id.brick_broadcast_spinner; - return this; + @Override + public BrickBaseType clone() throws CloneNotSupportedException { + BroadcastMessageBrick clone = (BroadcastMessageBrick) super.clone(); + clone.messageAdapter = null; + return clone; } @Override public void updateSpinnerSelection() { - Spinner spinner = view.findViewById(spinnerId); + Spinner spinner = view.findViewById(R.id.brick_broadcast_spinner); setSpinnerSelection(spinner); } @@ -66,7 +67,7 @@ private void setSpinnerSelection(Spinner spinner) { public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - Spinner broadcastSpinner = prototypeView.findViewById(spinnerId); + Spinner broadcastSpinner = prototypeView.findViewById(R.id.brick_broadcast_spinner); BroadcastSpinnerAdapter broadcastSpinnerAdapter = getMessageAdapter(context); if (context.getString(R.string.new_broadcast_message).equals(getBroadcastMessage())) { setBroadcastMessage(broadcastSpinnerAdapter.getItem(1)); @@ -79,7 +80,7 @@ public View getPrototypeView(Context context) { @Override public View getView(Context context) { super.getView(context); - Spinner broadcastSpinner = view.findViewById(spinnerId); + Spinner broadcastSpinner = view.findViewById(R.id.brick_broadcast_spinner); broadcastSpinner.setAdapter(getMessageAdapter(context)); if (getBroadcastMessage().equals(context.getString(R.string.new_broadcast_message))) { diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastReceiverBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastReceiverBrick.java index b63d13f58a1..5d7bc4c0da0 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastReceiverBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastReceiverBrick.java @@ -36,49 +36,51 @@ public class BroadcastReceiverBrick extends BroadcastMessageBrick implements private static final long serialVersionUID = 1L; - private final BroadcastScript broadcastScript; + private BroadcastScript broadcastScript; public BroadcastReceiverBrick(BroadcastScript broadcastScript) { - this.broadcastScript = broadcastScript; + broadcastScript.setScriptBrick(this); commentedOut = broadcastScript.isCommentedOut(); + this.broadcastScript = broadcastScript; } @Override - public Brick clone() { - BroadcastScript broadcastScript = new BroadcastScript(getBroadcastMessage()); - broadcastScript.setCommentedOut(broadcastScript.isCommentedOut()); - return new BroadcastReceiverBrick(broadcastScript); + public BrickBaseType clone() throws CloneNotSupportedException { + BroadcastReceiverBrick clone = (BroadcastReceiverBrick) super.clone(); + clone.broadcastScript = (BroadcastScript) broadcastScript.clone(); + clone.broadcastScript.setScriptBrick(clone); + return clone; } @Override - public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - return null; + public String getBroadcastMessage() { + return broadcastScript.getBroadcastMessage(); } @Override - public int getViewResource() { - return R.layout.brick_broadcast_receive; + public void setBroadcastMessage(String newBroadcastMessage) { + broadcastScript.setBroadcastMessage(newBroadcastMessage); + messageAdapter.add(newBroadcastMessage); } @Override - public void setCommentedOut(boolean commentedOut) { - super.setCommentedOut(commentedOut); - getScriptSafe().setCommentedOut(commentedOut); + public Script getScript() { + return broadcastScript; } @Override - public String getBroadcastMessage() { - return broadcastScript.getBroadcastMessage(); + public int getViewResource() { + return R.layout.brick_broadcast_receive; } @Override - public void setBroadcastMessage(String newBroadcastMessage) { - broadcastScript.setBroadcastMessage(newBroadcastMessage); - messageAdapter.add(newBroadcastMessage); + public void setCommentedOut(boolean commentedOut) { + super.setCommentedOut(commentedOut); + getScript().setCommentedOut(commentedOut); } @Override - public Script getScriptSafe() { - return broadcastScript; + public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { + return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastWaitBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastWaitBrick.java index 02405198774..4eaee1e451e 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastWaitBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastWaitBrick.java @@ -43,11 +43,6 @@ public List addActionToSequence(Sprite sprite, ScriptSeque return null; } - @Override - public Brick clone() { - return new BroadcastWaitBrick(broadcastMessage); - } - @Override public int getViewResource() { return R.layout.brick_broadcast_wait; diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/CameraBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/CameraBrick.java index f0a33876073..08269617c18 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/CameraBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/CameraBrick.java @@ -41,8 +41,6 @@ public class CameraBrick extends BrickBaseType { private static final int OFF = 0; private static final int ON = 1; - private transient View prototypeView; - private int spinnerSelectionID; public CameraBrick() { @@ -61,7 +59,7 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - Spinner videoSpinner = (Spinner) view.findViewById(R.id.brick_video_spinner); + Spinner videoSpinner = view.findViewById(R.id.brick_video_spinner); ArrayAdapter spinnerAdapter = createArrayAdapter(context); @@ -86,9 +84,9 @@ public void onNothingSelected(AdapterView adapterView) { @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); + View prototypeView = super.getPrototypeView(context); - Spinner setVideoSpinner = (Spinner) prototypeView.findViewById(R.id.brick_video_spinner); + Spinner setVideoSpinner = prototypeView.findViewById(R.id.brick_video_spinner); ArrayAdapter spinnerAdapter = createArrayAdapter(context); setVideoSpinner.setAdapter(spinnerAdapter); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeBrightnessByNBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeBrightnessByNBrick.java index 878b9d5b7cd..984c4d210dc 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeBrightnessByNBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeBrightnessByNBrick.java @@ -36,9 +36,8 @@ import java.util.List; public class ChangeBrightnessByNBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - private transient View prototypeView; + private static final long serialVersionUID = 1L; public ChangeBrightnessByNBrick() { addAllowedBrickField(BrickField.BRIGHTNESS_CHANGE); @@ -70,7 +69,7 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - TextView editX = (TextView) view.findViewById(R.id.brick_change_brightness_edit_text); + TextView editX = view.findViewById(R.id.brick_change_brightness_edit_text); getFormulaWithBrickField(BrickField.BRIGHTNESS_CHANGE).setTextFieldId(R.id.brick_change_brightness_edit_text); getFormulaWithBrickField(BrickField.BRIGHTNESS_CHANGE).refreshTextField(view); @@ -80,17 +79,16 @@ public View getView(Context context) { @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textChangeBrightness = (TextView) prototypeView - .findViewById(R.id.brick_change_brightness_edit_text); + View prototypeView = super.getPrototypeView(context); + TextView textChangeBrightness = prototypeView.findViewById(R.id.brick_change_brightness_edit_text); textChangeBrightness.setText(formatNumberForPrototypeView(BrickValues.CHANGE_BRITHNESS_BY)); return prototypeView; } @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createChangeBrightnessByNAction(sprite, - getFormulaWithBrickField(BrickField.BRIGHTNESS_CHANGE))); + sequence.addAction(sprite.getActionFactory() + .createChangeBrightnessByNAction(sprite, getFormulaWithBrickField(BrickField.BRIGHTNESS_CHANGE))); return null; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeColorByNBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeColorByNBrick.java index a904cb5359d..ea074dc8d17 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeColorByNBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeColorByNBrick.java @@ -36,9 +36,8 @@ import java.util.List; public class ChangeColorByNBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - private transient View prototypeView; + private static final long serialVersionUID = 1L; public ChangeColorByNBrick() { addAllowedBrickField(BrickField.COLOR_CHANGE); @@ -70,27 +69,25 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - TextView editX = (TextView) view.findViewById(R.id.brick_change_color_by_edit_text); + TextView editX = view.findViewById(R.id.brick_change_color_by_edit_text); getFormulaWithBrickField(BrickField.COLOR_CHANGE).setTextFieldId(R.id.brick_change_color_by_edit_text); getFormulaWithBrickField(BrickField.COLOR_CHANGE).refreshTextField(view); - editX.setOnClickListener(this); return view; } @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textChangeColor = (TextView) prototypeView - .findViewById(R.id.brick_change_color_by_edit_text); + View prototypeView = super.getPrototypeView(context); + TextView textChangeColor = prototypeView.findViewById(R.id.brick_change_color_by_edit_text); textChangeColor.setText(formatNumberForPrototypeView(BrickValues.CHANGE_COLOR_BY)); return prototypeView; } @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createChangeColorByNAction(sprite, - getFormulaWithBrickField(BrickField.COLOR_CHANGE))); + sequence.addAction(sprite.getActionFactory() + .createChangeColorByNAction(sprite, getFormulaWithBrickField(BrickField.COLOR_CHANGE))); return null; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeSizeByNBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeSizeByNBrick.java index b8bffd27042..eddc355fd55 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeSizeByNBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeSizeByNBrick.java @@ -36,9 +36,8 @@ import java.util.List; public class ChangeSizeByNBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - private transient View prototypeView; + private static final long serialVersionUID = 1L; public ChangeSizeByNBrick() { addAllowedBrickField(BrickField.SIZE_CHANGE); @@ -70,27 +69,25 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - TextView edit = (TextView) view.findViewById(R.id.brick_change_size_by_edit_text); + TextView edit = view.findViewById(R.id.brick_change_size_by_edit_text); getFormulaWithBrickField(BrickField.SIZE_CHANGE).setTextFieldId(R.id.brick_change_size_by_edit_text); getFormulaWithBrickField(BrickField.SIZE_CHANGE).refreshTextField(view); - edit.setOnClickListener(this); return view; } @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textChangeSizeBy = (TextView) prototypeView - .findViewById(R.id.brick_change_size_by_edit_text); + View prototypeView = super.getPrototypeView(context); + TextView textChangeSizeBy = prototypeView.findViewById(R.id.brick_change_size_by_edit_text); textChangeSizeBy.setText(formatNumberForPrototypeView(BrickValues.CHANGE_SIZE_BY)); return prototypeView; } @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createChangeSizeByNAction(sprite, - getFormulaWithBrickField(BrickField.SIZE_CHANGE))); + sequence.addAction(sprite.getActionFactory() + .createChangeSizeByNAction(sprite, getFormulaWithBrickField(BrickField.SIZE_CHANGE))); return null; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeVariableBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeVariableBrick.java index ef87388f36d..3ab498f76b3 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeVariableBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeVariableBrick.java @@ -126,11 +126,6 @@ public void onNewVariable(UserVariable userVariable) { setSpinnerSelection(spinner, userVariable); } - @Override - public ChangeVariableBrick clone() { - return new ChangeVariableBrick(getFormulaWithBrickField(BrickField.VARIABLE_CHANGE).clone(), userVariable); - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createChangeVariableAction(sprite, getFormulaWithBrickField(BrickField.VARIABLE_CHANGE), userVariable)); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeVolumeByNBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeVolumeByNBrick.java index 027e57d8067..1330d4acf42 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeVolumeByNBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeVolumeByNBrick.java @@ -39,8 +39,6 @@ public class ChangeVolumeByNBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - private transient View prototypeView; - public ChangeVolumeByNBrick() { addAllowedBrickField(BrickField.VOLUME_CHANGE); } @@ -71,26 +69,25 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - TextView edit = (TextView) view.findViewById(R.id.brick_change_volume_by_edit_text); + TextView edit = view.findViewById(R.id.brick_change_volume_by_edit_text); getFormulaWithBrickField(BrickField.VOLUME_CHANGE).setTextFieldId(R.id.brick_change_volume_by_edit_text); getFormulaWithBrickField(BrickField.VOLUME_CHANGE).refreshTextField(view); - edit.setOnClickListener(this); return view; } @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textSetVolumenTo = (TextView) prototypeView - .findViewById(R.id.brick_change_volume_by_edit_text); - textSetVolumenTo.setText(formatNumberForPrototypeView(BrickValues.CHANGE_VOLUME_BY)); + View prototypeView = super.getPrototypeView(context); + TextView textSetVolumeTo = prototypeView.findViewById(R.id.brick_change_volume_by_edit_text); + textSetVolumeTo.setText(formatNumberForPrototypeView(BrickValues.CHANGE_VOLUME_BY)); return prototypeView; } @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createChangeVolumeByNAction(sprite, getFormulaWithBrickField(BrickField.VOLUME_CHANGE))); + sequence.addAction(sprite.getActionFactory() + .createChangeVolumeByNAction(sprite, getFormulaWithBrickField(BrickField.VOLUME_CHANGE))); return null; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeXByNBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeXByNBrick.java index dbe6859d424..2e8f4bdf317 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeXByNBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeXByNBrick.java @@ -36,9 +36,8 @@ import java.util.List; public class ChangeXByNBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - private transient View prototypeView; + private static final long serialVersionUID = 1L; public ChangeXByNBrick() { addAllowedBrickField(BrickField.X_POSITION_CHANGE); @@ -70,7 +69,7 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - TextView editX = (TextView) view.findViewById(R.id.brick_change_x_edit_text); + TextView editX = view.findViewById(R.id.brick_change_x_edit_text); getFormulaWithBrickField(BrickField.X_POSITION_CHANGE).setTextFieldId(R.id.brick_change_x_edit_text); getFormulaWithBrickField(BrickField.X_POSITION_CHANGE).refreshTextField(view); @@ -80,16 +79,16 @@ public View getView(Context context) { @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textXMovement = (TextView) prototypeView.findViewById(R.id.brick_change_x_edit_text); + View prototypeView = super.getPrototypeView(context); + TextView textXMovement = prototypeView.findViewById(R.id.brick_change_x_edit_text); textXMovement.setText(formatNumberForPrototypeView(BrickValues.CHANGE_X_BY)); return prototypeView; } @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createChangeXByNAction(sprite, - getFormulaWithBrickField(BrickField.X_POSITION_CHANGE))); + sequence.addAction(sprite.getActionFactory() + .createChangeXByNAction(sprite, getFormulaWithBrickField(BrickField.X_POSITION_CHANGE))); return null; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeYByNBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeYByNBrick.java index 84a00333170..a749d407841 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeYByNBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeYByNBrick.java @@ -36,9 +36,8 @@ import java.util.List; public class ChangeYByNBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - private transient View prototypeView; + private static final long serialVersionUID = 1L; public ChangeYByNBrick() { addAllowedBrickField(BrickField.Y_POSITION_CHANGE); @@ -70,26 +69,25 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - TextView editY = (TextView) view.findViewById(R.id.brick_change_y_edit_text); + TextView editY = view.findViewById(R.id.brick_change_y_edit_text); getFormulaWithBrickField(BrickField.Y_POSITION_CHANGE).setTextFieldId(R.id.brick_change_y_edit_text); getFormulaWithBrickField(BrickField.Y_POSITION_CHANGE).refreshTextField(view); - editY.setOnClickListener(this); return view; } @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textYMovement = (TextView) prototypeView.findViewById(R.id.brick_change_y_edit_text); + View prototypeView = super.getPrototypeView(context); + TextView textYMovement = prototypeView.findViewById(R.id.brick_change_y_edit_text); textYMovement.setText(formatNumberForPrototypeView(BrickValues.CHANGE_Y_BY)); return prototypeView; } @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createChangeYByNAction(sprite, - getFormulaWithBrickField(BrickField.Y_POSITION_CHANGE))); + sequence.addAction(sprite.getActionFactory() + .createChangeYByNAction(sprite, getFormulaWithBrickField(BrickField.Y_POSITION_CHANGE))); return null; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ClearBackgroundBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ClearBackgroundBrick.java index 19076e80477..c88abf4b85c 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ClearBackgroundBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ClearBackgroundBrick.java @@ -22,9 +22,6 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; - import org.catrobat.catroid.R; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; @@ -38,29 +35,11 @@ public class ClearBackgroundBrick extends BrickBaseType { public ClearBackgroundBrick() { } - @Override - public View getPrototypeView(Context context) { - View view = super.getPrototypeView(context); - - return view; - } - - @Override - public Brick clone() { - return new ClearBackgroundBrick(); - } - @Override public int getViewResource() { return R.layout.brick_clear_background; } - @Override - public View getView(Context context) { - super.getView(context); - return view; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createClearBackgroundAction()); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ClearGraphicEffectBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ClearGraphicEffectBrick.java index 564134fc4ba..a0596f0931c 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ClearGraphicEffectBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ClearGraphicEffectBrick.java @@ -29,6 +29,7 @@ import java.util.List; public class ClearGraphicEffectBrick extends BrickBaseType { + private static final long serialVersionUID = 1L; public ClearGraphicEffectBrick() { @@ -39,11 +40,6 @@ public int getViewResource() { return R.layout.brick_clear_graphic_effect; } - @Override - public Brick clone() { - return new ClearGraphicEffectBrick(); - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createClearGraphicEffectAction(sprite)); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/CloneBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/CloneBrick.java index 6349e7a42b4..208c0e61236 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/CloneBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/CloneBrick.java @@ -42,10 +42,6 @@ public class CloneBrick extends BrickBaseType { private Sprite objectToClone; - public CloneBrick(Sprite objectToClone) { - this.objectToClone = objectToClone; - } - public CloneBrick() { } @@ -64,18 +60,10 @@ public View getView(final Context context) { @Override public View getPrototypeView(Context context) { View view = super.getPrototypeView(context); - Spinner cloneSpinner = (Spinner) view.findViewById(R.id.brick_clone_spinner); - - cloneSpinner.setAdapter(getSpinnerArrayAdapter(context)); - + ((Spinner) view.findViewById(R.id.brick_clone_spinner)).setAdapter(getSpinnerArrayAdapter(context)); return view; } - @Override - public Brick clone() { - return new CloneBrick(objectToClone); - } - @Override public List addActionToSequence(Sprite thisObject, ScriptSequenceAction sequence) { Sprite s = (objectToClone != null) ? objectToClone : thisObject; @@ -84,8 +72,7 @@ public List addActionToSequence(Sprite thisObject, ScriptS } private void setupValueSpinner(final Context context) { - final Spinner valueSpinner = (Spinner) view.findViewById(R.id.brick_clone_spinner); - + final Spinner valueSpinner = view.findViewById(R.id.brick_clone_spinner); final List spriteList = ProjectManager.getInstance().getCurrentlyEditedScene().getSpriteList(); ArrayAdapter valueAdapter = getSpinnerArrayAdapter(context); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ComeToFrontBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ComeToFrontBrick.java index 65f26b8c4db..8b5e13a2dde 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ComeToFrontBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ComeToFrontBrick.java @@ -29,6 +29,7 @@ import java.util.List; public class ComeToFrontBrick extends BrickBaseType { + private static final long serialVersionUID = 1L; public ComeToFrontBrick() { @@ -39,11 +40,6 @@ public int getViewResource() { return R.layout.brick_go_to_front; } - @Override - public Brick clone() { - return new ComeToFrontBrick(); - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createComeToFrontAction(sprite)); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DeleteItemOfUserListBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DeleteItemOfUserListBrick.java index f68dad46749..ee6d98d4ec9 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DeleteItemOfUserListBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DeleteItemOfUserListBrick.java @@ -125,11 +125,6 @@ public void onNewList(UserList userList) { setSpinnerSelection(spinner, userList); } - @Override - public Brick clone() { - return new DeleteItemOfUserListBrick(getFormulaWithBrickField(BrickField.LIST_DELETE_ITEM).clone(), userList); - } - @Override public void showFormulaEditorToEditFormula(View view) { FormulaEditorFragment.showFragment(view, this, BrickField.LIST_DELETE_ITEM); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DeleteThisCloneBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DeleteThisCloneBrick.java index cd5dcf845cb..f2c2c82addc 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DeleteThisCloneBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DeleteThisCloneBrick.java @@ -30,6 +30,7 @@ import java.util.List; public class DeleteThisCloneBrick extends BrickBaseType { + private static final long serialVersionUID = 1L; public DeleteThisCloneBrick() { @@ -40,11 +41,6 @@ public int getViewResource() { return R.layout.brick_delete_this_clone; } - @Override - public Brick clone() { - return new DeleteThisCloneBrick(); - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createDeleteThisCloneAction(sprite)); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ForeverBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ForeverBrick.java index 532bec0d123..dec5bd36dd8 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ForeverBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ForeverBrick.java @@ -37,18 +37,11 @@ public class ForeverBrick extends BrickBaseType implements LoopBeginBrick { private static final long serialVersionUID = 1L; - protected transient LoopEndBrick loopEndBrick; + private transient LoopEndBrick loopEndBrick; public ForeverBrick() { } - @Override - public Brick clone() { - ForeverBrick clone = new ForeverBrick(); - clone.setLoopEndBrick(loopEndBrick); - return clone; - } - @Override public int getViewResource() { return R.layout.brick_forever; @@ -90,7 +83,7 @@ public boolean isDraggableOver(Brick brick) { } @Override - public List getAllNestingBrickParts(boolean sorted) { + public List getAllNestingBrickParts() { List nestingBrickList = new ArrayList(); nestingBrickList.add(this); nestingBrickList.add(loopEndBrick); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/FormulaBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/FormulaBrick.java index 70d0342c0ba..59d37b47d74 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/FormulaBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/FormulaBrick.java @@ -64,7 +64,7 @@ protected void addAllowedBrickField(BrickField brickField) { formulaMap.putIfAbsent(brickField, new Formula(0)); } - protected void replaceFormulaBrickField(BrickField oldBrickField, BrickField newBrickField) { + void replaceFormulaBrickField(BrickField oldBrickField, BrickField newBrickField) { if (formulaMap.containsKey(oldBrickField)) { Formula brickFormula = formulaMap.get(oldBrickField); formulaMap.remove(oldBrickField); @@ -73,15 +73,14 @@ protected void replaceFormulaBrickField(BrickField oldBrickField, BrickField new } @Override - public Brick clone() throws CloneNotSupportedException { - FormulaBrick clonedBrick = (FormulaBrick) super.clone(); - clonedBrick.formulaMap = formulaMap.clone(); - return clonedBrick; + public BrickBaseType clone() throws CloneNotSupportedException { + FormulaBrick clone = (FormulaBrick) super.clone(); + clone.formulaMap = formulaMap.clone(); + return clone; } public List getFormulas() { List formulas = new ArrayList<>(); - for (BrickField brickField : formulaMap.keySet()) { formulas.add(formulaMap.get(brickField)); } @@ -109,12 +108,12 @@ public View getCustomView(Context context, int brickId, BaseAdapter baseAdapter) public abstract void showFormulaEditorToEditFormula(View view); public void setSecondText(View view, int textViewId, int editTextDurationId, BrickField brickField) { - TextView editDuration = (TextView) view.findViewById(editTextDurationId); + TextView editDuration = view.findViewById(editTextDurationId); getFormulaWithBrickField(brickField) .setTextFieldId(editTextDurationId); getFormulaWithBrickField(brickField).refreshTextField(view); - TextView times = (TextView) view.findViewById(textViewId); + TextView times = view.findViewById(textViewId); if (getFormulaWithBrickField(brickField).isSingleNumberFormula()) { try { @@ -135,7 +134,7 @@ public void setSecondText(View view, int textViewId, int editTextDurationId, Bri } public void setSecondText(Context context, View prototypeView, int textViewId) { - TextView second = (TextView) prototypeView.findViewById(textViewId); + TextView second = prototypeView.findViewById(textViewId); second.setText(context.getResources().getQuantityString(R.plurals.second_plural, Utils.convertDoubleToPluralInteger(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS / 1000))); } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/GoNStepsBackBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/GoNStepsBackBrick.java index b92a2bb0dfd..6e73a0464a7 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/GoNStepsBackBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/GoNStepsBackBrick.java @@ -40,9 +40,8 @@ import java.util.List; public class GoNStepsBackBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - private transient View prototypeView; + private static final long serialVersionUID = 1L; public GoNStepsBackBrick() { addAllowedBrickField(BrickField.STEPS); @@ -74,12 +73,12 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - TextView edit = (TextView) view.findViewById(R.id.brick_go_back_edit_text); + TextView edit = view.findViewById(R.id.brick_go_back_edit_text); getFormulaWithBrickField(BrickField.STEPS).setTextFieldId(R.id.brick_go_back_edit_text); getFormulaWithBrickField(BrickField.STEPS).refreshTextField(view); - TextView times = (TextView) view.findViewById(R.id.brick_go_back_layers_text_view); + TextView times = view.findViewById(R.id.brick_go_back_layers_text_view); if (getFormulaWithBrickField(BrickField.STEPS).isSingleNumberFormula()) { try { @@ -105,9 +104,9 @@ public View getView(Context context) { @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textSteps = (TextView) prototypeView.findViewById(R.id.brick_go_back_edit_text); - TextView times = (TextView) prototypeView.findViewById(R.id.brick_go_back_layers_text_view); + View prototypeView = super.getPrototypeView(context); + TextView textSteps = prototypeView.findViewById(R.id.brick_go_back_edit_text); + TextView times = prototypeView.findViewById(R.id.brick_go_back_layers_text_view); textSteps.setText(formatNumberForPrototypeView(BrickValues.GO_BACK)); times.setText(context.getResources().getQuantityString(R.plurals.brick_go_back_layer_plural, Utils.convertDoubleToPluralInteger(BrickValues.GO_BACK))); @@ -117,8 +116,8 @@ public View getPrototypeView(Context context) { @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createGoNStepsBackAction(sprite, - getFormulaWithBrickField(BrickField.STEPS))); + sequence.addAction(sprite.getActionFactory() + .createGoNStepsBackAction(sprite, getFormulaWithBrickField(BrickField.STEPS))); return null; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/GoToBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/GoToBrick.java index 50469fade39..b72a46e7718 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/GoToBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/GoToBrick.java @@ -50,7 +50,6 @@ public class GoToBrick extends BrickBaseType { private Sprite destinationSprite; private transient String oldSelectedObject; - private transient SpinnerAdapterWrapper spinnerAdapterWrapper; private int spinnerSelection; public GoToBrick() { @@ -72,11 +71,11 @@ public int getViewResource() { @Override public View getView(final Context context) { super.getView(context); - final Spinner goToSpinner = (Spinner) view.findViewById(R.id.brick_go_to_spinner); + final Spinner goToSpinner = view.findViewById(R.id.brick_go_to_spinner); final ArrayAdapter spinnerAdapter = createArrayAdapter(context); - spinnerAdapterWrapper = new SpinnerAdapterWrapper(context, goToSpinner, spinnerAdapter); + SpinnerAdapterWrapper spinnerAdapterWrapper = new SpinnerAdapterWrapper(context, goToSpinner, spinnerAdapter); goToSpinner.setAdapter(spinnerAdapterWrapper); @@ -118,7 +117,7 @@ public void onNothingSelected(AdapterView parent) { public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - Spinner goToSpinner = (Spinner) prototypeView.findViewById(R.id.brick_go_to_spinner); + Spinner goToSpinner = prototypeView.findViewById(R.id.brick_go_to_spinner); SpinnerAdapter goToSpinnerAdapter = createArrayAdapter(context); @@ -282,11 +281,4 @@ public ArrayAdapter getAdapter() { return spinnerAdapter; } } - - @Override - public Brick clone() { - GoToBrick copy = new GoToBrick(destinationSprite); - copy.spinnerSelection = spinnerSelection; - return copy; - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/HideBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/HideBrick.java index ebe366f01df..b2020fd96c8 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/HideBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/HideBrick.java @@ -29,7 +29,7 @@ import java.util.List; public class HideBrick extends BrickBaseType { - public static final String TAG = HideBrick.class.getSimpleName(); + private static final long serialVersionUID = 1L; public HideBrick() { @@ -40,11 +40,6 @@ public int getViewResource() { return R.layout.brick_hide; } - @Override - public Brick clone() { - return new HideBrick(); - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createHideAction(sprite)); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/HideTextBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/HideTextBrick.java index f5a2a2b9f67..1d627d70071 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/HideTextBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/HideTextBrick.java @@ -43,8 +43,6 @@ public class HideTextBrick extends UserVariableBrick { private static final long serialVersionUID = 1L; - private transient View prototypeView; - public HideTextBrick() { addAllowedBrickField(BrickField.X_POSITION); addAllowedBrickField(BrickField.Y_POSITION); @@ -63,7 +61,7 @@ public int getViewResource() { @Override public View getView(final Context context) { super.getView(context); - Spinner variableSpinner = (Spinner) view.findViewById(R.id.hide_variable_spinner); + Spinner variableSpinner = view.findViewById(R.id.hide_variable_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyEditedScene().getDataContainer() .createDataAdapter(context, ProjectManager.getInstance().getCurrentSprite()); @@ -82,9 +80,9 @@ public View getView(final Context context) { @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); + View prototypeView = super.getPrototypeView(context); - Spinner variableSpinner = (Spinner) prototypeView.findViewById(R.id.hide_variable_spinner); + Spinner variableSpinner = prototypeView.findViewById(R.id.hide_variable_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyEditedScene().getDataContainer() .createDataAdapter(context, ProjectManager.getInstance().getCurrentSprite()); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfLogicBeginBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfLogicBeginBrick.java index 461fb67ef66..a2446df32be 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfLogicBeginBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfLogicBeginBrick.java @@ -23,7 +23,6 @@ package org.catrobat.catroid.content.bricks; import android.content.Context; -import android.util.Log; import android.view.View; import android.widget.TextView; @@ -31,6 +30,7 @@ import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; +import org.catrobat.catroid.content.ActionFactory; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; @@ -43,7 +43,7 @@ public class IfLogicBeginBrick extends FormulaBrick implements NestingBrick { private static final long serialVersionUID = 1L; - private static final String TAG = IfLogicBeginBrick.class.getSimpleName(); + transient IfLogicElseBrick ifElseBrick; transient IfLogicEndBrick ifEndBrick; @@ -86,8 +86,11 @@ public void setIfEndBrick(IfLogicEndBrick ifEndBrick) { } @Override - public Brick clone() { - return new IfLogicBeginBrick(getFormulaWithBrickField(BrickField.IF_CONDITION).clone()); + public BrickBaseType clone() throws CloneNotSupportedException { + IfLogicBeginBrick clone = (IfLogicBeginBrick) super.clone(); + clone.ifElseBrick = null; + clone.ifEndBrick = null; + return clone; } @Override @@ -145,22 +148,14 @@ public boolean isInitialized() { public void initialize() { ifElseBrick = new IfLogicElseBrick(this); ifEndBrick = new IfLogicEndBrick(ifElseBrick, this); - Log.w(TAG, "Creating if logic stuff"); } @Override - public List getAllNestingBrickParts(boolean sorted) { - //TODO: handle sorting - List nestingBrickList = new ArrayList(); - if (sorted) { - nestingBrickList.add(this); - nestingBrickList.add(ifElseBrick); - nestingBrickList.add(ifEndBrick); - } else { - nestingBrickList.add(this); - nestingBrickList.add(ifEndBrick); - } - + public List getAllNestingBrickParts() { + List nestingBrickList = new ArrayList<>(); + nestingBrickList.add(this); + nestingBrickList.add(ifElseBrick); + nestingBrickList.add(ifEndBrick); return nestingBrickList; } @@ -171,8 +166,8 @@ public boolean isDraggableOver(Brick brick) { @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - ScriptSequenceAction ifAction = (ScriptSequenceAction) sprite.getActionFactory().eventSequence(sequence.getScript()); - ScriptSequenceAction elseAction = (ScriptSequenceAction) sprite.getActionFactory().eventSequence(sequence.getScript()); + ScriptSequenceAction ifAction = (ScriptSequenceAction) ActionFactory.eventSequence(sequence.getScript()); + ScriptSequenceAction elseAction = (ScriptSequenceAction) ActionFactory.eventSequence(sequence.getScript()); Action action = sprite.getActionFactory().createIfLogicAction(sprite, getFormulaWithBrickField(BrickField.IF_CONDITION), ifAction, elseAction); sequence.addAction(action); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfLogicElseBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfLogicElseBrick.java index e16b4ba018d..85a09454545 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfLogicElseBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfLogicElseBrick.java @@ -22,8 +22,6 @@ */ package org.catrobat.catroid.content.bricks; -import android.util.Log; - import org.catrobat.catroid.R; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; @@ -35,7 +33,7 @@ public class IfLogicElseBrick extends BrickBaseType implements NestingBrick, AllowedAfterDeadEndBrick { private static final long serialVersionUID = 1L; - private static final String TAG = IfLogicElseBrick.class.getSimpleName(); + private transient IfLogicBeginBrick ifBeginBrick; private transient IfLogicEndBrick ifEndBrick; @@ -48,11 +46,6 @@ public int getViewResource() { return R.layout.brick_if_else; } - @Override - public Brick clone() { - return new IfLogicElseBrick(ifBeginBrick); - } - public IfLogicBeginBrick getIfBeginBrick() { return ifBeginBrick; } @@ -81,25 +74,14 @@ public boolean isInitialized() { @Override public void initialize() { - //ifBeginBrick = new IfLogicBeginBrick(sprite, 0); - //ifEndBrick = new IfLogicEndBrick(sprite, this); - Log.w(TAG, "Cannot create the IfLogic Bricks from here!"); } @Override - public List getAllNestingBrickParts(boolean sorted) { - //TODO: handle sorting + public List getAllNestingBrickParts() { List nestingBrickList = new ArrayList<>(); - if (sorted) { - nestingBrickList.add(ifBeginBrick); - nestingBrickList.add(this); - nestingBrickList.add(ifEndBrick); - } else { - nestingBrickList.add(this); - nestingBrickList.add(ifBeginBrick); - nestingBrickList.add(ifEndBrick); - } - + nestingBrickList.add(ifBeginBrick); + nestingBrickList.add(this); + nestingBrickList.add(ifEndBrick); return nestingBrickList; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfLogicEndBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfLogicEndBrick.java index 4b14ff66a0e..4e46b07e186 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfLogicEndBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfLogicEndBrick.java @@ -22,8 +22,6 @@ */ package org.catrobat.catroid.content.bricks; -import android.util.Log; - import org.catrobat.catroid.R; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; @@ -35,7 +33,6 @@ public class IfLogicEndBrick extends BrickBaseType implements NestingBrick, AllowedAfterDeadEndBrick { private static final long serialVersionUID = 1L; - private static final String TAG = IfLogicEndBrick.class.getSimpleName(); private transient IfLogicElseBrick ifElseBrick; private transient IfLogicBeginBrick ifBeginBrick; @@ -66,11 +63,6 @@ public int getViewResource() { return R.layout.brick_if_end_if; } - @Override - public Brick clone() { - return new IfLogicEndBrick(ifElseBrick, ifBeginBrick); - } - @Override public boolean isDraggableOver(Brick brick) { return brick != ifElseBrick; @@ -83,23 +75,14 @@ public boolean isInitialized() { @Override public void initialize() { - Log.w(TAG, "Cannot create the IfLogic Bricks from here!"); } @Override - public List getAllNestingBrickParts(boolean sorted) { - //TODO: handle sorting - List nestingBrickList = new ArrayList(); - if (sorted) { - nestingBrickList.add(ifBeginBrick); - nestingBrickList.add(ifElseBrick); - nestingBrickList.add(this); - } else { - nestingBrickList.add(this); - nestingBrickList.add(ifBeginBrick); - //nestingBrickList.add(ifElseBrick); - } - + public List getAllNestingBrickParts() { + List nestingBrickList = new ArrayList<>(); + nestingBrickList.add(ifBeginBrick); + nestingBrickList.add(ifElseBrick); + nestingBrickList.add(this); return nestingBrickList; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfOnEdgeBounceBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfOnEdgeBounceBrick.java index 17c220db977..df2eb474dad 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfOnEdgeBounceBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfOnEdgeBounceBrick.java @@ -40,11 +40,6 @@ public int getViewResource() { return R.layout.brick_if_on_edge_bounce; } - @Override - public Brick clone() { - return new IfOnEdgeBounceBrick(); - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createIfOnEdgeBounceAction(sprite)); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfThenLogicBeginBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfThenLogicBeginBrick.java index 027d67bb5ee..42aa2b4de50 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfThenLogicBeginBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfThenLogicBeginBrick.java @@ -39,7 +39,7 @@ public class IfThenLogicBeginBrick extends IfLogicBeginBrick implements NestingBrick { private static final long serialVersionUID = 1L; - protected transient IfThenLogicEndBrick ifEndBrick; + private transient IfThenLogicEndBrick ifEndBrick; public IfThenLogicBeginBrick(int condition) { initializeBrickFields(new Formula(condition)); @@ -53,11 +53,6 @@ public void setIfThenEndBrick(IfThenLogicEndBrick ifEndBrick) { this.ifEndBrick = ifEndBrick; } - @Override - public Brick clone() { - return new IfThenLogicBeginBrick(getFormulaWithBrickField(BrickField.IF_CONDITION).clone()); - } - @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); @@ -71,7 +66,7 @@ public void initialize() { } @Override - public List getAllNestingBrickParts(boolean sorted) { + public List getAllNestingBrickParts() { List nestingBrickList = new ArrayList<>(); nestingBrickList.add(this); nestingBrickList.add(ifEndBrick); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfThenLogicEndBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfThenLogicEndBrick.java index caa68094e69..36e7b569ca2 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfThenLogicEndBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfThenLogicEndBrick.java @@ -52,11 +52,6 @@ public int getViewResource() { return R.layout.brick_if_end_if; } - @Override - public Brick clone() { - return new IfThenLogicEndBrick(ifBeginBrick); - } - @Override public boolean isDraggableOver(Brick brick) { return brick != ifBeginBrick; @@ -73,7 +68,7 @@ public void initialize() { } @Override - public List getAllNestingBrickParts(boolean sorted) { + public List getAllNestingBrickParts() { List nestingBrickList = new ArrayList<>(); nestingBrickList.add(ifBeginBrick); nestingBrickList.add(this); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/InsertItemIntoUserListBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/InsertItemIntoUserListBrick.java index d01e8225f66..19a5988a27a 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/InsertItemIntoUserListBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/InsertItemIntoUserListBrick.java @@ -77,20 +77,20 @@ public int getViewResource() { @Override public View getView(final Context context) { super.getView(context); - TextView textFieldValue = (TextView) view.findViewById(R.id.brick_insert_item_into_userlist_value_edit_text); + TextView textFieldValue = view.findViewById(R.id.brick_insert_item_into_userlist_value_edit_text); getFormulaWithBrickField(BrickField.INSERT_ITEM_INTO_USERLIST_VALUE).setTextFieldId(R.id.brick_insert_item_into_userlist_value_edit_text); getFormulaWithBrickField(BrickField.INSERT_ITEM_INTO_USERLIST_VALUE).refreshTextField(view); textFieldValue.setVisibility(View.VISIBLE); textFieldValue.setOnClickListener(this); - TextView textFieldIndex = (TextView) view.findViewById(R.id.brick_insert_item_into_userlist_at_index_edit_text); + TextView textFieldIndex = view.findViewById(R.id.brick_insert_item_into_userlist_at_index_edit_text); getFormulaWithBrickField(BrickField.INSERT_ITEM_INTO_USERLIST_INDEX).setTextFieldId(R.id.brick_insert_item_into_userlist_at_index_edit_text); getFormulaWithBrickField(BrickField.INSERT_ITEM_INTO_USERLIST_INDEX).refreshTextField(view); textFieldIndex.setVisibility(View.VISIBLE); textFieldIndex.setOnClickListener(this); - Spinner userListSpinner = (Spinner) view.findViewById(R.id.insert_item_into_userlist_spinner); + Spinner userListSpinner = view.findViewById(R.id.insert_item_into_userlist_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyEditedScene().getDataContainer() .createDataAdapter(context, ProjectManager.getInstance().getCurrentSprite()); UserListAdapterWrapper userListAdapterWrapper = new UserListAdapterWrapper(context, dataAdapter); @@ -107,7 +107,7 @@ public View getView(final Context context) { @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - Spinner userListSpinner = (Spinner) prototypeView.findViewById(R.id.insert_item_into_userlist_spinner); + Spinner userListSpinner = prototypeView.findViewById(R.id.insert_item_into_userlist_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyEditedScene().getDataContainer() .createDataAdapter(context, ProjectManager.getInstance().getCurrentSprite()); @@ -118,9 +118,9 @@ public View getPrototypeView(Context context) { userListSpinner.setAdapter(userListAdapterWrapper); setSpinnerSelection(userListSpinner, null); - TextView textViewValueToInsert = (TextView) prototypeView.findViewById(R.id.brick_insert_item_into_userlist_value_edit_text); + TextView textViewValueToInsert = prototypeView.findViewById(R.id.brick_insert_item_into_userlist_value_edit_text); textViewValueToInsert.setText(formatNumberForPrototypeView(BrickValues.INSERT_ITEM_INTO_USERLIST_VALUE)); - TextView textViewInsertIndex = (TextView) prototypeView.findViewById(R.id.brick_insert_item_into_userlist_at_index_edit_text); + TextView textViewInsertIndex = prototypeView.findViewById(R.id.brick_insert_item_into_userlist_at_index_edit_text); textViewInsertIndex.setText(formatNumberForPrototypeView(BrickValues.INSERT_ITEM_INTO_USERLIST_INDEX)); return prototypeView; @@ -132,13 +132,6 @@ public void onNewList(UserList userList) { setSpinnerSelection(spinner, userList); } - @Override - public Brick clone() { - return new InsertItemIntoUserListBrick( - getFormulaWithBrickField(BrickField.INSERT_ITEM_INTO_USERLIST_VALUE).clone(), - getFormulaWithBrickField(BrickField.INSERT_ITEM_INTO_USERLIST_INDEX).clone(), userList); - } - @Override public void showFormulaEditorToEditFormula(View view) { switch (view.getId()) { diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/LoopEndBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/LoopEndBrick.java index e7567d7c672..e900f484df2 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/LoopEndBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/LoopEndBrick.java @@ -22,8 +22,6 @@ */ package org.catrobat.catroid.content.bricks; -import android.util.Log; - import org.catrobat.catroid.R; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; @@ -35,7 +33,6 @@ public class LoopEndBrick extends BrickBaseType implements NestingBrick, AllowedAfterDeadEndBrick { private static final long serialVersionUID = 1L; - private static final String TAG = LoopEndBrick.class.getSimpleName(); private transient LoopBeginBrick loopBeginBrick; public LoopEndBrick() { @@ -59,8 +56,10 @@ public int getViewResource() { } @Override - public Brick clone() { - return new LoopEndBrick(); + public BrickBaseType clone() throws CloneNotSupportedException { + LoopEndBrick clone = (LoopEndBrick) super.clone(); + clone.loopBeginBrick = null; + return clone; } @Override @@ -76,19 +75,13 @@ public boolean isInitialized() { @Override public void initialize() { loopBeginBrick = new ForeverBrick(); - Log.w(TAG, "Not supposed to create the LoopBeginBrick!"); } @Override - public List getAllNestingBrickParts(boolean sorted) { + public List getAllNestingBrickParts() { List nestingBrickList = new ArrayList<>(); - if (sorted) { - nestingBrickList.add(loopBeginBrick); - nestingBrickList.add(this); - } else { - nestingBrickList.add(this); - nestingBrickList.add(loopBeginBrick); - } + nestingBrickList.add(loopBeginBrick); + nestingBrickList.add(this); return nestingBrickList; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/LoopEndlessBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/LoopEndlessBrick.java index 40d84cefe50..39e01cd6e0d 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/LoopEndlessBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/LoopEndlessBrick.java @@ -39,9 +39,4 @@ public LoopEndlessBrick(LoopBeginBrick loopBeginBrick) { public int getViewResource() { return R.layout.brick_loop_endless; } - - @Override - public Brick clone() { - return new LoopEndlessBrick(); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/NestingBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/NestingBrick.java index 913e305e2d6..1c44b99dc97 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/NestingBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/NestingBrick.java @@ -35,5 +35,5 @@ public interface NestingBrick { /** * @return List of NestingBricks in order of their appearance */ - List getAllNestingBrickParts(boolean sorted); + List getAllNestingBrickParts(); } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/NextLookBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/NextLookBrick.java index c0a66516a0f..d88177b6748 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/NextLookBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/NextLookBrick.java @@ -45,17 +45,12 @@ public View getPrototypeView(Context context) { View view = super.getPrototypeView(context); if (ProjectManager.getInstance().getCurrentSprite().getName().equals(context.getString(R.string.background))) { - TextView textField = (TextView) view.findViewById(R.id.brick_next_look_text_view); + TextView textField = view.findViewById(R.id.brick_next_look_text_view); textField.setText(R.string.brick_next_background); } return view; } - @Override - public Brick clone() { - return new NextLookBrick(); - } - @Override public int getViewResource() { return R.layout.brick_next_look; @@ -65,7 +60,7 @@ public int getViewResource() { public View getView(Context context) { super.getView(context); if (ProjectManager.getInstance().getCurrentSprite().getName().equals(context.getString(R.string.background))) { - TextView textField = (TextView) view.findViewById(R.id.brick_next_look_text_view); + TextView textField = view.findViewById(R.id.brick_next_look_text_view); textField.setText(R.string.brick_next_background); } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/NoteBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/NoteBrick.java index 57c00e09936..ca3c279f7a8 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/NoteBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/NoteBrick.java @@ -36,8 +36,8 @@ import java.util.List; public class NoteBrick extends FormulaBrick implements OnClickListener { + private static final long serialVersionUID = 1L; - private transient View prototypeView; public NoteBrick() { addAllowedBrickField(BrickField.NOTE); @@ -64,19 +64,17 @@ public int getViewResource() { @Override public View getView(final Context context) { super.getView(context); - TextView textField = (TextView) view.findViewById(R.id.brick_note_edit_text); + TextView textField = view.findViewById(R.id.brick_note_edit_text); getFormulaWithBrickField(BrickField.NOTE).setTextFieldId(R.id.brick_note_edit_text); getFormulaWithBrickField(BrickField.NOTE).refreshTextField(view); - textField.setOnClickListener(this); - return view; } @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textSpeak = (TextView) prototypeView.findViewById(R.id.brick_note_edit_text); + View prototypeView = super.getPrototypeView(context); + TextView textSpeak = prototypeView.findViewById(R.id.brick_note_edit_text); textSpeak.setText(context.getString(R.string.brick_note_default_value)); return prototypeView; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PenDownBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PenDownBrick.java index a3cedaddfcf..065fa258973 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PenDownBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PenDownBrick.java @@ -22,9 +22,6 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; - import org.catrobat.catroid.R; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; @@ -38,28 +35,11 @@ public class PenDownBrick extends BrickBaseType { public PenDownBrick() { } - @Override - public View getPrototypeView(Context context) { - View view = super.getPrototypeView(context); - return view; - } - - @Override - public Brick clone() { - return new PenDownBrick(); - } - @Override public int getViewResource() { return R.layout.brick_pen_down; } - @Override - public View getView(Context context) { - super.getView(context); - return view; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createPenDownAction(sprite)); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PenUpBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PenUpBrick.java index 3f87b741f69..f49fece0a63 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PenUpBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PenUpBrick.java @@ -22,9 +22,6 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; - import org.catrobat.catroid.R; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; @@ -38,29 +35,11 @@ public class PenUpBrick extends BrickBaseType { public PenUpBrick() { } - @Override - public View getPrototypeView(Context context) { - View view = super.getPrototypeView(context); - - return view; - } - - @Override - public Brick clone() { - return new PenUpBrick(); - } - @Override public int getViewResource() { return R.layout.brick_pen_up; } - @Override - public View getView(Context context) { - super.getView(context); - return view; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createPenUpAction(sprite)); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroIfLogicBeginBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroIfLogicBeginBrick.java index fcfab6a13e3..4b085fc2d0c 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroIfLogicBeginBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroIfLogicBeginBrick.java @@ -35,13 +35,13 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; -import java.util.ArrayList; import java.util.LinkedList; import java.util.List; public class PhiroIfLogicBeginBrick extends IfLogicBeginBrick implements OnItemSelectedListener { private static final long serialVersionUID = 1L; + private int sensorSpinnerPosition = 0; public PhiroIfLogicBeginBrick() { @@ -69,11 +69,6 @@ public void setIfEndBrick(IfLogicEndBrick ifEndBrick) { this.ifEndBrick = ifEndBrick; } - @Override - public Brick clone() { - return new PhiroIfLogicBeginBrick(); - } - @Override public void showFormulaEditorToEditFormula(View view) { } @@ -142,21 +137,6 @@ public void initialize() { ifEndBrick = new IfLogicEndBrick(ifElseBrick, this); } - @Override - public List getAllNestingBrickParts(boolean sorted) { - List nestingBrickList = new ArrayList(); - if (sorted) { - nestingBrickList.add(this); - nestingBrickList.add(ifElseBrick); - nestingBrickList.add(ifEndBrick); - } else { - nestingBrickList.add(this); - nestingBrickList.add(ifEndBrick); - } - - return nestingBrickList; - } - @Override public boolean isDraggableOver(Brick brick) { return ifElseBrick != null; diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroMotorMoveBackwardBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroMotorMoveBackwardBrick.java index 331b58d0bc9..81a2b8c0977 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroMotorMoveBackwardBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroMotorMoveBackwardBrick.java @@ -43,16 +43,13 @@ import java.util.List; public class PhiroMotorMoveBackwardBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - private transient View prototypeView; + private static final long serialVersionUID = 1L; private String motor; private transient Motor motorEnum; - private transient TextView editSpeed; - private transient SingleSeekbar speedSeekbar = - new SingleSeekbar(this, BrickField.PHIRO_SPEED, R.string.phiro_motor_speed); + private transient SingleSeekbar speedSeekbar = new SingleSeekbar(this, BrickField.PHIRO_SPEED, R.string.phiro_motor_speed); public enum Motor { MOTOR_LEFT, MOTOR_RIGHT, MOTOR_BOTH @@ -96,11 +93,11 @@ public int getRequiredResources() { @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textSpeed = (TextView) prototypeView.findViewById(R.id.brick_phiro_motor_backward_action_speed_edit_text); + View prototypeView = super.getPrototypeView(context); + TextView textSpeed = prototypeView.findViewById(R.id.brick_phiro_motor_backward_action_speed_edit_text); textSpeed.setText(formatNumberForPrototypeView(BrickValues.PHIRO_SPEED)); - Spinner phiroProMotorSpinner = (Spinner) prototypeView.findViewById(R.id.brick_phiro_motor_backward_action_spinner); + Spinner phiroProMotorSpinner = prototypeView.findViewById(R.id.brick_phiro_motor_backward_action_spinner); ArrayAdapter motorAdapter = ArrayAdapter.createFromResource(context, R.array.brick_phiro_select_motor_spinner, android.R.layout.simple_spinner_item); @@ -113,7 +110,7 @@ public View getPrototypeView(Context context) { } @Override - public Brick clone() { + public BrickBaseType clone() { return new PhiroMotorMoveBackwardBrick(motor, getFormulaWithBrickField(BrickField.PHIRO_SPEED).clone()); } @@ -131,7 +128,7 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - editSpeed = (TextView) view.findViewById(R.id.brick_phiro_motor_backward_action_speed_edit_text); + TextView editSpeed = view.findViewById(R.id.brick_phiro_motor_backward_action_speed_edit_text); getFormulaWithBrickField(BrickField.PHIRO_SPEED).setTextFieldId(R.id.brick_phiro_motor_backward_action_speed_edit_text); getFormulaWithBrickField(BrickField.PHIRO_SPEED).refreshTextField(view); @@ -140,7 +137,7 @@ public View getView(Context context) { ArrayAdapter motorAdapter = ArrayAdapter.createFromResource(context, R.array.brick_phiro_select_motor_spinner, android.R.layout.simple_spinner_item); motorAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - Spinner motorSpinner = (Spinner) view.findViewById(R.id.brick_phiro_motor_backward_action_spinner); + Spinner motorSpinner = view.findViewById(R.id.brick_phiro_motor_backward_action_spinner); motorSpinner.setAdapter(motorAdapter); motorSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroMotorMoveForwardBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroMotorMoveForwardBrick.java index c22fc5fa01b..d2adcefdd90 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroMotorMoveForwardBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroMotorMoveForwardBrick.java @@ -46,11 +46,8 @@ public class PhiroMotorMoveForwardBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - private transient View prototypeView; - private String motor; private transient Motor motorEnum; - private transient TextView editSpeed; private transient SingleSeekbar speedSeekbar = new SingleSeekbar(this, BrickField.PHIRO_SPEED, R.string.phiro_motor_speed); @@ -98,7 +95,7 @@ public int getRequiredResources() { @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); + View prototypeView = super.getPrototypeView(context); TextView textSpeed = (TextView) prototypeView.findViewById(R.id.brick_phiro_motor_forward_action_speed_edit_text); textSpeed.setText(formatNumberForPrototypeView(BrickValues.PHIRO_SPEED)); @@ -115,7 +112,7 @@ public View getPrototypeView(Context context) { } @Override - public Brick clone() { + public BrickBaseType clone() { return new PhiroMotorMoveForwardBrick(motor, getFormulaWithBrickField(BrickField.PHIRO_SPEED).clone()); } @@ -142,7 +139,7 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - editSpeed = (TextView) view.findViewById(R.id.brick_phiro_motor_forward_action_speed_edit_text); + TextView editSpeed = (TextView) view.findViewById(R.id.brick_phiro_motor_forward_action_speed_edit_text); getFormulaWithBrickField(BrickField.PHIRO_SPEED).setTextFieldId(R.id.brick_phiro_motor_forward_action_speed_edit_text); getFormulaWithBrickField(BrickField.PHIRO_SPEED).refreshTextField(view); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroRGBLightBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroRGBLightBrick.java index 7d36f9c592f..a5d15bd0797 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroRGBLightBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroRGBLightBrick.java @@ -45,17 +45,12 @@ public class PhiroRGBLightBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - private transient View prototypeView; - public enum Eye { LEFT, RIGHT, BOTH } private String eye; private transient Eye eyeEnum; - private transient TextView editRedValue; - private transient TextView editGreenValue; - private transient TextView editBlueValue; private transient ColorSeekbar colorSeekbar = new ColorSeekbar(this, BrickField.PHIRO_LIGHT_RED, BrickField.PHIRO_LIGHT_GREEN, BrickField.PHIRO_LIGHT_BLUE); @@ -108,18 +103,18 @@ public int getRequiredResources() { @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); + View prototypeView = super.getPrototypeView(context); - TextView textValueRed = (TextView) prototypeView.findViewById(R.id.brick_phiro_rgb_led_action_red_edit_text); + TextView textValueRed = prototypeView.findViewById(R.id.brick_phiro_rgb_led_action_red_edit_text); textValueRed.setText(formatNumberForPrototypeView(BrickValues.PHIRO_VALUE_RED)); - TextView textValueGreen = (TextView) prototypeView.findViewById(R.id.brick_phiro_rgb_led_action_green_edit_text); + TextView textValueGreen = prototypeView.findViewById(R.id.brick_phiro_rgb_led_action_green_edit_text); textValueGreen.setText(formatNumberForPrototypeView(BrickValues.PHIRO_VALUE_GREEN)); - TextView textValueBlue = (TextView) prototypeView.findViewById(R.id.brick_phiro_rgb_led_action_blue_edit_text); + TextView textValueBlue = prototypeView.findViewById(R.id.brick_phiro_rgb_led_action_blue_edit_text); textValueBlue.setText(formatNumberForPrototypeView(BrickValues.PHIRO_VALUE_BLUE)); - Spinner eyeSpinner = (Spinner) prototypeView.findViewById(R.id.brick_phiro_rgb_light_spinner); + Spinner eyeSpinner = prototypeView.findViewById(R.id.brick_phiro_rgb_light_spinner); ArrayAdapter eyeAdapter = ArrayAdapter.createFromResource(context, R.array.brick_phiro_select_light_spinner, android.R.layout.simple_spinner_item); @@ -132,7 +127,7 @@ public View getPrototypeView(Context context) { } @Override - public Brick clone() { + public BrickBaseType clone() { return new PhiroRGBLightBrick(eye, getFormulaWithBrickField(BrickField.PHIRO_LIGHT_RED).clone(), getFormulaWithBrickField(BrickField.PHIRO_LIGHT_GREEN).clone(), @@ -152,19 +147,19 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - editRedValue = (TextView) view.findViewById(R.id.brick_phiro_rgb_led_action_red_edit_text); + TextView editRedValue = view.findViewById(R.id.brick_phiro_rgb_led_action_red_edit_text); getFormulaWithBrickField(BrickField.PHIRO_LIGHT_RED).setTextFieldId(R.id.brick_phiro_rgb_led_action_red_edit_text); getFormulaWithBrickField(BrickField.PHIRO_LIGHT_RED).refreshTextField(view); editRedValue.setOnClickListener(this); - editGreenValue = (TextView) view.findViewById(R.id.brick_phiro_rgb_led_action_green_edit_text); + TextView editGreenValue = view.findViewById(R.id.brick_phiro_rgb_led_action_green_edit_text); getFormulaWithBrickField(BrickField.PHIRO_LIGHT_GREEN).setTextFieldId(R.id.brick_phiro_rgb_led_action_green_edit_text); getFormulaWithBrickField(BrickField.PHIRO_LIGHT_GREEN).refreshTextField(view); editGreenValue.setOnClickListener(this); - editBlueValue = (TextView) view.findViewById(R.id.brick_phiro_rgb_led_action_blue_edit_text); + TextView editBlueValue = view.findViewById(R.id.brick_phiro_rgb_led_action_blue_edit_text); getFormulaWithBrickField(BrickField.PHIRO_LIGHT_BLUE).setTextFieldId(R.id.brick_phiro_rgb_led_action_blue_edit_text); getFormulaWithBrickField(BrickField.PHIRO_LIGHT_BLUE).refreshTextField(view); @@ -173,7 +168,7 @@ public View getView(Context context) { ArrayAdapter eyeAdapter = ArrayAdapter.createFromResource(context, R.array.brick_phiro_select_light_spinner, android.R.layout.simple_spinner_item); eyeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - Spinner eyeSpinner = (Spinner) view.findViewById(R.id.brick_phiro_rgb_light_spinner); + Spinner eyeSpinner = view.findViewById(R.id.brick_phiro_rgb_light_spinner); eyeSpinner.setAdapter(eyeAdapter); eyeSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PlaceAtBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PlaceAtBrick.java index 61bd574f536..67ce5be385a 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PlaceAtBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PlaceAtBrick.java @@ -36,9 +36,8 @@ import java.util.List; public class PlaceAtBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - private transient View prototypeView; + private static final long serialVersionUID = 1L; public PlaceAtBrick() { addAllowedBrickField(BrickField.X_POSITION); @@ -53,14 +52,6 @@ public PlaceAtBrick(Formula xPosition, Formula yPosition) { initializeBrickFields(xPosition, yPosition); } - public void setXPosition(Formula xPosition) { - setFormulaWithBrickField(BrickField.X_POSITION, xPosition); - } - - public void setYPosition(Formula yPosition) { - setFormulaWithBrickField(BrickField.Y_POSITION, yPosition); - } - private void initializeBrickFields(Formula xPosition, Formula yPosition) { addAllowedBrickField(BrickField.X_POSITION); addAllowedBrickField(BrickField.Y_POSITION); @@ -70,7 +61,8 @@ private void initializeBrickFields(Formula xPosition, Formula yPosition) { @Override public int getRequiredResources() { - return getFormulaWithBrickField(BrickField.Y_POSITION).getRequiredResources() | getFormulaWithBrickField(BrickField.X_POSITION).getRequiredResources(); + return getFormulaWithBrickField(BrickField.Y_POSITION).getRequiredResources() + | getFormulaWithBrickField(BrickField.X_POSITION).getRequiredResources(); } @Override @@ -81,13 +73,13 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - TextView editX = (TextView) view.findViewById(R.id.brick_place_at_edit_text_x); + TextView editX = view.findViewById(R.id.brick_place_at_edit_text_x); getFormulaWithBrickField(BrickField.X_POSITION).setTextFieldId(R.id.brick_place_at_edit_text_x); getFormulaWithBrickField(BrickField.X_POSITION).refreshTextField(view); editX.setOnClickListener(this); - TextView editY = (TextView) view.findViewById(R.id.brick_place_at_edit_text_y); + TextView editY = view.findViewById(R.id.brick_place_at_edit_text_y); getFormulaWithBrickField(BrickField.Y_POSITION).setTextFieldId(R.id.brick_place_at_edit_text_y); getFormulaWithBrickField(BrickField.Y_POSITION).refreshTextField(view); editY.setOnClickListener(this); @@ -96,10 +88,10 @@ public View getView(Context context) { @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textX = (TextView) prototypeView.findViewById(R.id.brick_place_at_edit_text_x); + View prototypeView = super.getPrototypeView(context); + TextView textX = prototypeView.findViewById(R.id.brick_place_at_edit_text_x); textX.setText(formatNumberForPrototypeView(BrickValues.X_POSITION)); - TextView textY = (TextView) prototypeView.findViewById(R.id.brick_place_at_edit_text_y); + TextView textY = prototypeView.findViewById(R.id.brick_place_at_edit_text_y); textY.setText(formatNumberForPrototypeView(BrickValues.Y_POSITION)); return prototypeView; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PlaySoundAndWaitBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PlaySoundAndWaitBrick.java index 271af21b4e5..adb9f82d10a 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PlaySoundAndWaitBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PlaySoundAndWaitBrick.java @@ -40,13 +40,6 @@ public class PlaySoundAndWaitBrick extends PlaySoundBrick { public PlaySoundAndWaitBrick() { } - @Override - public Brick clone() { - PlaySoundAndWaitBrick clone = new PlaySoundAndWaitBrick(); - clone.setSound(sound); - return clone; - } - @Override protected void onViewCreated(View prototypeView) { ((TextView) view.findViewById(R.id.brick_play_sound_text_view)) diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PlaySoundBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PlaySoundBrick.java index 6844087f516..0c73dfc7b29 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PlaySoundBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PlaySoundBrick.java @@ -42,8 +42,7 @@ import java.util.List; public class PlaySoundBrick extends BrickBaseType implements - SpinnerAdapterWithNewOption.OnNewOptionInDropDownClickListener, - NewItemInterface { + SpinnerAdapterWithNewOption.OnNewOptionInDropDownClickListener, NewItemInterface { private static final long serialVersionUID = 1L; @@ -65,9 +64,10 @@ public void setSound(SoundInfo sound) { } @Override - public Brick clone() { - PlaySoundBrick clone = new PlaySoundBrick(); - clone.setSound(sound); + public BrickBaseType clone() throws CloneNotSupportedException { + PlaySoundBrick clone = (PlaySoundBrick) super.clone(); + clone.spinner = null; + clone.spinnerAdapter = null; return clone; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PointInDirectionBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PointInDirectionBrick.java index 50db2c0bc40..20e7e1f6e91 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PointInDirectionBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PointInDirectionBrick.java @@ -39,8 +39,6 @@ public class PointInDirectionBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - private transient View prototypeView; - public enum Direction { RIGHT(90), LEFT(-90), UP(0), DOWN(180); @@ -89,19 +87,17 @@ public int getViewResource() { @Override public View getView(final Context context) { super.getView(context); - TextView setAngleTextField = (TextView) view.findViewById(R.id.brick_point_in_direction_edit_text); - + TextView setAngleTextField = view.findViewById(R.id.brick_point_in_direction_edit_text); getFormulaWithBrickField(BrickField.DEGREES).setTextFieldId(R.id.brick_point_in_direction_edit_text); getFormulaWithBrickField(BrickField.DEGREES).refreshTextField(view); - setAngleTextField.setOnClickListener(this); return view; } @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView setAngleTextView = (TextView) prototypeView + View prototypeView = super.getPrototypeView(context); + TextView setAngleTextView = prototypeView .findViewById(R.id.brick_point_in_direction_edit_text); setAngleTextView.setText(formatNumberForPrototypeView(BrickValues.POINT_IN_DIRECTION)); return prototypeView; @@ -109,8 +105,8 @@ public View getPrototypeView(Context context) { @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createPointInDirectionAction(sprite, - getFormulaWithBrickField(BrickField.DEGREES))); + sequence.addAction(sprite.getActionFactory() + .createPointInDirectionAction(sprite, getFormulaWithBrickField(BrickField.DEGREES))); return null; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PointToBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PointToBrick.java index eb9e58e0795..124b71a56c2 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PointToBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PointToBrick.java @@ -39,8 +39,7 @@ import java.util.List; public class PointToBrick extends BrickBaseType implements - SpinnerAdapterWithNewOption.OnNewOptionInDropDownClickListener, - NewItemInterface { + SpinnerAdapterWithNewOption.OnNewOptionInDropDownClickListener, NewItemInterface { private static final long serialVersionUID = 1L; @@ -58,8 +57,11 @@ public PointToBrick(Sprite pointedSprite) { } @Override - public Brick clone() { - return new PointToBrick(pointedObject); + public BrickBaseType clone() throws CloneNotSupportedException { + PointToBrick clone = (PointToBrick) super.clone(); + clone.spinner = null; + clone.spinnerAdapter = null; + return clone; } @Override @@ -127,7 +129,6 @@ public void addItem(Sprite item) { public View getPrototypeView(Context context) { View view = super.getPrototypeView(context); spinner = view.findViewById(R.id.brick_point_to_spinner); - spinnerAdapter = new SpinnerAdapterWithNewOption(context, getSpriteNames()); spinner.setAdapter(spinnerAdapter); spinner.setSelection(spinnerAdapter.getPosition(pointedObject != null ? pointedObject.getName() : null)); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PreviousLookBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PreviousLookBrick.java index 794bc3a97a3..4459e377a43 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PreviousLookBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PreviousLookBrick.java @@ -40,35 +40,28 @@ public class PreviousLookBrick extends BrickBaseType { public PreviousLookBrick() { } + @Override + public int getViewResource() { + return R.layout.brick_previous_look; + } + @Override public View getPrototypeView(Context context) { View view = super.getPrototypeView(context); - if (ProjectManager.getInstance().getCurrentSprite().getName().equals(context.getString(R.string.background))) { - TextView textField = (TextView) view.findViewById(R.id.brick_previous_look_text_view); + TextView textField = view.findViewById(R.id.brick_previous_look_text_view); textField.setText(R.string.brick_previous_background); } return view; } - @Override - public Brick clone() { - return new PreviousLookBrick(); - } - - @Override - public int getViewResource() { - return R.layout.brick_previous_look; - } - @Override public View getView(Context context) { super.getView(context); if (ProjectManager.getInstance().getCurrentSprite().getName().equals(context.getString(R.string.background))) { - TextView textField = (TextView) view.findViewById(R.id.brick_previous_look_text_view); + TextView textField = view.findViewById(R.id.brick_previous_look_text_view); textField.setText(R.string.brick_previous_background); } - return view; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/RaspiIfLogicBeginBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/RaspiIfLogicBeginBrick.java index 29bb247fd69..c30a67b68f0 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/RaspiIfLogicBeginBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/RaspiIfLogicBeginBrick.java @@ -32,7 +32,6 @@ import org.catrobat.catroid.content.ActionFactory; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; -import org.catrobat.catroid.formulaeditor.Formula; import java.util.LinkedList; import java.util.List; @@ -42,27 +41,17 @@ public class RaspiIfLogicBeginBrick extends IfLogicBeginBrick { private static final long serialVersionUID = 1L; public RaspiIfLogicBeginBrick() { - super(); } public RaspiIfLogicBeginBrick(int condition) { super(condition); } - public RaspiIfLogicBeginBrick(Formula condition) { - super(condition); - } - @Override public int getRequiredResources() { return SOCKET_RASPI; } - @Override - public Brick clone() { - return new RaspiIfLogicBeginBrick(getFormulaWithBrickField(BrickField.IF_CONDITION).clone()); - } - @Override public int getViewResource() { return R.layout.brick_raspi_if_begin_if; diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/RepeatBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/RepeatBrick.java index 0e9cab55749..bf8c1659dfb 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/RepeatBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/RepeatBrick.java @@ -47,9 +47,7 @@ public class RepeatBrick extends FormulaBrick implements LoopBeginBrick { private static final long serialVersionUID = 1L; - private transient View prototypeView; - - protected transient LoopEndBrick loopEndBrick; + private transient LoopEndBrick loopEndBrick; public RepeatBrick() { addAllowedBrickField(BrickField.TIMES_TO_REPEAT); @@ -74,7 +72,7 @@ private void initializeBrickFields(Formula timesToRepeat) { } @Override - public Brick clone() { + public BrickBaseType clone() { return new RepeatBrick(getFormulaWithBrickField(BrickField.TIMES_TO_REPEAT).clone()); } @@ -91,11 +89,11 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - TextView edit = (TextView) view.findViewById(R.id.brick_repeat_edit_text); + TextView edit = view.findViewById(R.id.brick_repeat_edit_text); getFormulaWithBrickField(BrickField.TIMES_TO_REPEAT).setTextFieldId(R.id.brick_repeat_edit_text); getFormulaWithBrickField(BrickField.TIMES_TO_REPEAT).refreshTextField(view); - TextView times = (TextView) view.findViewById(R.id.brick_repeat_time_text_view); + TextView times = view.findViewById(R.id.brick_repeat_time_text_view); if (getFormulaWithBrickField(BrickField.TIMES_TO_REPEAT).isSingleNumberFormula()) { try { @@ -121,9 +119,9 @@ public View getView(Context context) { @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textRepeat = (TextView) prototypeView.findViewById(R.id.brick_repeat_edit_text); - TextView times = (TextView) prototypeView.findViewById(R.id.brick_repeat_time_text_view); + View prototypeView = super.getPrototypeView(context); + TextView textRepeat = prototypeView.findViewById(R.id.brick_repeat_edit_text); + TextView times = prototypeView.findViewById(R.id.brick_repeat_time_text_view); textRepeat.setText(formatNumberForPrototypeView(BrickValues.REPEAT)); times.setText(context.getResources().getQuantityString(R.plurals.time_plural, Utils.convertDoubleToPluralInteger(BrickValues.REPEAT))); @@ -167,7 +165,7 @@ public boolean isDraggableOver(Brick brick) { } @Override - public List getAllNestingBrickParts(boolean sorted) { + public List getAllNestingBrickParts() { List nestingBrickList = new ArrayList(); nestingBrickList.add(this); nestingBrickList.add(loopEndBrick); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/RepeatUntilBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/RepeatUntilBrick.java index 8620440988a..50d546b78c1 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/RepeatUntilBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/RepeatUntilBrick.java @@ -43,9 +43,7 @@ public class RepeatUntilBrick extends FormulaBrick implements LoopBeginBrick { private static final long serialVersionUID = 1L; - private transient View prototypeView; - - protected transient LoopEndBrick loopEndBrick; + private transient LoopEndBrick loopEndBrick; public RepeatUntilBrick(int condition) { initializeBrickFields(new Formula(condition)); @@ -65,11 +63,6 @@ private void initializeBrickFields(Formula condition) { setFormulaWithBrickField(BrickField.REPEAT_UNTIL_CONDITION, condition); } - @Override - public Brick clone() { - return new RepeatUntilBrick(getFormulaWithBrickField(BrickField.REPEAT_UNTIL_CONDITION).clone()); - } - @Override public void showFormulaEditorToEditFormula(View view) { FormulaEditorFragment.showFragment(view, this, BrickField.REPEAT_UNTIL_CONDITION); @@ -83,7 +76,7 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - TextView edit = (TextView) view.findViewById(R.id.brick_repeat_until_edit_text); + TextView edit = view.findViewById(R.id.brick_repeat_until_edit_text); getFormulaWithBrickField(BrickField.REPEAT_UNTIL_CONDITION).setTextFieldId(R.id.brick_repeat_until_edit_text); getFormulaWithBrickField(BrickField.REPEAT_UNTIL_CONDITION).refreshTextField(view); @@ -93,8 +86,8 @@ public View getView(Context context) { @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textRepeat = (TextView) prototypeView.findViewById(R.id.brick_repeat_until_edit_text); + View prototypeView = super.getPrototypeView(context); + TextView textRepeat = prototypeView.findViewById(R.id.brick_repeat_until_edit_text); textRepeat.setText(BrickValues.IF_CONDITION); return prototypeView; } @@ -137,7 +130,7 @@ public boolean isDraggableOver(Brick brick) { } @Override - public List getAllNestingBrickParts(boolean sorted) { + public List getAllNestingBrickParts() { List nestingBrickList = new ArrayList(); nestingBrickList.add(this); nestingBrickList.add(loopEndBrick); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ReplaceItemInUserListBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ReplaceItemInUserListBrick.java index 5e0ea9f4940..59fd38ceb14 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ReplaceItemInUserListBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ReplaceItemInUserListBrick.java @@ -76,17 +76,17 @@ public int getViewResource() { @Override public View getView(final Context context) { super.getView(context); - TextView textFieldValue = (TextView) view.findViewById(R.id.brick_replace_item_in_userlist_value_edit_text); + TextView textFieldValue = view.findViewById(R.id.brick_replace_item_in_userlist_value_edit_text); getFormulaWithBrickField(BrickField.REPLACE_ITEM_IN_USERLIST_VALUE).setTextFieldId(R.id.brick_replace_item_in_userlist_value_edit_text); getFormulaWithBrickField(BrickField.REPLACE_ITEM_IN_USERLIST_VALUE).refreshTextField(view); textFieldValue.setOnClickListener(this); - TextView textFieldIndex = (TextView) view.findViewById(R.id.brick_replace_item_in_userlist_at_index_edit_text); + TextView textFieldIndex = view.findViewById(R.id.brick_replace_item_in_userlist_at_index_edit_text); getFormulaWithBrickField(BrickField.REPLACE_ITEM_IN_USERLIST_INDEX).setTextFieldId(R.id.brick_replace_item_in_userlist_at_index_edit_text); getFormulaWithBrickField(BrickField.REPLACE_ITEM_IN_USERLIST_INDEX).refreshTextField(view); textFieldIndex.setOnClickListener(this); - Spinner userListSpinner = (Spinner) view.findViewById(R.id.replace_item_in_userlist_spinner); + Spinner userListSpinner = view.findViewById(R.id.replace_item_in_userlist_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyEditedScene().getDataContainer() .createDataAdapter(context, ProjectManager.getInstance().getCurrentSprite()); UserListAdapterWrapper userListAdapterWrapper = new UserListAdapterWrapper(context, dataAdapter); @@ -104,7 +104,7 @@ public View getView(final Context context) { @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - Spinner userListSpinner = (Spinner) prototypeView.findViewById(R.id.replace_item_in_userlist_spinner); + Spinner userListSpinner = prototypeView.findViewById(R.id.replace_item_in_userlist_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyEditedScene().getDataContainer() .createDataAdapter(context, ProjectManager.getInstance().getCurrentSprite()); @@ -115,10 +115,10 @@ public View getPrototypeView(Context context) { userListSpinner.setAdapter(userListAdapterWrapper); setSpinnerSelection(userListSpinner, null); - TextView textViewValueToInsert = (TextView) prototypeView + TextView textViewValueToInsert = prototypeView .findViewById(R.id.brick_replace_item_in_userlist_value_edit_text); textViewValueToInsert.setText(formatNumberForPrototypeView(BrickValues.REPLACE_ITEM_IN_USERLIST_VALUE)); - TextView textViewInsertIndex = (TextView) prototypeView + TextView textViewInsertIndex = prototypeView .findViewById(R.id.brick_replace_item_in_userlist_at_index_edit_text); textViewInsertIndex.setText(formatNumberForPrototypeView(BrickValues.REPLACE_ITEM_IN_USERLIST_INDEX)); @@ -131,13 +131,6 @@ public void onNewList(UserList userList) { setSpinnerSelection(spinner, userList); } - @Override - public Brick clone() { - return new ReplaceItemInUserListBrick( - getFormulaWithBrickField(BrickField.REPLACE_ITEM_IN_USERLIST_VALUE).clone(), - getFormulaWithBrickField(BrickField.REPLACE_ITEM_IN_USERLIST_INDEX).clone(), userList); - } - @Override public void showFormulaEditorToEditFormula(View view) { switch (view.getId()) { diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SceneStartBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SceneStartBrick.java index 236dd1d0711..fdd17987d0a 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SceneStartBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SceneStartBrick.java @@ -41,8 +41,7 @@ import java.util.List; public class SceneStartBrick extends BrickBaseType implements - SpinnerAdapterWithNewOption.OnNewOptionInDropDownClickListener, - NewItemInterface { + SpinnerAdapterWithNewOption.OnNewOptionInDropDownClickListener, NewItemInterface { private static final long serialVersionUID = 1L; @@ -65,8 +64,11 @@ public void setSceneToStart(String sceneToStart) { } @Override - public Brick clone() { - return new SceneStartBrick(sceneToStart); + public BrickBaseType clone() throws CloneNotSupportedException { + SceneStartBrick clone = (SceneStartBrick) super.clone(); + clone.spinner = null; + clone.spinnerAdapter = null; + return clone; } @Override diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SceneTransitionBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SceneTransitionBrick.java index 62021586404..5687fe3f426 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SceneTransitionBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SceneTransitionBrick.java @@ -41,8 +41,7 @@ import java.util.List; public class SceneTransitionBrick extends BrickBaseType implements - SpinnerAdapterWithNewOption.OnNewOptionInDropDownClickListener, - NewItemInterface { + SpinnerAdapterWithNewOption.OnNewOptionInDropDownClickListener, NewItemInterface { private static final long serialVersionUID = 1L; @@ -65,8 +64,11 @@ public void setSceneForTransition(String sceneForTransition) { } @Override - public Brick clone() { - return new SceneTransitionBrick(sceneForTransition); + public BrickBaseType clone() throws CloneNotSupportedException { + SceneTransitionBrick clone = (SceneTransitionBrick) super.clone(); + clone.spinner = null; + clone.spinnerAdapter = null; + return clone; } @Override diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ScriptBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ScriptBrick.java index aa0fa9c8e2b..fa72d27aa57 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ScriptBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ScriptBrick.java @@ -26,5 +26,5 @@ public interface ScriptBrick extends AllowedAfterDeadEndBrick, Brick { - Script getScriptSafe(); + Script getScript(); } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetBackgroundAndWaitBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetBackgroundAndWaitBrick.java index e3fb5ddf04b..79509acba0c 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetBackgroundAndWaitBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetBackgroundAndWaitBrick.java @@ -39,13 +39,6 @@ public class SetBackgroundAndWaitBrick extends SetBackgroundBrick { public SetBackgroundAndWaitBrick() { } - @Override - public Brick clone() { - SetBackgroundAndWaitBrick clonedBrick = new SetBackgroundAndWaitBrick(); - clonedBrick.setLook(look); - return clonedBrick; - } - @Override protected void onViewCreated(View view) { ((TextView) view.findViewById(R.id.brick_set_look_text_view)).setText(R.string.brick_set_background_and_wait); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetBackgroundBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetBackgroundBrick.java index dcc3c1672ff..696ef4f09ba 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetBackgroundBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetBackgroundBrick.java @@ -40,13 +40,6 @@ public class SetBackgroundBrick extends SetLookBrick { public SetBackgroundBrick() { } - @Override - public Brick clone() { - SetBackgroundBrick clonedBrick = new SetBackgroundBrick(); - clonedBrick.setLook(look); - return clonedBrick; - } - @Override protected void onViewCreated(View view) { ((TextView) view.findViewById(R.id.brick_set_look_text_view)).setText(R.string.brick_set_background); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetBrightnessBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetBrightnessBrick.java index b3f67973f1d..b204fc812da 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetBrightnessBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetBrightnessBrick.java @@ -36,9 +36,8 @@ import java.util.List; public class SetBrightnessBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - private transient View prototypeView; + private static final long serialVersionUID = 1L; public SetBrightnessBrick() { addAllowedBrickField(BrickField.BRIGHTNESS); @@ -70,7 +69,7 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - TextView editX = (TextView) view.findViewById(R.id.brick_set_brightness_edit_text); + TextView editX = view.findViewById(R.id.brick_set_brightness_edit_text); getFormulaWithBrickField(BrickField.BRIGHTNESS).setTextFieldId(R.id.brick_set_brightness_edit_text); getFormulaWithBrickField(BrickField.BRIGHTNESS).refreshTextField(view); @@ -80,8 +79,8 @@ public View getView(Context context) { @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textSetBrightness = (TextView) prototypeView + View prototypeView = super.getPrototypeView(context); + TextView textSetBrightness = prototypeView .findViewById(R.id.brick_set_brightness_edit_text); textSetBrightness.setText(formatNumberForPrototypeView(BrickValues.SET_BRIGHTNESS_TO)); return prototypeView; diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetColorBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetColorBrick.java index 199365993ca..56ac4449448 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetColorBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetColorBrick.java @@ -40,8 +40,6 @@ public class SetColorBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - private transient View prototypeView; - public SetColorBrick() { addAllowedBrickField(BrickField.COLOR); } @@ -72,7 +70,7 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - TextView edit = (TextView) view.findViewById(R.id.brick_set_color_edit_text); + TextView edit = view.findViewById(R.id.brick_set_color_edit_text); getFormulaWithBrickField(BrickField.COLOR).setTextFieldId(R.id.brick_set_color_edit_text); getFormulaWithBrickField(BrickField.COLOR).refreshTextField(view); @@ -82,8 +80,8 @@ public View getView(Context context) { @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textSetSizeTo = (TextView) prototypeView.findViewById(R.id.brick_set_color_edit_text); + View prototypeView = super.getPrototypeView(context); + TextView textSetSizeTo = prototypeView.findViewById(R.id.brick_set_color_edit_text); textSetSizeTo.setText(formatNumberForPrototypeView(BrickValues.SET_COLOR_TO)); return prototypeView; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetLookBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetLookBrick.java index bf4f32416d1..0d2ac59e14a 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetLookBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetLookBrick.java @@ -44,8 +44,7 @@ import java.util.List; public class SetLookBrick extends BrickBaseType implements - SpinnerAdapterWithNewOption.OnNewOptionInDropDownClickListener, - NewItemInterface { + SpinnerAdapterWithNewOption.OnNewOptionInDropDownClickListener, NewItemInterface { private static final long serialVersionUID = 1L; @@ -66,15 +65,16 @@ public void setLook(LookData look) { this.look = look; } - @Override - public Brick clone() { - SetLookBrick clone = new SetLookBrick(); - clone.setLook(look); - return clone; + private Spinner findSpinner(View view) { + return view.findViewById(R.id.brick_set_look_spinner); } - protected Spinner findSpinner(View view) { - return view.findViewById(R.id.brick_set_look_spinner); + @Override + public BrickBaseType clone() throws CloneNotSupportedException { + SetLookBrick clone = (SetLookBrick) super.clone(); + clone.spinner = null; + clone.spinnerAdapter = null; + return clone; } @Override diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetLookByIndexBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetLookByIndexBrick.java index ff682ea5f79..f16778babb3 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetLookByIndexBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetLookByIndexBrick.java @@ -43,7 +43,6 @@ public class SetLookByIndexBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - private transient View prototypeView; @EventWrapper.WaitMode protected transient int wait = NO_WAIT; @@ -80,11 +79,11 @@ public int getViewResource() { public View getView(Context context) { super.getView(context); if (getSprite().getName().equals(context.getString(R.string.background))) { - TextView textField = (TextView) view.findViewById(R.id.brick_set_look_by_index_label); + TextView textField = view.findViewById(R.id.brick_set_look_by_index_label); textField.setText(R.string.brick_set_background_by_index); } - TextView edit = (TextView) view.findViewById(R.id.brick_set_look_by_index_edit_text); + TextView edit = view.findViewById(R.id.brick_set_look_by_index_edit_text); getFormulaWithBrickField(BrickField.LOOK_INDEX).setTextFieldId(R.id.brick_set_look_by_index_edit_text); getFormulaWithBrickField(BrickField.LOOK_INDEX).refreshTextField(view); edit.setOnClickListener(this); @@ -94,6 +93,7 @@ public View getView(Context context) { @Override public View getPrototypeView(Context context) { + View prototypeView; if (wait == EventWrapper.WAIT) { prototypeView = super.getPrototypeView(context); } else { @@ -101,11 +101,11 @@ public View getPrototypeView(Context context) { } if (getSprite().getName().equals(context.getString(R.string.background))) { - TextView textField = (TextView) prototypeView.findViewById(R.id.brick_set_look_by_index_label); + TextView textField = prototypeView.findViewById(R.id.brick_set_look_by_index_label); textField.setText(R.string.brick_set_background_by_index); } - TextView textSetLookByIndex = (TextView) prototypeView.findViewById(R.id.brick_set_look_by_index_edit_text); + TextView textSetLookByIndex = prototypeView.findViewById(R.id.brick_set_look_by_index_edit_text); textSetLookByIndex.setText(formatNumberForPrototypeView(BrickValues.SET_LOOK_BY_INDEX)); return prototypeView; diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetPenColorBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetPenColorBrick.java index ee8ea6763f6..783eedd6620 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetPenColorBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetPenColorBrick.java @@ -39,21 +39,12 @@ import java.util.List; public class SetPenColorBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - - private transient View prototypeView; - private transient TextView editRedValue; - private transient TextView editGreenValue; - private transient TextView editBlueValue; + private static final long serialVersionUID = 1L; private transient ColorSeekbar colorSeekbar = new ColorSeekbar(this, BrickField.PEN_COLOR_RED, BrickField.PEN_COLOR_GREEN, BrickField.PEN_COLOR_BLUE); - protected Object readResolve() { - return this; - } - public SetPenColorBrick() { addAllowedBrickField(BrickField.PEN_COLOR_RED); addAllowedBrickField(BrickField.PEN_COLOR_GREEN); @@ -79,22 +70,22 @@ private void initializeBrickFields(Formula red, Formula green, Formula blue) { @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); + View prototypeView = super.getPrototypeView(context); - TextView textValueRed = (TextView) prototypeView.findViewById(R.id.brick_set_pen_color_action_red_edit_text); + TextView textValueRed = prototypeView.findViewById(R.id.brick_set_pen_color_action_red_edit_text); textValueRed.setText(formatNumberForPrototypeView(BrickValues.PEN_COLOR.r * 255)); - TextView textValueGreen = (TextView) prototypeView.findViewById(R.id.brick_set_pen_color_action_green_edit_text); + TextView textValueGreen = prototypeView.findViewById(R.id.brick_set_pen_color_action_green_edit_text); textValueGreen.setText(formatNumberForPrototypeView(BrickValues.PEN_COLOR.g * 255)); - TextView textValueBlue = (TextView) prototypeView.findViewById(R.id.brick_set_pen_color_action_blue_edit_text); + TextView textValueBlue = prototypeView.findViewById(R.id.brick_set_pen_color_action_blue_edit_text); textValueBlue.setText(formatNumberForPrototypeView(BrickValues.PEN_COLOR.b * 255)); return prototypeView; } @Override - public Brick clone() { + public BrickBaseType clone() { return new SetPenColorBrick(getFormulaWithBrickField(BrickField.PEN_COLOR_RED).clone(), getFormulaWithBrickField(BrickField.PEN_COLOR_GREEN).clone(), getFormulaWithBrickField(BrickField.PEN_COLOR_BLUE).clone()); @@ -113,19 +104,19 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - editRedValue = (TextView) view.findViewById(R.id.brick_set_pen_color_action_red_edit_text); + TextView editRedValue = view.findViewById(R.id.brick_set_pen_color_action_red_edit_text); getFormulaWithBrickField(BrickField.PEN_COLOR_RED).setTextFieldId(R.id.brick_set_pen_color_action_red_edit_text); getFormulaWithBrickField(BrickField.PEN_COLOR_RED).refreshTextField(view); editRedValue.setOnClickListener(this); - editGreenValue = (TextView) view.findViewById(R.id.brick_set_pen_color_action_green_edit_text); + TextView editGreenValue = view.findViewById(R.id.brick_set_pen_color_action_green_edit_text); getFormulaWithBrickField(BrickField.PEN_COLOR_GREEN).setTextFieldId(R.id.brick_set_pen_color_action_green_edit_text); getFormulaWithBrickField(BrickField.PEN_COLOR_GREEN).refreshTextField(view); editGreenValue.setOnClickListener(this); - editBlueValue = (TextView) view.findViewById(R.id.brick_set_pen_color_action_blue_edit_text); + TextView editBlueValue = view.findViewById(R.id.brick_set_pen_color_action_blue_edit_text); getFormulaWithBrickField(BrickField.PEN_COLOR_BLUE).setTextFieldId(R.id.brick_set_pen_color_action_blue_edit_text); getFormulaWithBrickField(BrickField.PEN_COLOR_BLUE).refreshTextField(view); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetRotationStyleBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetRotationStyleBrick.java index 5cc3df14161..175b39f374a 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetRotationStyleBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetRotationStyleBrick.java @@ -39,10 +39,9 @@ import java.util.List; public class SetRotationStyleBrick extends BrickBaseType { + private static final long serialVersionUID = 1L; - private transient View prototypeView; - private transient Spinner spinner; private int selection; public SetRotationStyleBrick() { @@ -57,7 +56,7 @@ public int getViewResource() { public View getView(Context context) { super.getView(context); BrickViewProvider.setAlphaOnView(view, alphaValue); - spinner = (Spinner) view.findViewById(R.id.brick_set_rotation_style_spinner); + Spinner spinner = view.findViewById(R.id.brick_set_rotation_style_spinner); final ArrayAdapter spinnerAdapter = createSpinnerAdapter(context); SpinnerAdapterWrapper spinnerAdapterWrapper = new SpinnerAdapterWrapper(context, spinnerAdapter); @@ -89,21 +88,14 @@ private ArrayAdapter createSpinnerAdapter(Context context) { @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - - spinner = (Spinner) prototypeView.findViewById(R.id.brick_set_rotation_style_spinner); - + View prototypeView = super.getPrototypeView(context); + Spinner spinner = prototypeView.findViewById(R.id.brick_set_rotation_style_spinner); SpinnerAdapter setLookSpinnerAdapter = createSpinnerAdapter(context); spinner.setAdapter(setLookSpinnerAdapter); spinner.setSelection(selection, true); return prototypeView; } - @Override - public Brick clone() { - return new SetRotationStyleBrick(); - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createSetRotationStyleAction(sprite, selection)); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetTextBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetTextBrick.java index 7ae2cb8f283..d0ca309f71f 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetTextBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetTextBrick.java @@ -37,9 +37,8 @@ import java.util.List; public class SetTextBrick extends FormulaBrick implements View.OnClickListener { - private static final long serialVersionUID = 1L; - private transient View prototypeView; + private static final long serialVersionUID = 1L; public SetTextBrick() { addAllowedBrickField(BrickField.X_DESTINATION); @@ -65,14 +64,6 @@ private void initializeBrickFields(Formula xDestination, Formula yDestination, F setFormulaWithBrickField(BrickField.STRING, text); } - public void setXDestination(Formula xDestination) { - setFormulaWithBrickField(BrickField.X_DESTINATION, xDestination); - } - - public void setYDestination(Formula yDestination) { - setFormulaWithBrickField(BrickField.Y_DESTINATION, yDestination); - } - public void setText(Formula text) { setFormulaWithBrickField(BrickField.STRING, text); } @@ -92,8 +83,8 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - TextView editX = (TextView) view.findViewById(R.id.brick_set_text_edit_text_x); - TextView editY = (TextView) view.findViewById(R.id.brick_set_text_edit_text_y); + TextView editX = view.findViewById(R.id.brick_set_text_edit_text_x); + TextView editY = view.findViewById(R.id.brick_set_text_edit_text_y); getFormulaWithBrickField(BrickField.X_DESTINATION).setTextFieldId(R.id.brick_set_text_edit_text_x); getFormulaWithBrickField(BrickField.X_DESTINATION).refreshTextField(view); @@ -103,7 +94,7 @@ public View getView(Context context) { getFormulaWithBrickField(BrickField.Y_DESTINATION).refreshTextField(view); editY.setOnClickListener(this); - TextView editText = (TextView) view.findViewById(R.id.brick_set_text_edit_text); + TextView editText = view.findViewById(R.id.brick_set_text_edit_text); getFormulaWithBrickField(BrickField.STRING).setTextFieldId(R.id.brick_set_text_edit_text); getFormulaWithBrickField(BrickField.STRING).refreshTextField(view); @@ -114,13 +105,13 @@ public View getView(Context context) { @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); + View prototypeView = super.getPrototypeView(context); - TextView posX = (TextView) prototypeView.findViewById(R.id.brick_set_text_edit_text_x); - TextView posY = (TextView) prototypeView.findViewById(R.id.brick_set_text_edit_text_y); + TextView posX = prototypeView.findViewById(R.id.brick_set_text_edit_text_x); + TextView posY = prototypeView.findViewById(R.id.brick_set_text_edit_text_y); - TextView text = (TextView) prototypeView.findViewById(R.id.brick_set_text_edit_text); - TextView secondText = (TextView) prototypeView.findViewById(R.id.brick_set_text_seconds_text_view); + TextView text = prototypeView.findViewById(R.id.brick_set_text_edit_text); + TextView secondText = prototypeView.findViewById(R.id.brick_set_text_seconds_text_view); posX.setText(formatNumberForPrototypeView(BrickValues.X_POSITION)); posY.setText(formatNumberForPrototypeView(BrickValues.Y_POSITION)); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetVariableBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetVariableBrick.java index bcd8662fb92..decd9c33c27 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetVariableBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetVariableBrick.java @@ -103,12 +103,12 @@ public int getViewResource() { @Override public View getView(final Context context) { super.getView(context); - TextView textField = (TextView) view.findViewById(R.id.brick_set_variable_edit_text); + TextView textField = view.findViewById(R.id.brick_set_variable_edit_text); getFormulaWithBrickField(BrickField.VARIABLE).setTextFieldId(R.id.brick_set_variable_edit_text); getFormulaWithBrickField(BrickField.VARIABLE).refreshTextField(view); textField.setOnClickListener(this); - Spinner variableSpinner = (Spinner) view.findViewById(R.id.set_variable_spinner); + Spinner variableSpinner = view.findViewById(R.id.set_variable_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyEditedScene().getDataContainer() .createDataAdapter(context, ProjectManager.getInstance().getCurrentSprite()); @@ -128,7 +128,7 @@ public View getView(final Context context) { @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - Spinner variableSpinner = (Spinner) prototypeView.findViewById(R.id.set_variable_spinner); + Spinner variableSpinner = prototypeView.findViewById(R.id.set_variable_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyEditedScene().getDataContainer() .createDataAdapter(context, ProjectManager.getInstance().getCurrentSprite()); @@ -140,7 +140,7 @@ public View getPrototypeView(Context context) { variableSpinner.setAdapter(userVariableAdapterWrapper); setSpinnerSelection(variableSpinner, null); - TextView textSetVariable = (TextView) prototypeView.findViewById(R.id.brick_set_variable_edit_text); + TextView textSetVariable = prototypeView.findViewById(R.id.brick_set_variable_edit_text); if (defaultPrototypeToken != null) { int defaultValueId = InternToExternGenerator.getMappedString(defaultPrototypeToken); @@ -157,11 +157,6 @@ public void onNewVariable(UserVariable userVariable) { setSpinnerSelection(spinner, userVariable); } - @Override - public SetVariableBrick clone() { - return new SetVariableBrick(getFormulaWithBrickField(BrickField.VARIABLE).clone(), userVariable); - } - public void showFormulaEditorToEditFormula(View view) { FormulaEditorFragment.showFragment(view, this, BrickField.VARIABLE); } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetXBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetXBrick.java index f6280e87504..f1c90982f73 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetXBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetXBrick.java @@ -36,9 +36,8 @@ import java.util.List; public class SetXBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - private transient View prototypeView; + private static final long serialVersionUID = 1L; public SetXBrick() { addAllowedBrickField(BrickField.X_POSITION); @@ -70,7 +69,7 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - TextView editX = (TextView) view.findViewById(R.id.brick_set_x_edit_text); + TextView editX = view.findViewById(R.id.brick_set_x_edit_text); getFormulaWithBrickField(BrickField.X_POSITION).setTextFieldId(R.id.brick_set_x_edit_text); getFormulaWithBrickField(BrickField.X_POSITION).refreshTextField(view); @@ -82,8 +81,8 @@ public View getView(Context context) { @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textXPosition = (TextView) prototypeView.findViewById(R.id.brick_set_x_edit_text); + View prototypeView = super.getPrototypeView(context); + TextView textXPosition = prototypeView.findViewById(R.id.brick_set_x_edit_text); textXPosition.setText(formatNumberForPrototypeView(BrickValues.X_POSITION)); return prototypeView; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetYBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetYBrick.java index 9676c1decc9..3aa6c9208e1 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetYBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetYBrick.java @@ -36,9 +36,8 @@ import java.util.List; public class SetYBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - private transient View prototypeView; + private static final long serialVersionUID = 1L; public SetYBrick() { addAllowedBrickField(BrickField.Y_POSITION); @@ -70,7 +69,7 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - TextView editY = (TextView) view.findViewById(R.id.brick_set_y_edit_text); + TextView editY = view.findViewById(R.id.brick_set_y_edit_text); getFormulaWithBrickField(BrickField.Y_POSITION).setTextFieldId(R.id.brick_set_y_edit_text); getFormulaWithBrickField(BrickField.Y_POSITION).refreshTextField(view); editY.setOnClickListener(this); @@ -79,8 +78,8 @@ public View getView(Context context) { @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textYPosition = (TextView) prototypeView.findViewById(R.id.brick_set_y_edit_text); + View prototypeView = super.getPrototypeView(context); + TextView textYPosition = prototypeView.findViewById(R.id.brick_set_y_edit_text); textYPosition.setText(formatNumberForPrototypeView(BrickValues.Y_POSITION)); return prototypeView; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ShowBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ShowBrick.java index 318b4c83817..b6958efd0f7 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ShowBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ShowBrick.java @@ -29,6 +29,7 @@ import java.util.List; public class ShowBrick extends BrickBaseType { + private static final long serialVersionUID = 1L; public ShowBrick() { @@ -39,11 +40,6 @@ public int getViewResource() { return R.layout.brick_show; } - @Override - public Brick clone() { - return new ShowBrick(); - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createShowAction(sprite)); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/StampBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/StampBrick.java index 41b551acce1..d75cf72a0e6 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/StampBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/StampBrick.java @@ -22,9 +22,6 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; - import org.catrobat.catroid.R; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; @@ -38,29 +35,11 @@ public class StampBrick extends BrickBaseType { public StampBrick() { } - @Override - public View getPrototypeView(Context context) { - View view = super.getPrototypeView(context); - - return view; - } - - @Override - public Brick clone() { - return new StampBrick(); - } - @Override public int getViewResource() { return R.layout.brick_stamp; } - @Override - public View getView(Context context) { - super.getView(context); - return view; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createStampAction(sprite)); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/StopAllSoundsBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/StopAllSoundsBrick.java index 9466c590c12..6f92e1579b5 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/StopAllSoundsBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/StopAllSoundsBrick.java @@ -29,6 +29,7 @@ import java.util.List; public class StopAllSoundsBrick extends BrickBaseType { + private static final long serialVersionUID = 1L; public StopAllSoundsBrick() { @@ -39,11 +40,6 @@ public int getViewResource() { return R.layout.brick_stop_all_sounds; } - @Override - public Brick clone() { - return new StopAllSoundsBrick(); - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createStopAllSoundsAction()); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/StopScriptBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/StopScriptBrick.java index 782156f8966..c10abb8f60c 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/StopScriptBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/StopScriptBrick.java @@ -57,12 +57,10 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - Spinner stopScriptSpinner = (Spinner) view.findViewById(R.id.brick_stop_script_spinner); - - ArrayAdapter spinnerAdapter = createArrayAdapter(context); - stopScriptSpinner.setAdapter(spinnerAdapter); - - stopScriptSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + Spinner spinner = view.findViewById(R.id.brick_stop_script_spinner); + spinner.setAdapter(createArrayAdapter(context)); + spinner.setSelection(spinnerSelection); + spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView adapterView, View view, int position, long id) { spinnerSelection = position; @@ -72,34 +70,25 @@ public void onItemSelected(AdapterView adapterView, View view, int position, public void onNothingSelected(AdapterView parent) { } }); - - stopScriptSpinner.setSelection(spinnerSelection); - return view; } @Override public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - - Spinner stopSctiptSpinner = (Spinner) prototypeView.findViewById(R.id.brick_stop_script_spinner); - - ArrayAdapter spinnerAdapter = createArrayAdapter(context); - stopSctiptSpinner.setAdapter(spinnerAdapter); - stopSctiptSpinner.setSelection(spinnerSelection); - + Spinner spinner = prototypeView.findViewById(R.id.brick_stop_script_spinner); + spinner.setAdapter(createArrayAdapter(context)); + spinner.setSelection(spinnerSelection); return prototypeView; } private ArrayAdapter createArrayAdapter(Context context) { - String[] spinnerValue = new String[3]; - spinnerValue[BrickValues.STOP_THIS_SCRIPT] = context.getString(R.string.brick_stop_this_script); - spinnerValue[BrickValues.STOP_ALL_SCRIPTS] = context.getString(R.string.brick_stop_all_scripts); - spinnerValue[BrickValues.STOP_OTHER_SCRIPTS] = context.getString(R.string.brick_stop_other_scripts); + String[] values = new String[3]; + values[BrickValues.STOP_THIS_SCRIPT] = context.getString(R.string.brick_stop_this_script); + values[BrickValues.STOP_ALL_SCRIPTS] = context.getString(R.string.brick_stop_all_scripts); + values[BrickValues.STOP_OTHER_SCRIPTS] = context.getString(R.string.brick_stop_other_scripts); - ArrayAdapter spinnerAdapter = new ArrayAdapter(context, android.R.layout.simple_spinner_item, - spinnerValue); + ArrayAdapter spinnerAdapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, values); spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); return spinnerAdapter; @@ -110,9 +99,4 @@ public List addActionToSequence(Sprite sprite, ScriptSeque sequence.addAction(sprite.getActionFactory().createStopScriptAction(spinnerSelection, sequence.getScript())); return null; } - - @Override - public Brick clone() { - return new StopScriptBrick(this.spinnerSelection); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/UserBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/UserBrick.java index 99221a46451..35a2ebee943 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/UserBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/UserBrick.java @@ -71,7 +71,7 @@ public int getRequiredResources() { } @Override - public Brick clone() { + public BrickBaseType clone() { UserBrick clonedUserBrick = new UserBrick(definitionBrick); clonedUserBrick.userBrickParameters = new ArrayList<>(); if (userBrickParameters != null) { @@ -302,8 +302,8 @@ public List addActionToSequence(Sprite sprite, ScriptSeque List returnActionList = new ArrayList<>(); ActionFactory actionFactory = sprite.getActionFactory(); - ScriptSequenceAction userSequence = (ScriptSequenceAction) actionFactory.eventSequence(definitionBrick.getScriptSafe()); - definitionBrick.getScriptSafe().run(sprite, userSequence); + ScriptSequenceAction userSequence = (ScriptSequenceAction) actionFactory.eventSequence(definitionBrick.getScript()); + definitionBrick.getScript().run(sprite, userSequence); returnActionList.add(userSequence); sequence.addAction(actionFactory.createUserBrickAction(userSequence, this)); ProjectManager.getInstance().setCurrentUserBrick(this); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/UserScriptDefinitionBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/UserScriptDefinitionBrick.java index 073b0e6bedb..7765034459f 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/UserScriptDefinitionBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/UserScriptDefinitionBrick.java @@ -137,7 +137,7 @@ public View getView(final Context context) { public void onLayoutChanged() { Context context = view.getContext(); - LinearLayout layout = (LinearLayout) view.findViewById(R.id.brick_user_definition_layout); + LinearLayout layout = view.findViewById(R.id.brick_user_definition_layout); layout.setFocusable(false); layout.setFocusableInTouchMode(false); if (layout.getChildCount() > 0) { @@ -175,7 +175,7 @@ public void onLayoutChanged() { private View getUserBrickPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - BrickLayout layout = (BrickLayout) prototypeView.findViewById(R.id.brick_user_flow_layout); + BrickLayout layout = prototypeView.findViewById(R.id.brick_user_flow_layout); if (layout.getChildCount() > 0) { layout.removeAllViews(); } @@ -295,12 +295,14 @@ public void onClick(View eventOrigin) { } @Override - public Brick clone() { - return new UserScriptDefinitionBrick(); + public BrickBaseType clone() throws CloneNotSupportedException { + UserScriptDefinitionBrick clone = (UserScriptDefinitionBrick) super.clone(); + clone.script = null; + return clone; } @Override - public Script getScriptSafe() { + public Script getScript() { return getUserScript(); } @@ -448,6 +450,6 @@ public void removeVariablesInFormulas(String name, Context context) { @Override public void setCommentedOut(boolean commentedOut) { super.setCommentedOut(commentedOut); - getScriptSafe().setCommentedOut(commentedOut); + getScript().setCommentedOut(commentedOut); } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WaitUntilBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WaitUntilBrick.java index 9e574d8ac7a..74e788319c5 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WaitUntilBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WaitUntilBrick.java @@ -55,7 +55,7 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - TextView ifBeginTextView = (TextView) view.findViewById(R.id.brick_wait_until_edit_text); + TextView ifBeginTextView = view.findViewById(R.id.brick_wait_until_edit_text); getFormulaWithBrickField(BrickField.IF_CONDITION).setTextFieldId(R.id.brick_wait_until_edit_text); getFormulaWithBrickField(BrickField.IF_CONDITION).refreshTextField(view); @@ -68,7 +68,7 @@ public View getView(Context context) { @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - TextView textIfBegin = (TextView) prototypeView.findViewById(R.id.brick_wait_until_edit_text); + TextView textIfBegin = prototypeView.findViewById(R.id.brick_wait_until_edit_text); textIfBegin.setText(BrickValues.IF_CONDITION); return prototypeView; } @@ -78,9 +78,4 @@ public List addActionToSequence(Sprite sprite, ScriptSeque sequence.addAction(sprite.getActionFactory().createWaitUntilAction(sprite, getFormulaWithBrickField(BrickField.IF_CONDITION))); return null; } - - @Override - public Brick clone() throws CloneNotSupportedException { - return new WaitUntilBrick(getFormulaWithBrickField(BrickField.IF_CONDITION).clone()); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenBackgroundChangesBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenBackgroundChangesBrick.java index 0cd6b075873..96dd65d9e05 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenBackgroundChangesBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenBackgroundChangesBrick.java @@ -43,49 +43,50 @@ import java.util.ArrayList; import java.util.List; +import javax.annotation.Nonnull; + public class WhenBackgroundChangesBrick extends BrickBaseType implements ScriptBrick, SpinnerAdapterWithNewOption.OnNewOptionInDropDownClickListener, NewItemInterface { private static final long serialVersionUID = 1L; private WhenBackgroundChangesScript script; - private transient LookData previouslySelectedLook; + private transient int spinnerSelectionBuffer = 0; private transient Spinner spinner; private transient SpinnerAdapterWithNewOption spinnerAdapter; public WhenBackgroundChangesBrick() { + this(new WhenBackgroundChangesScript()); } - public WhenBackgroundChangesBrick(WhenBackgroundChangesScript script) { + public WhenBackgroundChangesBrick(@Nonnull WhenBackgroundChangesScript script) { + script.setScriptBrick(this); + commentedOut = script.isCommentedOut(); this.script = script; } public LookData getLook() { - return getCastedScriptSafe().getLook(); + return script.getLook(); } - public void setLook(LookData lookData) { - getCastedScriptSafe().setLook(lookData); + public void setLook(LookData look) { + script.setLook(look); } @Override - public Script getScriptSafe() { - if (script == null) { - script = new WhenBackgroundChangesScript(); - } - return script; - } - - private WhenBackgroundChangesScript getCastedScriptSafe() { - return (WhenBackgroundChangesScript) getScriptSafe(); + public BrickBaseType clone() throws CloneNotSupportedException { + WhenBackgroundChangesBrick clone = (WhenBackgroundChangesBrick) super.clone(); + clone.script = (WhenBackgroundChangesScript) script.clone(); + clone.script.setScriptBrick(clone); + clone.spinner = null; + clone.spinnerAdapter = null; + return clone; } @Override - public Brick clone() { - WhenBackgroundChangesBrick clone = new WhenBackgroundChangesBrick(); - clone.setLook(getLook()); - return clone; + public Script getScript() { + return script; } @Override @@ -96,10 +97,9 @@ public int getViewResource() { @Override public View getView(final Context context) { super.getView(context); - spinner = view.findViewById(R.id.brick_when_background_spinner); spinnerAdapter = new SpinnerAdapterWithNewOption(context, getLookNames()); spinnerAdapter.setOnDropDownItemClickListener(this); - + spinner = view.findViewById(R.id.brick_when_background_spinner); spinner.setAdapter(spinnerAdapter); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override @@ -136,7 +136,7 @@ private List getLookNames() { @Override public boolean onNewOptionInDropDownClicked(View v) { - previouslySelectedLook = getLook(); + spinnerSelectionBuffer = spinner.getSelectedItemPosition(); new NewLookDialogFragment(this, ProjectManager.getInstance().getCurrentlyEditedScene(), ProjectManager.getInstance().getCurrentSprite()) { @@ -144,8 +144,7 @@ public boolean onNewOptionInDropDownClicked(View v) { @Override public void onCancel(DialogInterface dialog) { super.onCancel(dialog); - setLook(previouslySelectedLook); - spinner.setSelection(spinnerAdapter.getPosition(getLook() != null ? getLook().getName() : null)); + spinner.setSelection(spinnerSelectionBuffer); } }.show(((Activity) v.getContext()).getFragmentManager(), NewLookDialogFragment.TAG); return false; @@ -162,9 +161,8 @@ public void addItem(LookData item) { @Override public View getPrototypeView(Context context) { View view = super.getPrototypeView(context); - spinner = view.findViewById(R.id.brick_when_background_spinner); - spinnerAdapter = new SpinnerAdapterWithNewOption(context, getLookNames()); + spinner = view.findViewById(R.id.brick_when_background_spinner); spinner.setAdapter(spinnerAdapter); spinner.setSelection(spinnerAdapter.getPosition(getLook() != null ? getLook().getName() : null)); return view; diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenBrick.java index 98a01db8c51..2433732adf0 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenBrick.java @@ -30,39 +30,40 @@ import java.util.List; +import javax.annotation.Nonnull; + public class WhenBrick extends BrickBaseType implements ScriptBrick { - protected WhenScript whenScript; private static final long serialVersionUID = 1L; + private WhenScript whenScript; + public WhenBrick() { + this(new WhenScript()); } - public WhenBrick(WhenScript whenScript) { + public WhenBrick(@Nonnull WhenScript whenScript) { + whenScript.setScriptBrick(this); + commentedOut = whenScript.isCommentedOut(); this.whenScript = whenScript; - - if (whenScript != null && whenScript.isCommentedOut()) { - setCommentedOut(true); - } } @Override - public int getViewResource() { - return R.layout.brick_when; + public BrickBaseType clone() throws CloneNotSupportedException { + WhenBrick clone = (WhenBrick) super.clone(); + clone.whenScript = (WhenScript) whenScript.clone(); + clone.whenScript.setScriptBrick(clone); + return clone; } @Override - public Brick clone() { - return new WhenBrick(null); + public Script getScript() { + return whenScript; } @Override - public Script getScriptSafe() { - if (whenScript == null) { - whenScript = new WhenScript(); - } - - return whenScript; + public int getViewResource() { + return R.layout.brick_when; } @Override @@ -73,6 +74,6 @@ public List addActionToSequence(Sprite sprite, ScriptSeque @Override public void setCommentedOut(boolean commentedOut) { super.setCommentedOut(commentedOut); - getScriptSafe().setCommentedOut(commentedOut); + getScript().setCommentedOut(commentedOut); } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenClonedBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenClonedBrick.java index 9b206ff196b..bffcf77bfd8 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenClonedBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenClonedBrick.java @@ -33,32 +33,34 @@ public class WhenClonedBrick extends BrickBaseType implements ScriptBrick { - protected WhenClonedScript whenClonedScript; private static final long serialVersionUID = 1L; + private WhenClonedScript whenClonedScript; public WhenClonedBrick() { + this(new WhenClonedScript()); } - public WhenClonedBrick(WhenClonedScript whenScript) { - this.whenClonedScript = whenScript; + public WhenClonedBrick(WhenClonedScript whenClonedScript) { + whenClonedScript.setScriptBrick(this); + commentedOut = whenClonedScript.isCommentedOut(); + this.whenClonedScript = whenClonedScript; } @Override - public int getViewResource() { - return R.layout.brick_when_cloned; + public BrickBaseType clone() throws CloneNotSupportedException { + WhenClonedBrick clone = (WhenClonedBrick) super.clone(); + clone.whenClonedScript = (WhenClonedScript) whenClonedScript.clone(); + clone.whenClonedScript.setScriptBrick(clone); + return clone; } @Override - public Brick clone() { - return new WhenClonedBrick(null); + public int getViewResource() { + return R.layout.brick_when_cloned; } @Override - public Script getScriptSafe() { - if (whenClonedScript == null) { - whenClonedScript = new WhenClonedScript(); - } - + public Script getScript() { return whenClonedScript; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenConditionBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenConditionBrick.java index fb80de9a354..663255e3638 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenConditionBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenConditionBrick.java @@ -41,26 +41,29 @@ public class WhenConditionBrick extends FormulaBrick implements ScriptBrick { private WhenConditionScript script; - public WhenConditionBrick() { - init(); - } - public WhenConditionBrick(Formula condition) { - init(); + this(new WhenConditionScript()); setFormulaWithBrickField(BrickField.IF_CONDITION, condition); } public WhenConditionBrick(WhenConditionScript script) { + script.setScriptBrick(this); + commentedOut = script.isCommentedOut(); this.script = script; - init(); - } - private void init() { - getScriptSafe(); - formulaMap = this.script.getFormulaMap(); + formulaMap = script.getFormulaMap(); addAllowedBrickField(BrickField.IF_CONDITION); } + @Override + public BrickBaseType clone() throws CloneNotSupportedException { + WhenConditionBrick clone = (WhenConditionBrick) super.clone(); + clone.script = (WhenConditionScript) script.clone(); + clone.script.setScriptBrick(clone); + clone.formulaMap = clone.script.getFormulaMap(); + return clone; + } + @Override public int getRequiredResources() { return getConditionFormula().getRequiredResources(); @@ -80,12 +83,9 @@ public int getViewResource() { public View getView(Context context) { super.getView(context); TextView conditionEditText = view.findViewById(R.id.brick_when_condition_edit_text); - getFormulaWithBrickField(BrickField.IF_CONDITION).setTextFieldId(R.id.brick_when_condition_edit_text); getFormulaWithBrickField(BrickField.IF_CONDITION).refreshTextField(view); - conditionEditText.setOnClickListener(this); - return view; } @@ -107,16 +107,7 @@ public List addActionToSequence(Sprite sprite, ScriptSeque } @Override - public Script getScriptSafe() { - if (script == null) { - script = new WhenConditionScript(this); - formulaMap = script.getFormulaMap(); - } + public Script getScript() { return script; } - - @Override - public Brick clone() { - return new WhenConditionBrick(getConditionFormula()); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenGamepadButtonBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenGamepadButtonBrick.java index e916a609cef..cd7de926a85 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenGamepadButtonBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenGamepadButtonBrick.java @@ -46,9 +46,19 @@ public class WhenGamepadButtonBrick extends BrickBaseType implements ScriptBrick private List actions = Arrays.asList(CatroidApplication.getAppContext().getResources().getStringArray(R.array.gamepad_buttons_array)); public WhenGamepadButtonBrick(@NonNull WhenGamepadButtonScript whenGamepadButtonScript) { + whenGamepadButtonScript.setScriptBrick(this); + commentedOut = whenGamepadButtonScript.isCommentedOut(); this.whenGamepadButtonScript = whenGamepadButtonScript; } + @Override + public BrickBaseType clone() throws CloneNotSupportedException { + WhenGamepadButtonBrick clone = (WhenGamepadButtonBrick) super.clone(); + clone.whenGamepadButtonScript = (WhenGamepadButtonScript) whenGamepadButtonScript.clone(); + clone.whenGamepadButtonScript.setScriptBrick(clone); + return clone; + } + @Override public int getRequiredResources() { return CAST_REQUIRED; @@ -87,13 +97,7 @@ public void onNothingSelected(AdapterView parent) { } @Override - public Brick clone() { - WhenGamepadButtonScript clonedScript = new WhenGamepadButtonScript(whenGamepadButtonScript.getAction()); - return new WhenGamepadButtonBrick(clonedScript); - } - - @Override - public Script getScriptSafe() { + public Script getScript() { return whenGamepadButtonScript; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenNfcBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenNfcBrick.java index 211905c2b4a..6fcb8590d34 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenNfcBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenNfcBrick.java @@ -44,41 +44,38 @@ import java.util.List; +import javax.annotation.Nonnull; + public class WhenNfcBrick extends BrickBaseType implements ScriptBrick { - protected WhenNfcScript whenNfcScript; - private transient NfcTagData nfcTag; - private transient NfcTagData oldSelectedNfcTag; private static final long serialVersionUID = 1L; + private WhenNfcScript whenNfcScript; + + private transient NfcTagData nfcTag; + public WhenNfcBrick() { - this.oldSelectedNfcTag = null; - this.nfcTag = null; - this.whenNfcScript = new WhenNfcScript(); - this.whenNfcScript.setMatchAll(true); + this(new WhenNfcScript()); } - public WhenNfcBrick(WhenNfcScript script) { - this.oldSelectedNfcTag = null; - this.nfcTag = script.getNfcTag(); - this.whenNfcScript = script; - - if (script != null && script.isCommentedOut()) { - setCommentedOut(true); - } + public WhenNfcBrick(@Nonnull WhenNfcScript whenNfcScript) { + nfcTag = whenNfcScript.getNfcTag(); + whenNfcScript.setScriptBrick(this); + commentedOut = whenNfcScript.isCommentedOut(); + this.whenNfcScript = whenNfcScript; } @Override - public Script getScriptSafe() { - if (whenNfcScript == null) { - setWhenNfcScript(new WhenNfcScript(nfcTag)); - } - return whenNfcScript; + public BrickBaseType clone() throws CloneNotSupportedException { + WhenNfcBrick clone = (WhenNfcBrick) super.clone(); + clone.whenNfcScript = (WhenNfcScript) whenNfcScript.clone(); + clone.whenNfcScript.setScriptBrick(clone); + return clone; } @Override - public Brick clone() { - return new WhenNfcBrick(new WhenNfcScript(nfcTag)); + public Script getScript() { + return whenNfcScript; } @Override @@ -113,7 +110,6 @@ public void onItemSelected(AdapterView parent, View view, int position, long whenNfcScript.setNfcTag(null); //TODO: rework all nfcTag = null; //(NfcTagData)parent.getItemAtPosition(position); - oldSelectedNfcTag = nfcTag; } else { if (whenNfcScript.getNfcTag() == null) { whenNfcScript.setNfcTag(new NfcTagData()); @@ -126,7 +122,6 @@ public void onItemSelected(AdapterView parent, View view, int position, long } } whenNfcScript.setMatchAll(false); - oldSelectedNfcTag = nfcTag; } } @@ -142,27 +137,23 @@ public void onNothingSelected(AdapterView parent) { private void setSpinnerSelection(Spinner spinner) { if (ProjectManager.getInstance().getCurrentSprite().getNfcTagList().contains(nfcTag)) { - Log.d("setSpinnerSelection", "nfcTag found: " + nfcTag.getNfcTagName()); - oldSelectedNfcTag = nfcTag; spinner.setSelection(ProjectManager.getInstance().getCurrentSprite().getNfcTagList().indexOf(nfcTag) + 2, true); } else { if (spinner.getAdapter() != null && spinner.getAdapter().getCount() > 1) { - if (ProjectManager.getInstance().getCurrentSprite().getNfcTagList().indexOf(oldSelectedNfcTag) >= 0) { - spinner.setSelection(ProjectManager.getInstance().getCurrentSprite().getNfcTagList().indexOf(oldSelectedNfcTag) + 2, true); - Log.d("setSpinnerSelection", "oldSelectedNfcTag found"); + if (ProjectManager.getInstance().getCurrentSprite().getNfcTagList().indexOf(nfcTag) >= 0) { + spinner.setSelection(ProjectManager.getInstance() + .getCurrentSprite().getNfcTagList().indexOf(nfcTag) + 2, true); } else { spinner.setSelection(1, true); - Log.d("setSpinnerSelection", "setSelection(1, true)"); } } else { spinner.setSelection(0, true); - Log.d("setSpinnerSelection", "setSelection(0, true)"); } } } private ArrayAdapter createNfcTagAdapter(Context context) { - ArrayAdapter arrayAdapter = new ArrayAdapter(context, android.R.layout.simple_spinner_item); + ArrayAdapter arrayAdapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item); arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); NfcTagData dummyNfcTagData = new NfcTagData(); dummyNfcTagData.setNfcTagName(context.getString(R.string.new_broadcast_message)); @@ -197,7 +188,6 @@ private class SpinnerAdapterWrapper implements SpinnerAdapter { SpinnerAdapterWrapper(Context context, ArrayAdapter spinnerAdapter) { this.context = context; this.spinnerAdapter = spinnerAdapter; - this.isTouchInDropDownView = false; } @@ -223,10 +213,6 @@ public Object getItem(int paramInt) { @Override public long getItemId(int paramInt) { - NfcTagData currentNfcTag = spinnerAdapter.getItem(paramInt); - if (!currentNfcTag.getNfcTagName().equals(context.getString(R.string.new_broadcast_message))) { - oldSelectedNfcTag = currentNfcTag; - } return spinnerAdapter.getItemId(paramInt); } @@ -288,13 +274,9 @@ public NfcTagData getNfcTag() { return nfcTag; } - public void setWhenNfcScript(WhenNfcScript whenNfcScript) { - this.whenNfcScript = whenNfcScript; - } - @Override public void setCommentedOut(boolean commentedOut) { super.setCommentedOut(commentedOut); - getScriptSafe().setCommentedOut(commentedOut); + getScript().setCommentedOut(commentedOut); } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenRaspiPinChangedBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenRaspiPinChangedBrick.java index 1302a9fab9a..c9734c72501 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenRaspiPinChangedBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenRaspiPinChangedBrick.java @@ -46,10 +46,17 @@ public class WhenRaspiPinChangedBrick extends BrickBaseType implements ScriptBri private RaspiInterruptScript script; public WhenRaspiPinChangedBrick(RaspiInterruptScript script) { + script.setScriptBrick(this); + commentedOut = script.isCommentedOut(); this.script = script; - if (script.isCommentedOut()) { - setCommentedOut(true); - } + } + + @Override + public BrickBaseType clone() throws CloneNotSupportedException { + WhenRaspiPinChangedBrick clone = (WhenRaspiPinChangedBrick) super.clone(); + clone.script = (RaspiInterruptScript) script.clone(); + clone.script.setScriptBrick(clone); + return clone; } @Override @@ -143,12 +150,7 @@ private ArrayAdapter getValueSpinnerArrayAdapter(Context context) { } @Override - public Brick clone() { - return new WhenRaspiPinChangedBrick(script); - } - - @Override - public RaspiInterruptScript getScriptSafe() { + public RaspiInterruptScript getScript() { return script; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenStartedBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenStartedBrick.java index 467a5453fb9..ce70a4cf94c 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenStartedBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenStartedBrick.java @@ -30,20 +30,22 @@ import java.util.List; +import javax.annotation.Nonnull; + public class WhenStartedBrick extends BrickBaseType implements ScriptBrick { + private static final long serialVersionUID = 1L; private Script script; - public WhenStartedBrick(Script script) { - this.script = script; - - if (script != null && script.isCommentedOut()) { - setCommentedOut(true); - } + public WhenStartedBrick() { + this(new StartScript()); } - public WhenStartedBrick() { + public WhenStartedBrick(@Nonnull StartScript script) { + script.setScriptBrick(this); + commentedOut = script.isCommentedOut(); + this.script = script; } @Override @@ -52,16 +54,15 @@ public int getViewResource() { } @Override - public Brick clone() { - return new WhenStartedBrick(null); + public BrickBaseType clone() throws CloneNotSupportedException { + WhenStartedBrick clone = (WhenStartedBrick) super.clone(); + clone.script = script.clone(); + clone.script.setScriptBrick(clone); + return clone; } @Override - public Script getScriptSafe() { - if (script == null) { - script = new StartScript(); - } - + public Script getScript() { return script; } @@ -73,6 +74,6 @@ public List addActionToSequence(Sprite sprite, ScriptSeque @Override public void setCommentedOut(boolean commentedOut) { super.setCommentedOut(commentedOut); - getScriptSafe().setCommentedOut(commentedOut); + getScript().setCommentedOut(commentedOut); } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenTouchDownBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenTouchDownBrick.java index 08c63483624..0ff490b4903 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenTouchDownBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenTouchDownBrick.java @@ -32,32 +32,30 @@ public class WhenTouchDownBrick extends BrickBaseType implements ScriptBrick { - protected WhenTouchDownScript whenTouchDownScript; + private WhenTouchDownScript whenTouchDownScript; private static final long serialVersionUID = 1L; public WhenTouchDownBrick() { - this.whenTouchDownScript = new WhenTouchDownScript(); + this(new WhenTouchDownScript()); } - public WhenTouchDownBrick(WhenTouchDownScript script) { - this.whenTouchDownScript = script; - - if (script != null && script.isCommentedOut()) { - setCommentedOut(true); - } + public WhenTouchDownBrick(WhenTouchDownScript whenTouchDownScript) { + whenTouchDownScript.setScriptBrick(this); + commentedOut = whenTouchDownScript.isCommentedOut(); + this.whenTouchDownScript = whenTouchDownScript; } @Override - public Script getScriptSafe() { - if (whenTouchDownScript == null) { - whenTouchDownScript = new WhenTouchDownScript(); - } + public Script getScript() { return whenTouchDownScript; } @Override - public Brick clone() { - return new WhenTouchDownBrick(new WhenTouchDownScript()); + public BrickBaseType clone() throws CloneNotSupportedException { + WhenTouchDownBrick clone = (WhenTouchDownBrick) super.clone(); + clone.whenTouchDownScript = (WhenTouchDownScript) whenTouchDownScript.clone(); + clone.whenTouchDownScript.setScriptBrick(clone); + return clone; } @Override @@ -73,6 +71,6 @@ public List addActionToSequence(Sprite sprite, ScriptSeque @Override public void setCommentedOut(boolean commentedOut) { super.setCommentedOut(commentedOut); - getScriptSafe().setCommentedOut(commentedOut); + getScript().setCommentedOut(commentedOut); } } diff --git a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/CollisionReceiverBrick.java b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/CollisionReceiverBrick.java index 9b041c3947c..c9b0ab8d268 100644 --- a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/CollisionReceiverBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/CollisionReceiverBrick.java @@ -42,7 +42,7 @@ import java.util.List; -public class CollisionReceiverBrick extends BrickBaseType implements ScriptBrick, Cloneable { +public class CollisionReceiverBrick extends BrickBaseType implements ScriptBrick { public static final String ANYTHING_ESCAPE_CHAR = "\0"; private static final long serialVersionUID = 1L; @@ -50,19 +50,18 @@ public class CollisionReceiverBrick extends BrickBaseType implements ScriptBrick private transient ArrayAdapter messageAdapter; public CollisionReceiverBrick(CollisionScript collisionScript) { + collisionScript.setScriptBrick(this); + commentedOut = collisionScript.isCommentedOut(); this.collisionScript = collisionScript; - setCommentedOut(collisionScript.isCommentedOut()); } @Override - public Brick clone() { - CollisionScript clonedScript = new CollisionScript(getSpriteToCollideWithName()); - clonedScript.setCommentedOut(collisionScript.isCommentedOut()); - return new CollisionReceiverBrick(clonedScript); - } - - private String getSpriteToCollideWithName() { - return collisionScript == null ? null : collisionScript.getSpriteToCollideWithName(); + public BrickBaseType clone() throws CloneNotSupportedException { + CollisionReceiverBrick clone = (CollisionReceiverBrick) super.clone(); + clone.messageAdapter = null; + clone.collisionScript = (CollisionScript) collisionScript.clone(); + clone.collisionScript.setScriptBrick(clone); + return clone; } @Override @@ -74,10 +73,6 @@ public int getViewResource() { public View getView(final Context context) { super.getView(context); - if (collisionScript == null) { - collisionScript = new CollisionScript(getSpriteToCollideWithName()); - } - final Spinner broadcastSpinner = view.findViewById(R.id.brick_collision_receive_spinner); broadcastSpinner.setAdapter(getCollisionObjectAdapter(context)); @@ -112,7 +107,7 @@ public View getPrototypeView(Context context) { return prototypeView; } - public ArrayAdapter getCollisionObjectAdapter(Context context) { + private ArrayAdapter getCollisionObjectAdapter(Context context) { String spriteName = ProjectManager.getInstance().getCurrentSprite().getName(); messageAdapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item); messageAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); @@ -131,7 +126,7 @@ public ArrayAdapter getCollisionObjectAdapter(Context context) { } @Override - public Script getScriptSafe() { + public Script getScript() { return collisionScript; } @@ -140,7 +135,7 @@ private void setSpinnerSelection(Spinner spinner) { spinner.setSelection(position); } - public int getPositionOfMessageInAdapter(Context context, String message) { + private int getPositionOfMessageInAdapter(Context context, String message) { getCollisionObjectAdapter(context); int position = messageAdapter.getPosition(message); if (position == -1) { @@ -169,7 +164,7 @@ private String getDisplayedAnythingString(Context context) { @Override public void setCommentedOut(boolean commentedOut) { super.setCommentedOut(commentedOut); - collisionScript.setCommentedOut(commentedOut); + getScript().setCommentedOut(commentedOut); } @Override diff --git a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetBounceBrick.java b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetBounceBrick.java index e737efcf731..81d7535359a 100644 --- a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetBounceBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetBounceBrick.java @@ -71,7 +71,7 @@ public int getViewResource() { public View getView(Context context) { super.getView(context); - TextView edit = (TextView) view.findViewById(R.id.brick_set_bounce_factor_edit_text); + TextView edit = view.findViewById(R.id.brick_set_bounce_factor_edit_text); getFormulaWithBrickField(BrickField.PHYSICS_BOUNCE_FACTOR).setTextFieldId(R.id.brick_set_bounce_factor_edit_text); getFormulaWithBrickField(BrickField.PHYSICS_BOUNCE_FACTOR).refreshTextField(view); @@ -84,16 +84,13 @@ public View getView(Context context) { @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - TextView textBounceFactor = (TextView) prototypeView.findViewById(R.id.brick_set_bounce_factor_edit_text); + TextView textBounceFactor = prototypeView.findViewById(R.id.brick_set_bounce_factor_edit_text); textBounceFactor.setText(formatNumberForPrototypeView(BrickValues.PHYSIC_BOUNCE_FACTOR * 100)); return prototypeView; } @Override public void showFormulaEditorToEditFormula(View view) { - if (checkbox.getVisibility() == View.VISIBLE) { - return; - } FormulaEditorFragment.showFragment(view, this, BrickField.PHYSICS_BOUNCE_FACTOR); } diff --git a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetFrictionBrick.java b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetFrictionBrick.java index 9a6d2696859..e92a5781eaa 100644 --- a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetFrictionBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetFrictionBrick.java @@ -70,37 +70,30 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - - TextView edit = (TextView) view.findViewById(R.id.brick_set_friction_edit_text); - + TextView edit = view.findViewById(R.id.brick_set_friction_edit_text); getFormulaWithBrickField(BrickField.PHYSICS_FRICTION).setTextFieldId(R.id.brick_set_friction_edit_text); getFormulaWithBrickField(BrickField.PHYSICS_FRICTION).refreshTextField(view); - edit.setOnClickListener(this); - return view; } @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - TextView textFriction = (TextView) prototypeView.findViewById(R.id.brick_set_friction_edit_text); + TextView textFriction = prototypeView.findViewById(R.id.brick_set_friction_edit_text); textFriction.setText(formatNumberForPrototypeView(BrickValues.PHYSIC_FRICTION * 100)); return prototypeView; } @Override public void showFormulaEditorToEditFormula(View view) { - if (checkbox.getVisibility() == View.VISIBLE) { - return; - } FormulaEditorFragment.showFragment(view, this, BrickField.PHYSICS_FRICTION); } @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createSetFrictionAction(sprite, - getFormulaWithBrickField(BrickField.PHYSICS_FRICTION))); + sequence.addAction(sprite.getActionFactory() + .createSetFrictionAction(sprite, getFormulaWithBrickField(BrickField.PHYSICS_FRICTION))); return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetGravityBrick.java b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetGravityBrick.java index 78071f0d6a8..8923b6c8e51 100644 --- a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetGravityBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetGravityBrick.java @@ -76,13 +76,13 @@ public int getViewResource() { public View getView(Context context) { super.getView(context); - TextView editX = (TextView) view.findViewById(R.id.brick_set_gravity_edit_text_x); + TextView editX = view.findViewById(R.id.brick_set_gravity_edit_text_x); getFormulaWithBrickField(BrickField.PHYSICS_GRAVITY_X).setTextFieldId(R.id.brick_set_gravity_edit_text_x); getFormulaWithBrickField(BrickField.PHYSICS_GRAVITY_X).refreshTextField(view); editX.setOnClickListener(this); - TextView editY = (TextView) view.findViewById(R.id.brick_set_gravity_edit_text_y); + TextView editY = view.findViewById(R.id.brick_set_gravity_edit_text_y); getFormulaWithBrickField(BrickField.PHYSICS_GRAVITY_Y).setTextFieldId(R.id.brick_set_gravity_edit_text_y); getFormulaWithBrickField(BrickField.PHYSICS_GRAVITY_Y).refreshTextField(view); @@ -93,23 +93,19 @@ public View getView(Context context) { @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - TextView textGravityX = (TextView) prototypeView.findViewById(R.id.brick_set_gravity_edit_text_x); + TextView textGravityX = prototypeView.findViewById(R.id.brick_set_gravity_edit_text_x); textGravityX.setText(formatNumberForPrototypeView(BrickValues.PHYSIC_GRAVITY.x)); - TextView textGravityY = (TextView) prototypeView.findViewById(R.id.brick_set_gravity_edit_text_y); + TextView textGravityY = prototypeView.findViewById(R.id.brick_set_gravity_edit_text_y); textGravityY.setText(formatNumberForPrototypeView(BrickValues.PHYSIC_GRAVITY.y)); return prototypeView; } @Override public void showFormulaEditorToEditFormula(View view) { - if (checkbox.getVisibility() == View.VISIBLE) { - return; - } switch (view.getId()) { case R.id.brick_set_gravity_edit_text_y: FormulaEditorFragment.showFragment(view, this, BrickField.PHYSICS_GRAVITY_Y); break; - case R.id.brick_set_gravity_edit_text_x: default: FormulaEditorFragment.showFragment(view, this, BrickField.PHYSICS_GRAVITY_X); diff --git a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetMassBrick.java b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetMassBrick.java index 4154f2a27ad..258f413ebc8 100644 --- a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetMassBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetMassBrick.java @@ -70,37 +70,30 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - - TextView edit = (TextView) view.findViewById(R.id.brick_set_mass_edit_text); - + TextView edit = view.findViewById(R.id.brick_set_mass_edit_text); getFormulaWithBrickField(BrickField.PHYSICS_MASS).setTextFieldId(R.id.brick_set_mass_edit_text); getFormulaWithBrickField(BrickField.PHYSICS_MASS).refreshTextField(view); - edit.setOnClickListener(this); - return view; } @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - TextView textMass = (TextView) prototypeView.findViewById(R.id.brick_set_mass_edit_text); + TextView textMass = prototypeView.findViewById(R.id.brick_set_mass_edit_text); textMass.setText(formatNumberForPrototypeView(BrickValues.PHYSIC_MASS)); return prototypeView; } @Override public void showFormulaEditorToEditFormula(View view) { - if (checkbox.getVisibility() == View.VISIBLE) { - return; - } FormulaEditorFragment.showFragment(view, this, BrickField.PHYSICS_MASS); } @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createSetMassAction(sprite, - getFormulaWithBrickField(BrickField.PHYSICS_MASS))); + sequence.addAction(sprite.getActionFactory() + .createSetMassAction(sprite, getFormulaWithBrickField(BrickField.PHYSICS_MASS))); return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetPhysicsObjectTypeBrick.java b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetPhysicsObjectTypeBrick.java index e495da5759f..b9ddfb23341 100644 --- a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetPhysicsObjectTypeBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetPhysicsObjectTypeBrick.java @@ -34,13 +34,12 @@ import org.catrobat.catroid.R; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; -import org.catrobat.catroid.content.bricks.Brick; import org.catrobat.catroid.content.bricks.BrickBaseType; import org.catrobat.catroid.physics.PhysicsObject; import java.util.List; -public class SetPhysicsObjectTypeBrick extends BrickBaseType implements Cloneable { +public class SetPhysicsObjectTypeBrick extends BrickBaseType { private static final long serialVersionUID = 1L; @@ -58,11 +57,6 @@ public int getRequiredResources() { return PHYSICS; } - @Override - public Brick clone() { - return new SetPhysicsObjectTypeBrick(type); - } - @Override public int getViewResource() { return R.layout.brick_physics_set_physics_object_type; @@ -72,7 +66,7 @@ public int getViewResource() { public View getView(Context context) { super.getView(context); - final Spinner spinner = (Spinner) view.findViewById(R.id.brick_set_physics_object_type_spinner); + final Spinner spinner = view.findViewById(R.id.brick_set_physics_object_type_spinner); spinner.setAdapter(createAdapter(context)); spinner.setSelection(type.ordinal()); @@ -107,7 +101,7 @@ private ArrayAdapter createAdapter(Context context) { @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - Spinner pointToSpinner = (Spinner) prototypeView.findViewById(R.id.brick_set_physics_object_type_spinner); + Spinner pointToSpinner = prototypeView.findViewById(R.id.brick_set_physics_object_type_spinner); SpinnerAdapter objectTypeSpinnerAdapter = createAdapter(context); pointToSpinner.setAdapter(objectTypeSpinnerAdapter); pointToSpinner.setSelection(PhysicsObject.Type.DYNAMIC.ordinal()); diff --git a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetVelocityBrick.java b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetVelocityBrick.java index b078a42bd1c..d9de77a011a 100644 --- a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetVelocityBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetVelocityBrick.java @@ -76,13 +76,13 @@ public int getViewResource() { public View getView(Context context) { super.getView(context); - TextView editX = (TextView) view.findViewById(R.id.brick_set_velocity_edit_text_x); + TextView editX = view.findViewById(R.id.brick_set_velocity_edit_text_x); getFormulaWithBrickField(BrickField.PHYSICS_VELOCITY_X).setTextFieldId(R.id.brick_set_velocity_edit_text_x); getFormulaWithBrickField(BrickField.PHYSICS_VELOCITY_X).refreshTextField(view); editX.setOnClickListener(this); - TextView editY = (TextView) view.findViewById(R.id.brick_set_velocity_edit_text_y); + TextView editY = view.findViewById(R.id.brick_set_velocity_edit_text_y); getFormulaWithBrickField(BrickField.PHYSICS_VELOCITY_Y).setTextFieldId(R.id.brick_set_velocity_edit_text_y); getFormulaWithBrickField(BrickField.PHYSICS_VELOCITY_Y).refreshTextField(view); @@ -93,18 +93,15 @@ public View getView(Context context) { @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - TextView textVelocityX = (TextView) prototypeView.findViewById(R.id.brick_set_velocity_edit_text_x); + TextView textVelocityX = prototypeView.findViewById(R.id.brick_set_velocity_edit_text_x); textVelocityX.setText(formatNumberForPrototypeView(BrickValues.PHYSIC_VELOCITY.x)); - TextView textVelocityY = (TextView) prototypeView.findViewById(R.id.brick_set_velocity_edit_text_y); + TextView textVelocityY = prototypeView.findViewById(R.id.brick_set_velocity_edit_text_y); textVelocityY.setText(formatNumberForPrototypeView(BrickValues.PHYSIC_VELOCITY.y)); return prototypeView; } @Override public void showFormulaEditorToEditFormula(View view) { - if (checkbox.getVisibility() == View.VISIBLE) { - return; - } switch (view.getId()) { case R.id.brick_set_velocity_edit_text_y: FormulaEditorFragment.showFragment(view, this, BrickField.PHYSICS_VELOCITY_Y); diff --git a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/TurnLeftSpeedBrick.java b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/TurnLeftSpeedBrick.java index 9b93c947a17..1f5e1f8a97a 100644 --- a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/TurnLeftSpeedBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/TurnLeftSpeedBrick.java @@ -37,9 +37,8 @@ import java.util.List; public class TurnLeftSpeedBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - private transient View prototypeView; + private static final long serialVersionUID = 1L; public TurnLeftSpeedBrick() { addAllowedBrickField(BrickField.PHYSICS_BOUNCE_FACTOR); @@ -71,30 +70,23 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - - TextView edit = (TextView) view.findViewById(R.id.brick_turn_left_speed_edit_text); - + TextView edit = view.findViewById(R.id.brick_turn_left_speed_edit_text); getFormulaWithBrickField(BrickField.PHYSICS_TURN_LEFT_SPEED).setTextFieldId(R.id.brick_turn_left_speed_edit_text); getFormulaWithBrickField(BrickField.PHYSICS_TURN_LEFT_SPEED).refreshTextField(view); - edit.setOnClickListener(this); - return view; } @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textTurnLeftSpeed = (TextView) prototypeView.findViewById(R.id.brick_turn_left_speed_edit_text); + View prototypeView = super.getPrototypeView(context); + TextView textTurnLeftSpeed = prototypeView.findViewById(R.id.brick_turn_left_speed_edit_text); textTurnLeftSpeed.setText(formatNumberForPrototypeView(BrickValues.PHYSIC_TURN_DEGREES)); return prototypeView; } @Override public void showFormulaEditorToEditFormula(View view) { - if (checkbox.getVisibility() == View.VISIBLE) { - return; - } FormulaEditorFragment.showFragment(view, this, BrickField.PHYSICS_TURN_LEFT_SPEED); } diff --git a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/TurnRightSpeedBrick.java b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/TurnRightSpeedBrick.java index ed5ca44e64a..cc2a9500687 100644 --- a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/TurnRightSpeedBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/TurnRightSpeedBrick.java @@ -37,9 +37,8 @@ import java.util.List; public class TurnRightSpeedBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - private transient View prototypeView; + private static final long serialVersionUID = 1L; public TurnRightSpeedBrick() { addAllowedBrickField(BrickField.PHYSICS_TURN_RIGHT_SPEED); @@ -71,37 +70,30 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - - TextView edit = (TextView) view.findViewById(R.id.brick_turn_right_speed_edit_text); - + TextView edit = view.findViewById(R.id.brick_turn_right_speed_edit_text); getFormulaWithBrickField(BrickField.PHYSICS_TURN_RIGHT_SPEED).setTextFieldId(R.id.brick_turn_right_speed_edit_text); getFormulaWithBrickField(BrickField.PHYSICS_TURN_RIGHT_SPEED).refreshTextField(view); - edit.setOnClickListener(this); - return view; } @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textTurnRightSpeed = (TextView) prototypeView.findViewById(R.id.brick_turn_right_speed_edit_text); + View prototypeView = super.getPrototypeView(context); + TextView textTurnRightSpeed = prototypeView.findViewById(R.id.brick_turn_right_speed_edit_text); textTurnRightSpeed.setText(formatNumberForPrototypeView(BrickValues.PHYSIC_TURN_DEGREES)); return prototypeView; } @Override public void showFormulaEditorToEditFormula(View view) { - if (checkbox.getVisibility() == View.VISIBLE) { - return; - } FormulaEditorFragment.showFragment(view, this, BrickField.PHYSICS_TURN_RIGHT_SPEED); } @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createTurnRightSpeedAction(sprite, - getFormulaWithBrickField(BrickField.PHYSICS_TURN_RIGHT_SPEED))); + sequence.addAction(sprite.getActionFactory() + .createTurnRightSpeedAction(sprite, getFormulaWithBrickField(BrickField.PHYSICS_TURN_RIGHT_SPEED))); return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/ui/adapter/BrickAdapter.java b/catroid/src/main/java/org/catrobat/catroid/ui/adapter/BrickAdapter.java index e1ee296ac2c..2dae9bf54d6 100644 --- a/catroid/src/main/java/org/catrobat/catroid/ui/adapter/BrickAdapter.java +++ b/catroid/src/main/java/org/catrobat/catroid/ui/adapter/BrickAdapter.java @@ -162,7 +162,7 @@ private void initBrickListUserScript() { private Script getUserScript() { UserScriptDefinitionBrick definitionBrick = userBrick.getDefinitionBrick(); - return definitionBrick.getScriptSafe(); + return definitionBrick.getScript(); } public void resetAlphas() { @@ -211,7 +211,7 @@ public void drag(int from, int to) { if (draggedBrick instanceof NestingBrick) { NestingBrick nestingBrick = (NestingBrick) draggedBrick; if (nestingBrick.isInitialized()) { - if (nestingBrick.getAllNestingBrickParts(true).get(0) == nestingBrick) { + if (nestingBrick.getAllNestingBrickParts().get(0) == nestingBrick) { to = adjustNestingBrickDraggedPosition(nestingBrick, fromBeginDrag, to); } else { to = getDraggedNestingBricksToPosition(nestingBrick, to); @@ -280,7 +280,7 @@ && getItem(to - 1) instanceof DeadEndBrick) { } private int adjustNestingBrickDraggedPosition(NestingBrick nestingBrick, int from, int to) { - List nestingBrickList = nestingBrick.getAllNestingBrickParts(true); + List nestingBrickList = nestingBrick.getAllNestingBrickParts(); NestingBrick endBrick = nestingBrickList.get(nestingBrickList.size() - 1); int endBrickPosition = brickList.indexOf(endBrick); @@ -292,7 +292,7 @@ private int adjustNestingBrickDraggedPosition(NestingBrick nestingBrick, int fro } private int getDraggedNestingBricksToPosition(NestingBrick nestingBrick, int to) { - List nestingBrickList = nestingBrick.getAllNestingBrickParts(true); + List nestingBrickList = nestingBrick.getAllNestingBrickParts(); int restrictedTop = 0; int restrictedBottom = brickList.size(); @@ -431,7 +431,7 @@ private void addScriptToProject(int position, ScriptBrick scriptBrick) { int scriptPosition = temp[0]; int brickPosition = temp[1]; - Script newScript = scriptBrick.getScriptSafe(); + Script newScript = scriptBrick.getScript(); if (currentSprite.getNumberOfBricks() > 0) { int addScriptTo = position == 0 ? 0 : scriptPosition + 1; currentSprite.addScript(addScriptTo, newScript); @@ -469,7 +469,7 @@ private void moveNestingBrick(int from, int to) { Brick brick = fromScript.getBrick(brickPositionFrom); NestingBrick nestingBrick = (NestingBrick) brick; - List nestingBricks = nestingBrick.getAllNestingBrickParts(true); + List nestingBricks = nestingBrick.getAllNestingBrickParts(); NestingBrick endNestingBrick = nestingBricks.get(nestingBricks.size() - 1); List fromScriptBrickList = fromScript.getBrickList(); int endPosition = fromScriptBrickList.indexOf(endNestingBrick); @@ -536,7 +536,7 @@ private void addBrickToPositionInProject(int position, Brick brick) { if (brick instanceof NestingBrick) { ((NestingBrick) draggedBrick).initialize(); - List nestingBrickList = ((NestingBrick) draggedBrick).getAllNestingBrickParts(true); + List nestingBrickList = ((NestingBrick) draggedBrick).getAllNestingBrickParts(); for (int i = 0; i < nestingBrickList.size(); i++) { if (nestingBrickList.get(i) instanceof DeadEndBrick) { if (i < nestingBrickList.size() - 1) { @@ -558,7 +558,7 @@ private void addBrickToPositionInUserScript(int position, Brick brick) { position = getPositionInUserScript(position); if (brick instanceof NestingBrick) { ((NestingBrick) draggedBrick).initialize(); - List nestingBrickList = ((NestingBrick) draggedBrick).getAllNestingBrickParts(true); + List nestingBrickList = ((NestingBrick) draggedBrick).getAllNestingBrickParts(); for (int i = 0; i < nestingBrickList.size(); i++) { script.addBrick(position + i, (Brick) nestingBrickList.get(i)); } @@ -574,7 +574,7 @@ private int getPositionForDeadEndBrick(int position) { } if (brickList.get(i) instanceof NestingBrick) { - List tempList = ((NestingBrick) brickList.get(i)).getAllNestingBrickParts(true); + List tempList = ((NestingBrick) brickList.get(i)).getAllNestingBrickParts(); int currentPosition = i; i = brickList.indexOf(tempList.get(tempList.size() - 1)) + 1; if (i < 0) { @@ -694,7 +694,7 @@ public void addNewBrick(int position, Brick brickToBeAdded, boolean initInserted Sprite currentSprite = ProjectManager.getInstance().getCurrentSprite(); int scriptCount = currentSprite.getNumberOfScripts(); if (scriptCount == 0 && brickToBeAdded instanceof ScriptBrick) { - currentSprite.addScript(((ScriptBrick) brickToBeAdded).getScriptSafe()); + currentSprite.addScript(((ScriptBrick) brickToBeAdded).getScript()); initBrickList(); notifyDataSetChanged(); return; @@ -707,14 +707,12 @@ public void addNewBrick(int position, Brick brickToBeAdded, boolean initInserted } if (brickToBeAdded instanceof ScriptBrick) { - brickList.add(position, brickToBeAdded); position = getNewPositionForScriptBrick(position, brickToBeAdded); brickList.remove(brickToBeAdded); brickList.add(position, brickToBeAdded); scrollToPosition(position); } else { - position = getNewPositionIfEndingBrickIsThere(position, brickToBeAdded); position = position <= 0 ? 1 : position; position = position > brickList.size() ? brickList.size() : position; @@ -749,7 +747,7 @@ private int getNewPositionForScriptBrick(int position, Brick brick) { for (int i = position; i < brickList.size(); i++) { if (brickList.get(i) instanceof NestingBrick) { - List bricks = ((NestingBrick) brickList.get(i)).getAllNestingBrickParts(true); + List bricks = ((NestingBrick) brickList.get(i)).getAllNestingBrickParts(); int beginningPosition = brickList.indexOf(bricks.get(0)); int endingPosition = brickList.indexOf(bricks.get(bricks.size() - 1)); if (position >= beginningPosition && position <= endingPosition) { @@ -789,7 +787,7 @@ public void removeFromBrickListAndProject(int index, boolean removeScript) { BrickBaseType brick = (BrickBaseType) script.getBrick(temp[1]); if (brick instanceof NestingBrick) { - for (NestingBrick tempBrick : ((NestingBrick) brick).getAllNestingBrickParts(true)) { + for (NestingBrick tempBrick : ((NestingBrick) brick).getAllNestingBrickParts()) { script.removeBrick((Brick) tempBrick); } } else { @@ -803,7 +801,7 @@ public void removeFromBrickListAndProject(int index, boolean removeScript) { BrickBaseType brick = (BrickBaseType) script.getBrick(getPositionInUserScript(index)); if (brick instanceof NestingBrick) { - for (NestingBrick tempBrick : ((NestingBrick) brick).getAllNestingBrickParts(true)) { + for (NestingBrick tempBrick : ((NestingBrick) brick).getAllNestingBrickParts()) { script.removeBrick((Brick) tempBrick); } } else { @@ -1025,7 +1023,7 @@ public void onClick(DialogInterface dialog, int item) { int itemPosition = calculateItemPositionAndTouchPointY(view); Brick brick = brickList.get(itemPosition); if (brick instanceof NestingBrick) { - List list = ((NestingBrick) brick).getAllNestingBrickParts(true); + List list = ((NestingBrick) brick).getAllNestingBrickParts(); for (NestingBrick tempBrick : list) { animatedBricks.add((Brick) tempBrick); } @@ -1087,7 +1085,7 @@ private void showConfirmDeleteDialog(int itemPosition) { @Override public void onClick(DialogInterface dialog, int id) { if (getItem(clickItemPosition) instanceof ScriptBrick) { - scriptToDelete = ((ScriptBrick) getItem(clickItemPosition)).getScriptSafe(); + scriptToDelete = ((ScriptBrick) getItem(clickItemPosition)).getScript(); handleScriptDelete(sprite, scriptToDelete); scriptToDelete = null; } else { @@ -1262,7 +1260,7 @@ public void handleCheck(Brick brick, boolean checked) { int positionTo = brickList.indexOf(brick); if (brick instanceof NestingBrick) { - List nestingBricks = ((NestingBrick) brick).getAllNestingBrickParts(true); + List nestingBricks = ((NestingBrick) brick).getAllNestingBrickParts(); NestingBrick firstNestingBrick = nestingBricks.get(0); NestingBrick lastNestingBrick = nestingBricks.get(nestingBricks.size() - 1); diff --git a/catroid/src/main/java/org/catrobat/catroid/ui/fragment/AddBrickFragment.java b/catroid/src/main/java/org/catrobat/catroid/ui/fragment/AddBrickFragment.java index 5cf520d002f..f96dbbd698c 100644 --- a/catroid/src/main/java/org/catrobat/catroid/ui/fragment/AddBrickFragment.java +++ b/catroid/src/main/java/org/catrobat/catroid/ui/fragment/AddBrickFragment.java @@ -140,13 +140,7 @@ public void onStart() { getListView().setOnItemClickListener(new ListView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { - Brick clickedBrick = adapter.getItem(position); - try { - Brick brickToBeAdded = clickedBrick.clone(); - addBrickToScript(brickToBeAdded); - } catch (CloneNotSupportedException cloneNotSupportedException) { - Log.e(getTag(), "CloneNotSupportedException!", cloneNotSupportedException); - } + addBrickToScript(adapter.getItem(position)); } }); } @@ -163,7 +157,7 @@ public void addBrickToScript(Brick brickToBeAdded) { } if (brickToBeAdded instanceof ScriptBrick) { - Script script = ((ScriptBrick) brickToBeAdded).getScriptSafe(); + Script script = ((ScriptBrick) brickToBeAdded).getScript(); ProjectManager.getInstance().setCurrentScript(script); } @@ -180,9 +174,8 @@ public void addBrickToScript(Brick brickToBeAdded) { getFragmentManager().popBackStack(); } fragmentTransaction.commit(); - } catch (CloneNotSupportedException exception) { - Log.e(getTag(), "Adding a Brick was not possible because cloning it from the preview failed", - exception); + } catch (CloneNotSupportedException e) { + Log.e(getTag(), e.getLocalizedMessage()); ToastUtil.showError(getActivity(), R.string.error_adding_brick); } } diff --git a/catroid/src/main/java/org/catrobat/catroid/ui/fragment/CategoryBeginnerBricksFactory.java b/catroid/src/main/java/org/catrobat/catroid/ui/fragment/CategoryBeginnerBricksFactory.java index 2a68072c952..762020bae66 100644 --- a/catroid/src/main/java/org/catrobat/catroid/ui/fragment/CategoryBeginnerBricksFactory.java +++ b/catroid/src/main/java/org/catrobat/catroid/ui/fragment/CategoryBeginnerBricksFactory.java @@ -78,7 +78,7 @@ public class CategoryBeginnerBricksFactory extends CategoryBricksFactory { @Override protected List setupEventCategoryList(Context context) { List eventBrickList = new ArrayList<>(); - eventBrickList.add(new WhenStartedBrick(null)); + eventBrickList.add(new WhenStartedBrick()); eventBrickList.add(new WhenTouchDownBrick()); Project currentProject = ProjectManager.getInstance().getCurrentProject(); List broadcastMessages = currentProject.getBroadcastMessageContainer().getBroadcastMessages(); diff --git a/catroid/src/main/java/org/catrobat/catroid/ui/fragment/CategoryBricksFactory.java b/catroid/src/main/java/org/catrobat/catroid/ui/fragment/CategoryBricksFactory.java index f20b7ee1d9c..2e6bf27eec5 100644 --- a/catroid/src/main/java/org/catrobat/catroid/ui/fragment/CategoryBricksFactory.java +++ b/catroid/src/main/java/org/catrobat/catroid/ui/fragment/CategoryBricksFactory.java @@ -257,8 +257,8 @@ protected List setupEventCategoryList(Context context) { defaultIf.setRightChild(new FormulaElement(ElementType.NUMBER, "2", null)); List eventBrickList = new ArrayList<>(); - eventBrickList.add(new WhenStartedBrick(null)); - eventBrickList.add(new WhenBrick(null)); + eventBrickList.add(new WhenStartedBrick()); + eventBrickList.add(new WhenBrick()); eventBrickList.add(new WhenTouchDownBrick()); Project currentProject = ProjectManager.getInstance().getCurrentProject(); @@ -267,8 +267,7 @@ protected List setupEventCategoryList(Context context) { if (broadcastMessages.size() > 0) { broadcastMessage = broadcastMessages.get(0); } - BroadcastScript broadcastScript = new BroadcastScript(broadcastMessage); - eventBrickList.add(new BroadcastReceiverBrick(broadcastScript)); + eventBrickList.add(new BroadcastReceiverBrick(new BroadcastScript(broadcastMessage))); eventBrickList.add(new BroadcastBrick(broadcastMessage)); eventBrickList.add(new BroadcastWaitBrick(broadcastMessage)); eventBrickList.add(new WhenConditionBrick(new Formula(defaultIf))); diff --git a/catroid/src/main/java/org/catrobat/catroid/ui/fragment/ScriptFragment.java b/catroid/src/main/java/org/catrobat/catroid/ui/fragment/ScriptFragment.java index ebc6ca6152d..d529c92ac36 100644 --- a/catroid/src/main/java/org/catrobat/catroid/ui/fragment/ScriptFragment.java +++ b/catroid/src/main/java/org/catrobat/catroid/ui/fragment/ScriptFragment.java @@ -301,7 +301,7 @@ private void initListeners() { adapter = new BrickAdapter(this, sprite, listView); if (ProjectManager.getInstance().getCurrentSprite().getNumberOfScripts() > 0) { - ProjectManager.getInstance().setCurrentScript(((ScriptBrick) adapter.getItem(0)).getScriptSafe()); + ProjectManager.getInstance().setCurrentScript(((ScriptBrick) adapter.getItem(0)).getScript()); } listView.setOnCreateContextMenuListener(this); @@ -469,7 +469,7 @@ private void copyBrick(Brick brick) { } if (brick instanceof ScriptBrick) { - scriptToEdit = ((ScriptBrick) brick).getScriptSafe(); + scriptToEdit = ((ScriptBrick) brick).getScript(); try { Script clonedScript = scriptToEdit.clone(); sprite.addScript(clonedScript); @@ -501,7 +501,7 @@ private void copyBrick(Brick brick) { NestingBrick nestingBrickCopy = (NestingBrick) copiedBrick; nestingBrickCopy.initialize(); - for (NestingBrick nestingBrick : nestingBrickCopy.getAllNestingBrickParts(true)) { + for (NestingBrick nestingBrick : nestingBrickCopy.getAllNestingBrickParts()) { scriptList.addBrick((Brick) nestingBrick); } } else { @@ -522,7 +522,7 @@ private void copyBrick(Brick brick) { private void deleteBrick(Brick brick) { if (brick instanceof ScriptBrick) { - scriptToEdit = ((ScriptBrick) brick).getScriptSafe(); + scriptToEdit = ((ScriptBrick) brick).getScript(); adapter.handleScriptDelete(sprite, scriptToEdit); return; } diff --git a/catroid/src/main/java/org/catrobat/catroid/ui/recyclerview/controller/ScriptController.java b/catroid/src/main/java/org/catrobat/catroid/ui/recyclerview/controller/ScriptController.java index 82a775a4cb1..01a95b57c76 100644 --- a/catroid/src/main/java/org/catrobat/catroid/ui/recyclerview/controller/ScriptController.java +++ b/catroid/src/main/java/org/catrobat/catroid/ui/recyclerview/controller/ScriptController.java @@ -100,7 +100,7 @@ public void pack(String groupName, List bricksToPack) throws CloneNotSupp for (Brick brick : bricksToPack) { if (brick instanceof ScriptBrick) { - Script scriptToPack = ((ScriptBrick) brick).getScriptSafe(); + Script scriptToPack = ((ScriptBrick) brick).getScript(); scriptsToPack.add(scriptToPack.clone()); } } From 33700038ad1695d4704a9dcd3316d77afab5dfbc Mon Sep 17 00:00:00 2001 From: Thomas Schranz Date: Tue, 31 Jul 2018 20:46:32 +0200 Subject: [PATCH 15/67] [GSoC18] Refactored Inflation for FormulaBricks - added a map that contains mappings between text views and BrickFields. - these are now automatically set up and updated. - refactored Brick constructors. - mitigated inheritance hell for if-else logic. - refactored FormulaEditorFragment: simplified and removed unused/unnecessary code. - BrickField highlighting no longer breaks layout (is a little more subtle though). --- .../test/content/actions/EventActionTest.java | 9 +- .../content/actions/IfLogicActionTest.java | 10 +- .../content/actions/MoveNStepsActionTest.java | 5 +- .../actions/PointInDirectionActionTest.java | 17 +- .../actions/SetRotationStyleActionTest.java | 34 +- .../actions/StopThisScriptActionTest.java | 3 +- .../test/content/bricks/BrickCloneTest.java | 4 - .../CollisionFormulaConversionTest.java | 4 +- .../catroid/test/utiltests/UtilsTest.java | 43 -- .../brick/app/BrickValueParameterTest.java | 246 +++---- .../content/brick/app/IfThenBrickTest.java | 4 +- .../brick/app/IfThenElseBrickTest.java | 6 +- .../content/brick/app/PenBricksTest.java | 2 +- .../content/brick/app/PhiroIfBrickTest.java | 2 +- .../app/PhiroMoveMotorBackwardBrickTest.java | 2 +- .../app/PhiroMoveMotorForwardBrickTest.java | 2 +- .../brick/app/PhiroSeekBarColorBrickTest.java | 9 +- .../brick/app/PointInDirectionBrickTest.java | 2 +- .../content/brick/app/SayBubbleBrickTest.java | 2 +- .../brick/app/SayForBubbleBrickTest.java | 6 +- .../content/brick/app/SetXBrickTest.java | 5 +- .../brick/app/ThinkBubbleBrickTest.java | 2 +- .../brick/app/ThinkForBubbleBrickTest.java | 6 +- ...abicSentenceStructureInBricksNameTest.java | 623 ------------------ .../FormulaEditorEditTextTest.java | 50 +- .../FormulaEditorFragmentTest.java | 4 +- ...tActivityNumberOfBricksRegressionTest.java | 12 +- ...berAtShowDetailsAtProjectActivityTest.java | 10 +- .../ui/fragment/CopyProjectTest.java | 4 +- .../ui/fragment/DeleteProjectTest.java | 6 +- .../ui/fragment/RenameProjectTest.java | 6 +- .../org/catrobat/catroid/ProjectManager.java | 3 + .../catrobat/catroid/common/BrickValues.java | 49 +- .../catrobat/catroid/common/Constants.java | 12 +- .../ChromeCastProjectCreator.java | 20 +- .../org/catrobat/catroid/content/Sprite.java | 2 +- .../bricks/AddItemToUserListBrick.java | 41 +- .../bricks/ArduinoSendDigitalValueBrick.java | 74 +-- .../bricks/ArduinoSendPWMValueBrick.java | 70 +- .../catroid/content/bricks/AskBrick.java | 41 +- .../content/bricks/AskSpeechBrick.java | 43 +- .../catroid/content/bricks/Brick.java | 3 +- .../catroid/content/bricks/BrickBaseType.java | 9 +- .../content/bricks/BroadcastMessageBrick.java | 2 +- .../catroid/content/bricks/CameraBrick.java | 3 +- .../bricks/ChangeBrightnessByNBrick.java | 43 +- .../content/bricks/ChangeColorByNBrick.java | 44 +- .../content/bricks/ChangeSizeByNBrick.java | 42 +- .../bricks/ChangeTransparencyByNBrick.java | 51 +- .../content/bricks/ChangeVariableBrick.java | 49 +- .../content/bricks/ChangeVolumeByNBrick.java | 42 +- .../content/bricks/ChangeXByNBrick.java | 43 +- .../content/bricks/ChangeYByNBrick.java | 42 +- .../content/bricks/ChooseCameraBrick.java | 12 +- .../bricks/DeleteItemOfUserListBrick.java | 46 +- .../bricks/DroneBasicControlBrick.java | 63 -- .../content/bricks/DroneEmergencyBrick.java | 24 +- .../content/bricks/DroneFlipBrick.java | 23 +- .../bricks/DroneMoveBackwardBrick.java | 79 +-- .../content/bricks/DroneMoveDownBrick.java | 80 +-- .../content/bricks/DroneMoveForwardBrick.java | 80 +-- .../content/bricks/DroneMoveLeftBrick.java | 80 +-- .../content/bricks/DroneMoveRightBrick.java | 81 +-- .../content/bricks/DroneMoveUpBrick.java | 79 +-- .../bricks/DronePlayLedAnimationBrick.java | 30 +- .../content/bricks/DroneSpinnerBrick.java | 116 ---- .../bricks/DroneSwitchCameraBrick.java | 24 +- .../content/bricks/DroneTakeOffLandBrick.java | 26 +- .../content/bricks/DroneTurnLeftBrick.java | 75 +-- .../bricks/DroneTurnLeftMagnetoBrick.java | 117 ---- .../content/bricks/DroneTurnRightBrick.java | 75 +-- .../bricks/DroneTurnRightMagnetoBrick.java | 118 ---- .../catroid/content/bricks/FlashBrick.java | 15 +- .../catroid/content/bricks/ForeverBrick.java | 21 +- .../catroid/content/bricks/FormulaBrick.java | 121 ++-- .../catroid/content/bricks/GlideToBrick.java | 118 +--- .../content/bricks/GoNStepsBackBrick.java | 37 +- .../catroid/content/bricks/GoToBrick.java | 11 +- .../catroid/content/bricks/HideTextBrick.java | 11 - .../content/bricks/IfLogicBeginBrick.java | 79 +-- .../content/bricks/IfLogicElseBrick.java | 14 +- .../content/bricks/IfLogicEndBrick.java | 32 +- .../content/bricks/IfThenLogicBeginBrick.java | 58 +- .../content/bricks/IfThenLogicEndBrick.java | 16 +- .../bricks/InsertItemIntoUserListBrick.java | 47 +- .../bricks/JumpingSumoAnimationsBrick.java | 7 +- .../bricks/JumpingSumoJumpHighBrick.java | 21 +- .../bricks/JumpingSumoJumpLongBrick.java | 21 +- .../bricks/JumpingSumoMoveBackwardBrick.java | 75 +-- .../bricks/JumpingSumoMoveForwardBrick.java | 79 +-- .../bricks/JumpingSumoNoSoundBrick.java | 17 +- .../bricks/JumpingSumoRotateLeftBrick.java | 53 +- .../bricks/JumpingSumoRotateRightBrick.java | 54 +- .../content/bricks/JumpingSumoSoundBrick.java | 48 +- .../bricks/JumpingSumoTakingPictureBrick.java | 24 +- .../content/bricks/JumpingSumoTurnBrick.java | 24 +- .../content/bricks/LegoEv3MotorMoveBrick.java | 59 +- .../content/bricks/LegoEv3MotorStopBrick.java | 19 +- .../bricks/LegoEv3MotorTurnAngleBrick.java | 56 +- .../content/bricks/LegoEv3PlayToneBrick.java | 90 +-- .../content/bricks/LegoEv3SetLedBrick.java | 5 +- .../content/bricks/LegoNxtMotorMoveBrick.java | 66 +- .../content/bricks/LegoNxtMotorStopBrick.java | 1 + .../bricks/LegoNxtMotorTurnAngleBrick.java | 66 +- .../content/bricks/LegoNxtPlayToneBrick.java | 70 +- .../content/bricks/MoveNStepsBrick.java | 65 +- .../catroid/content/bricks/NestingBrick.java | 3 - .../catroid/content/bricks/NoteBrick.java | 42 +- .../bricks/PhiroIfLogicBeginBrick.java | 66 +- .../bricks/PhiroMotorMoveBackwardBrick.java | 80 +-- .../bricks/PhiroMotorMoveForwardBrick.java | 117 ++-- .../content/bricks/PhiroMotorStopBrick.java | 33 +- .../content/bricks/PhiroPlayToneBrick.java | 80 +-- .../content/bricks/PhiroRGBLightBrick.java | 124 ++-- .../catroid/content/bricks/PlaceAtBrick.java | 57 +- .../content/bricks/PointInDirectionBrick.java | 66 +- .../bricks/RaspiIfLogicBeginBrick.java | 28 +- .../catroid/content/bricks/RaspiPwmBrick.java | 86 +-- .../bricks/RaspiSendDigitalValueBrick.java | 77 +-- .../catroid/content/bricks/RepeatBrick.java | 58 +- .../content/bricks/RepeatUntilBrick.java | 37 +- .../bricks/ReplaceItemInUserListBrick.java | 87 +-- .../content/bricks/SayBubbleBrick.java | 31 +- .../content/bricks/SayForBubbleBrick.java | 35 +- .../bricks/SetBackgroundByIndexBrick.java | 20 +- .../content/bricks/SetBrightnessBrick.java | 46 +- .../catroid/content/bricks/SetColorBrick.java | 49 +- .../content/bricks/SetLookByIndexBrick.java | 48 +- .../content/bricks/SetNfcTagBrick.java | 45 +- .../content/bricks/SetPenColorBrick.java | 74 +-- .../content/bricks/SetPenSizeBrick.java | 58 +- .../content/bricks/SetSizeToBrick.java | 47 +- .../catroid/content/bricks/SetTextBrick.java | 93 +-- .../content/bricks/SetTransparencyBrick.java | 52 +- .../content/bricks/SetVariableBrick.java | 45 +- .../content/bricks/SetVolumeToBrick.java | 52 +- .../catroid/content/bricks/SetXBrick.java | 45 +- .../catroid/content/bricks/SetYBrick.java | 42 +- .../catroid/content/bricks/ShowTextBrick.java | 64 +- .../content/bricks/SpeakAndWaitBrick.java | 75 +-- .../catroid/content/bricks/SpeakBrick.java | 42 +- .../content/bricks/ThinkBubbleBrick.java | 59 +- .../content/bricks/ThinkForBubbleBrick.java | 122 +--- .../catroid/content/bricks/TurnLeftBrick.java | 49 +- .../content/bricks/TurnRightBrick.java | 48 +- .../catroid/content/bricks/UserBrick.java | 178 +---- .../content/bricks/UserBrickParameter.java | 47 +- .../content/bricks/UserVariableBrick.java | 2 +- .../content/bricks/VibrationBrick.java | 73 +- .../catroid/content/bricks/WaitBrick.java | 91 +-- .../content/bricks/WaitUntilBrick.java | 41 +- .../content/bricks/WhenConditionBrick.java | 56 +- .../content/bricks/WhenStartedBrick.java | 14 +- .../catroid/formulaeditor/Formula.java | 64 +- .../formulaeditor/FormulaEditorEditText.java | 26 +- ...wardCompatibleCatrobatLanguageXStream.java | 1 - .../catroid/io/XstreamSerializer.java | 9 +- .../content/bricks/SetBounceBrick.java | 48 +- .../content/bricks/SetFrictionBrick.java | 44 +- .../content/bricks/SetGravityBrick.java | 59 +- .../physics/content/bricks/SetMassBrick.java | 44 +- .../content/bricks/SetVelocityBrick.java | 60 +- .../content/bricks/TurnLeftSpeedBrick.java | 44 +- .../content/bricks/TurnRightSpeedBrick.java | 44 +- .../org/catrobat/catroid/stage/PenActor.java | 2 +- .../ui/fragment/AdvancedConfigSeekbar.java | 216 ------ .../ui/fragment/CategoryBricksFactory.java | 93 +-- .../catroid/ui/fragment/ColorSeekbar.java | 85 +-- .../ui/fragment/FormulaEditorFragment.java | 263 ++------ .../catroid/ui/fragment/SingleSeekBar.java | 88 +++ .../catroid/ui/fragment/SingleSeekbar.java | 104 --- .../org/catrobat/catroid/utils/Utils.java | 21 - .../textfield_pressed_android4.9.png | Bin 350 -> 0 bytes .../layout-ar/brick_drone_move_backward.xml | 12 +- .../res/layout-ar/brick_drone_move_down.xml | 12 +- .../layout-ar/brick_drone_move_forward.xml | 12 +- .../res/layout-ar/brick_drone_move_left.xml | 12 +- .../res/layout-ar/brick_drone_move_right.xml | 12 +- .../res/layout-ar/brick_drone_move_up.xml | 12 +- .../res/layout-ar/brick_drone_turn_left.xml | 12 +- .../brick_drone_turn_left_magneto.xml | 89 --- .../res/layout-ar/brick_drone_turn_right.xml | 12 +- .../brick_drone_turn_right_magneto.xml | 89 --- .../brick_jumping_sumo_move_backward.xml | 14 +- .../brick_jumping_sumo_move_forward.xml | 4 +- .../res/layout-ar/brick_nxt_motor_action.xml | 42 +- .../res/layout/brick_drone_move_backward.xml | 12 +- .../main/res/layout/brick_drone_move_down.xml | 12 +- .../res/layout/brick_drone_move_forward.xml | 12 +- .../main/res/layout/brick_drone_move_left.xml | 12 +- .../res/layout/brick_drone_move_right.xml | 12 +- .../main/res/layout/brick_drone_move_up.xml | 12 +- .../main/res/layout/brick_drone_spinner.xml | 65 -- .../main/res/layout/brick_drone_turn_left.xml | 12 +- .../layout/brick_drone_turn_left_magneto.xml | 88 --- .../res/layout/brick_drone_turn_right.xml | 12 +- .../layout/brick_drone_turn_right_magneto.xml | 88 --- .../main/res/layout/brick_ev3_play_tone.xml | 74 +-- .../src/main/res/layout/brick_glide_to.xml | 3 +- ...control.xml => brick_if_then_begin_if.xml} | 33 +- .../brick_insert_item_into_userlist.xml | 19 +- .../brick_jumping_sumo_move_backward.xml | 2 +- .../brick_jumping_sumo_move_forward.xml | 2 +- .../res/layout/brick_jumping_sumo_sound.xml | 39 +- catroid/src/main/res/layout/brick_note.xml | 25 +- .../res/layout/brick_nxt_motor_turn_angle.xml | 79 ++- .../main/res/layout/brick_nxt_play_tone.xml | 36 +- .../res/layout/brick_phiro_motor_backward.xml | 41 +- .../res/layout/brick_phiro_motor_forward.xml | 45 +- .../res/layout/brick_phiro_motor_stop.xml | 25 +- .../main/res/layout/brick_phiro_play_tone.xml | 44 +- .../src/main/res/layout/brick_place_at.xml | 41 +- .../res/layout/brick_raspi_if_begin_if.xml | 3 +- .../src/main/res/layout/brick_raspi_pwm.xml | 18 +- .../res/layout/brick_raspi_send_digital.xml | 14 +- .../src/main/res/layout/brick_say_bubble.xml | 5 +- .../main/res/layout/brick_say_for_bubble.xml | 47 +- .../main/res/layout/brick_set_color_to.xml | 26 +- ..._drone_set_text.xml => brick_set_text.xml} | 43 +- .../res/layout/brick_set_transparency.xml | 39 +- .../main/res/layout/brick_set_variable.xml | 22 +- .../main/res/layout/brick_set_volume_to.xml | 32 +- catroid/src/main/res/layout/brick_set_x.xml | 25 +- catroid/src/main/res/layout/brick_set_y.xml | 25 +- .../main/res/layout/brick_think_bubble.xml | 5 +- .../res/layout/brick_think_for_bubble.xml | 46 +- .../src/main/res/layout/brick_vibration.xml | 23 +- catroid/src/main/res/layout/brick_wait.xml | 31 +- .../layout/fragment_drone_config_cooser.xml | 261 -------- .../res/layout/fragment_rgb_color_chooser.xml | 58 +- .../layout/single_seekbar_value_chooser.xml | 18 +- catroid/src/main/res/values/colors.xml | 11 +- catroid/src/main/res/values/strings.xml | 14 +- catroid/src/main/res/values/styles.xml | 4 +- 234 files changed, 2531 insertions(+), 8113 deletions(-) delete mode 100644 catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/rtl/ArabicSentenceStructureInBricksNameTest.java delete mode 100644 catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneBasicControlBrick.java delete mode 100644 catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneSpinnerBrick.java delete mode 100644 catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneTurnLeftMagnetoBrick.java delete mode 100644 catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneTurnRightMagnetoBrick.java delete mode 100644 catroid/src/main/java/org/catrobat/catroid/ui/fragment/AdvancedConfigSeekbar.java create mode 100644 catroid/src/main/java/org/catrobat/catroid/ui/fragment/SingleSeekBar.java delete mode 100644 catroid/src/main/java/org/catrobat/catroid/ui/fragment/SingleSeekbar.java delete mode 100644 catroid/src/main/res/drawable-mdpi/textfield_pressed_android4.9.png delete mode 100644 catroid/src/main/res/layout-ar/brick_drone_turn_left_magneto.xml delete mode 100644 catroid/src/main/res/layout-ar/brick_drone_turn_right_magneto.xml delete mode 100644 catroid/src/main/res/layout/brick_drone_spinner.xml delete mode 100644 catroid/src/main/res/layout/brick_drone_turn_left_magneto.xml delete mode 100644 catroid/src/main/res/layout/brick_drone_turn_right_magneto.xml rename catroid/src/main/res/layout/{brick_drone_control.xml => brick_if_then_begin_if.xml} (67%) rename catroid/src/main/res/layout/{brick_drone_set_text.xml => brick_set_text.xml} (75%) delete mode 100644 catroid/src/main/res/layout/fragment_drone_config_cooser.xml diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/EventActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/EventActionTest.java index d25f88aabe2..9d77164cac6 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/EventActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/EventActionTest.java @@ -38,6 +38,7 @@ import org.catrobat.catroid.content.bricks.SetXBrick; import org.catrobat.catroid.content.bricks.WaitBrick; import org.catrobat.catroid.content.eventids.EventId; +import org.catrobat.catroid.formulaeditor.Formula; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -78,7 +79,7 @@ private Project createProjectWithSprite(Sprite sprite) { public void testBroadcast() { int testPosition = 100; startScript.addBrick(new BroadcastBrick(MESSAGE1)); - broadcastScript1.addBrick(new SetXBrick(testPosition)); + broadcastScript1.addBrick(new SetXBrick(new Formula(testPosition))); sprite.initializeEventThreads(EventId.START); @@ -93,9 +94,9 @@ public void testBroadcastWait() { int setTestPosition = 20; startScript.addBrick(new BroadcastWaitBrick(MESSAGE1)); - startScript.addBrick(new SetXBrick(testPosition)); + startScript.addBrick(new SetXBrick(new Formula(testPosition))); broadcastScript1.addBrick(new WaitBrick(500)); - broadcastScript1.addBrick(new SetXBrick(setTestPosition)); + broadcastScript1.addBrick(new SetXBrick(new Formula(setTestPosition))); sprite.initializeEventThreads(EventId.START); @@ -153,7 +154,7 @@ public void testRestartingBroadcastWaitBrickWithBroadcastBrick() { Script startScript2 = new StartScript(); startScript2.addBrick(new BroadcastWaitBrick(MESSAGE1)); - startScript2.addBrick(new SetXBrick(xPosition)); + startScript2.addBrick(new SetXBrick(new Formula(xPosition))); sprite.addScript(startScript2); sprite.initializeEventThreads(EventId.START); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/IfLogicActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/IfLogicActionTest.java index bfad4e061ff..9ab83819f36 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/IfLogicActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/IfLogicActionTest.java @@ -98,12 +98,12 @@ public void testNestedIfBrick() throws InterruptedException { repeatBrick = new RepeatBrick(2); ifLogicBeginBrick = new IfLogicBeginBrick(validFormula); ifLogicElseBrick = new IfLogicElseBrick(ifLogicBeginBrick); - ifLogicEndBrick = new IfLogicEndBrick(ifLogicElseBrick, ifLogicBeginBrick); + ifLogicEndBrick = new IfLogicEndBrick(ifLogicBeginBrick, ifLogicElseBrick); repeatBrick.setLoopEndBrick(new LoopEndBrick(repeatBrick)); ifLogicBeginBrick2 = new IfLogicBeginBrick(validFormula); ifLogicElseBrick2 = new IfLogicElseBrick(ifLogicBeginBrick2); - ifLogicEndBrick2 = new IfLogicEndBrick(ifLogicElseBrick2, ifLogicBeginBrick2); + ifLogicEndBrick2 = new IfLogicEndBrick(ifLogicBeginBrick2, ifLogicElseBrick2); testScript.addBrick(ifLogicBeginBrick); testScript.addBrick(ifLogicBeginBrick2); @@ -140,7 +140,7 @@ public void testIfBrick() throws InterruptedException { ifLogicBeginBrick = new IfLogicBeginBrick(validFormula); ifLogicElseBrick = new IfLogicElseBrick(ifLogicBeginBrick); - ifLogicEndBrick = new IfLogicEndBrick(ifLogicElseBrick, ifLogicBeginBrick); + ifLogicEndBrick = new IfLogicEndBrick(ifLogicBeginBrick, ifLogicElseBrick); testScript.addBrick(ifLogicBeginBrick); testScript.addBrick(setVariableBrick); @@ -171,7 +171,7 @@ public void testIfElseBrick() throws InterruptedException { ifLogicBeginBrick = new IfLogicBeginBrick(invalidFormula); ifLogicElseBrick = new IfLogicElseBrick(ifLogicBeginBrick); - ifLogicEndBrick = new IfLogicEndBrick(ifLogicElseBrick, ifLogicBeginBrick); + ifLogicEndBrick = new IfLogicEndBrick(ifLogicBeginBrick, ifLogicElseBrick); testScript.addBrick(ifLogicBeginBrick); testScript.addBrick(ifLogicElseBrick); @@ -230,7 +230,7 @@ private void testFormula(Formula formula, Object expected) { testScript = new StartScript(); ifLogicBeginBrick = new IfLogicBeginBrick(formula); ifLogicElseBrick = new IfLogicElseBrick(ifLogicBeginBrick); - ifLogicEndBrick = new IfLogicEndBrick(ifLogicElseBrick, ifLogicBeginBrick); + ifLogicEndBrick = new IfLogicEndBrick(ifLogicBeginBrick, ifLogicElseBrick); testScript.addBrick(ifLogicBeginBrick); testScript.addBrick(setVariableBrickIfTrue); testScript.addBrick(ifLogicElseBrick); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/MoveNStepsActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/MoveNStepsActionTest.java index 3544b36532e..59de162f706 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/MoveNStepsActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/MoveNStepsActionTest.java @@ -29,7 +29,6 @@ import org.catrobat.catroid.content.ActionFactory; import org.catrobat.catroid.content.SingleSprite; import org.catrobat.catroid.content.Sprite; -import org.catrobat.catroid.content.bricks.PointInDirectionBrick.Direction; import org.catrobat.catroid.formulaeditor.Formula; import org.junit.Before; import org.junit.Test; @@ -67,7 +66,7 @@ public void testMoveHorizontalBackward() { @Test public void testMoveVerticalUp() { - sprite.look.setDirectionInUserInterfaceDimensionUnit((float) Direction.UP.getDegrees()); + sprite.look.setDirectionInUserInterfaceDimensionUnit(0); Action moveNStepsAction = factory.createMoveNStepsAction(sprite, new Formula(steps)); executeTest(moveNStepsAction, 0, steps); @@ -75,7 +74,7 @@ public void testMoveVerticalUp() { @Test public void testMoveVerticalDown() { - sprite.look.setDirectionInUserInterfaceDimensionUnit((float) Direction.DOWN.getDegrees()); + sprite.look.setDirectionInUserInterfaceDimensionUnit(180); Action moveNStepsAction = factory.createMoveNStepsAction(sprite, new Formula(steps)); executeTest(moveNStepsAction, 0, -steps); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/PointInDirectionActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/PointInDirectionActionTest.java index b4741c4a979..e58211202c3 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/PointInDirectionActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/PointInDirectionActionTest.java @@ -26,7 +26,6 @@ import org.catrobat.catroid.content.SingleSprite; import org.catrobat.catroid.content.Sprite; -import org.catrobat.catroid.content.bricks.PointInDirectionBrick.Direction; import org.catrobat.catroid.formulaeditor.Formula; import org.junit.Before; import org.junit.Test; @@ -47,28 +46,28 @@ public void setUp() throws Exception { @Test public void testPointRight() { - sprite.getActionFactory().createPointInDirectionAction(sprite, new Formula(Direction.RIGHT.getDegrees())) + sprite.getActionFactory().createPointInDirectionAction(sprite, new Formula(90)) .act(1.0f); assertEquals(90f, sprite.look.getDirectionInUserInterfaceDimensionUnit(), 1e-3); } @Test public void testPointLeft() { - sprite.getActionFactory().createPointInDirectionAction(sprite, new Formula(Direction.LEFT.getDegrees())) + sprite.getActionFactory().createPointInDirectionAction(sprite, new Formula(-90)) .act(1.0f); assertEquals(-90f, sprite.look.getDirectionInUserInterfaceDimensionUnit(), 1e-3); } @Test public void testPointUp() { - sprite.getActionFactory().createPointInDirectionAction(sprite, new Formula(Direction.UP.getDegrees())) + sprite.getActionFactory().createPointInDirectionAction(sprite, new Formula(0)) .act(1.0f); assertEquals(0f, sprite.look.getDirectionInUserInterfaceDimensionUnit(), 1e-3); } @Test public void testPointDown() { - sprite.getActionFactory().createPointInDirectionAction(sprite, new Formula(Direction.DOWN.getDegrees())) + sprite.getActionFactory().createPointInDirectionAction(sprite, new Formula(180)) .act(1.0f); assertEquals(180f, sprite.look.getDirectionInUserInterfaceDimensionUnit(), 1e-3); } @@ -77,18 +76,18 @@ public void testPointDown() { public void testRotateAndPoint() { Sprite sprite = new SingleSprite("test"); sprite.look.setRotation(-42); - sprite.getActionFactory().createPointInDirectionAction(sprite, new Formula(Direction.RIGHT.getDegrees())) + sprite.getActionFactory().createPointInDirectionAction(sprite, new Formula(90)) .act(1.0f); assertEquals(90f, sprite.look.getDirectionInUserInterfaceDimensionUnit(), 1e-3); } @Test public void testBrickWithStringFormula() { - sprite.getActionFactory().createPointInDirectionAction(sprite, new Formula(String.valueOf(Direction.RIGHT.getDegrees()))).act(1.0f); - assertEquals((float) Direction.RIGHT.getDegrees(), sprite.look.getDirectionInUserInterfaceDimensionUnit()); + sprite.getActionFactory().createPointInDirectionAction(sprite, new Formula(90)).act(1.0f); + assertEquals(90f, sprite.look.getDirectionInUserInterfaceDimensionUnit()); sprite.getActionFactory().createPointInDirectionAction(sprite, new Formula(NOT_NUMERICAL_STRING)).act(1.0f); - assertEquals((float) Direction.RIGHT.getDegrees(), sprite.look.getDirectionInUserInterfaceDimensionUnit()); + assertEquals(90f, sprite.look.getDirectionInUserInterfaceDimensionUnit()); } @Test diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetRotationStyleActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetRotationStyleActionTest.java index c54b3ec55a0..7d8b2ff99e5 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetRotationStyleActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/SetRotationStyleActionTest.java @@ -29,7 +29,6 @@ import org.catrobat.catroid.content.ActionFactory; import org.catrobat.catroid.content.Look; import org.catrobat.catroid.content.Sprite; -import org.catrobat.catroid.content.bricks.PointInDirectionBrick.Direction; import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.physics.PhysicsLook; import org.catrobat.catroid.physics.PhysicsObject; @@ -56,8 +55,7 @@ public void setUp() throws Exception { public void testNormalMode() { ActionFactory factory = sprite.getActionFactory(); Action rotationStyleAction = factory.createSetRotationStyleAction(sprite, Look.ROTATION_STYLE_ALL_AROUND); - Action pointInDirectionAction = factory.createPointInDirectionAction(sprite, new Formula(Direction.RIGHT - .getDegrees())); + Action pointInDirectionAction = factory.createPointInDirectionAction(sprite, new Formula(90)); rotationStyleAction.act(1.0f); pointInDirectionAction.act(1.0f); @@ -68,8 +66,7 @@ public void testNormalMode() { public void testNoMode() { ActionFactory factory = sprite.getActionFactory(); Action rotationStyleAction = factory.createSetRotationStyleAction(sprite, Look.ROTATION_STYLE_NONE); - Action pointInDirectionAction = factory.createPointInDirectionAction(sprite, new Formula(Direction.LEFT - .getDegrees())); + Action pointInDirectionAction = factory.createPointInDirectionAction(sprite, new Formula(-90)); rotationStyleAction.act(1.0f); pointInDirectionAction.act(1.0f); @@ -81,8 +78,7 @@ public void testNoMode() { public void testLRMode() { ActionFactory factory = sprite.getActionFactory(); Action rotationStyleAction = factory.createSetRotationStyleAction(sprite, Look.ROTATION_STYLE_LEFT_RIGHT_ONLY); - Action pointInDirectionAction = factory.createPointInDirectionAction(sprite, new Formula(Direction.LEFT - .getDegrees())); + Action pointInDirectionAction = factory.createPointInDirectionAction(sprite, new Formula(-90)); rotationStyleAction.act(1.0f); pointInDirectionAction.act(1.0f); @@ -100,19 +96,19 @@ public void testNormalModeInPhysics() { physicsLook.setRotationMode(Look.ROTATION_STYLE_ALL_AROUND); - physicsLook.setRotation((float) Direction.RIGHT.getDegrees()); + physicsLook.setRotation(90); assertEquals(90f, physicsObject.getDirection()); assertEquals(90f, physicsLook.getRotation()); - physicsLook.setRotation((float) Direction.LEFT.getDegrees()); + physicsLook.setRotation(-90); assertEquals(-90f, physicsObject.getDirection()); assertEquals(-90f, physicsLook.getRotation()); - physicsLook.setRotation((float) Direction.UP.getDegrees()); + physicsLook.setRotation(0); assertEquals(0f, physicsObject.getDirection()); assertEquals(0f, physicsLook.getRotation()); - physicsLook.setRotation((float) Direction.DOWN.getDegrees()); + physicsLook.setRotation(180); assertEquals(180f, physicsObject.getDirection()); assertEquals(180f, physicsLook.getRotation()); } @@ -124,19 +120,19 @@ public void testNoModeInPhysics() { physicsLook.setRotationMode(Look.ROTATION_STYLE_NONE); - physicsLook.setRotation((float) Direction.RIGHT.getDegrees()); + physicsLook.setRotation(90); assertEquals(90f, physicsObject.getDirection()); assertEquals(0f, physicsLook.getRotation()); - physicsLook.setRotation((float) Direction.LEFT.getDegrees()); + physicsLook.setRotation(-90); assertEquals(-90f, physicsObject.getDirection()); assertEquals(0f, physicsLook.getRotation()); - physicsLook.setRotation((float) Direction.UP.getDegrees()); + physicsLook.setRotation(0); assertEquals(0f, physicsObject.getDirection()); assertEquals(0f, physicsLook.getRotation()); - physicsLook.setRotation((float) Direction.DOWN.getDegrees()); + physicsLook.setRotation(180); assertEquals(180f, physicsObject.getDirection()); assertEquals(0f, physicsLook.getRotation()); } @@ -148,19 +144,19 @@ public void testLRModeInPhysics() { physicsLook.setRotationMode(Look.ROTATION_STYLE_LEFT_RIGHT_ONLY); - physicsLook.setRotation((float) Direction.RIGHT.getDegrees()); + physicsLook.setRotation(90); assertEquals(90f, physicsObject.getDirection()); assertEquals(0f, physicsLook.getRotation()); - physicsLook.setRotation((float) Direction.LEFT.getDegrees()); + physicsLook.setRotation(-90); assertEquals(-90f, physicsObject.getDirection()); assertEquals(0f, physicsLook.getRotation()); - physicsLook.setRotation((float) Direction.UP.getDegrees()); + physicsLook.setRotation(0); assertEquals(0f, physicsObject.getDirection()); assertEquals(0f, physicsLook.getRotation()); - physicsLook.setRotation((float) Direction.DOWN.getDegrees()); + physicsLook.setRotation(180); assertEquals(180f, physicsObject.getDirection()); assertEquals(0f, physicsLook.getRotation()); } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/StopThisScriptActionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/StopThisScriptActionTest.java index 4f045d12bef..1541b1ae6ef 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/StopThisScriptActionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/actions/StopThisScriptActionTest.java @@ -40,6 +40,7 @@ import org.catrobat.catroid.content.bricks.SetXBrick; import org.catrobat.catroid.content.bricks.StopScriptBrick; import org.catrobat.catroid.content.eventids.EventId; +import org.catrobat.catroid.formulaeditor.Formula; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -71,7 +72,7 @@ private Project createProjectWithSprite(Sprite sprite) { public void testStopThisScriptBasic() { final int invalidPosition = 15; startScript.addBrick(new StopScriptBrick(BrickValues.STOP_THIS_SCRIPT)); - startScript.addBrick(new SetXBrick(invalidPosition)); + startScript.addBrick(new SetXBrick(new Formula(invalidPosition))); sprite.initializeEventThreads(EventId.START); executeAllActions(); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/bricks/BrickCloneTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/bricks/BrickCloneTest.java index 7833c5248f4..6a8d13d697b 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/content/bricks/BrickCloneTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/bricks/BrickCloneTest.java @@ -61,7 +61,6 @@ import org.catrobat.catroid.content.bricks.SpeakBrick; import org.catrobat.catroid.content.bricks.TurnLeftBrick; import org.catrobat.catroid.content.bricks.TurnRightBrick; -import org.catrobat.catroid.content.bricks.UserBrickParameter; import org.catrobat.catroid.content.bricks.UserVariableBrick; import org.catrobat.catroid.content.bricks.VibrationBrick; import org.catrobat.catroid.content.bricks.WaitBrick; @@ -190,9 +189,6 @@ public void testBrickCloneWithFormula() throws CloneNotSupportedException, Inter brick = new SpeakBrick(String.valueOf(BRICK_FORMULA_VALUE)); brickClone(brick, Brick.BrickField.SPEAK); - - brick = new UserBrickParameter(new Formula(0)); - brickClone(brick, Brick.BrickField.USER_BRICK); } @Test diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/collision/CollisionFormulaConversionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/collision/CollisionFormulaConversionTest.java index 354997548f9..d7ac6d0e906 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/collision/CollisionFormulaConversionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/physics/collision/CollisionFormulaConversionTest.java @@ -109,7 +109,7 @@ public void testFormulaUpdated() throws IOException { assertThat(brick, is(instanceOf(FormulaBrick.class))); FormulaBrick formulaBrick = (FormulaBrick) brick; - String newFormula = formulaBrick.getFormulas().get(0).getDisplayString(InstrumentationRegistry + String newFormula = formulaBrick.getFormulas().get(0).getTrimmedFormulaString(InstrumentationRegistry .getTargetContext()); String expected = collisionTag + "(" + thirdSpriteName + ") "; assertEquals(expected, newFormula); @@ -149,7 +149,7 @@ public void testFormulaUpdatedWithLanguageConversion() throws IOException { assertThat(brick, is(instanceOf(FormulaBrick.class))); FormulaBrick formulaBrick = (FormulaBrick) brick; - String newFormula = formulaBrick.getFormulas().get(0).getDisplayString(InstrumentationRegistry + String newFormula = formulaBrick.getFormulas().get(0).getTrimmedFormulaString(InstrumentationRegistry .getTargetContext()); String expected = collisionTag + "(" + thirdSpriteName + ") "; assertEquals(expected, newFormula); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/UtilsTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/UtilsTest.java index e1c9af94e04..82193560f07 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/UtilsTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/utiltests/UtilsTest.java @@ -28,7 +28,6 @@ import org.catrobat.catroid.common.Constants; import org.catrobat.catroid.common.DefaultProjectHandler; -import org.catrobat.catroid.common.LookData; import org.catrobat.catroid.common.ScreenValues; import org.catrobat.catroid.content.Project; import org.catrobat.catroid.content.Script; @@ -38,9 +37,6 @@ import org.catrobat.catroid.content.XmlHeader; import org.catrobat.catroid.content.bricks.Brick; import org.catrobat.catroid.content.bricks.HideBrick; -import org.catrobat.catroid.content.bricks.SetLookBrick; -import org.catrobat.catroid.content.bricks.WaitBrick; -import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.io.StorageOperations; import org.catrobat.catroid.stage.ShowBubbleActor; import org.catrobat.catroid.test.utils.TestUtils; @@ -172,7 +168,6 @@ public void testCompareProjectToDefaultProject() throws IOException, IllegalArgu addSpriteAndCompareToDefaultProject(); addScriptAndCompareToDefalutProject(); addBrickAndCompareToDefaultProject(); - changeParametersOfBricksAndCompareToDefaultProject(); removeBrickAndCompareToDefaultProject(); removeScriptAndCompareToDefaultProject(); removeSpriteAndCompareToDefaultProject(); @@ -397,44 +392,6 @@ private void addBrickAndCompareToDefaultProject() { assertTrue(Utils.isDefaultProject(defaultProject, InstrumentationRegistry.getTargetContext())); } - private void changeParametersOfBricksAndCompareToDefaultProject() { - Script catroidScript = defaultProject.getDefaultScene().getSpriteList().get(1).getScript(0); - ArrayList brickList = catroidScript.getBrickList(); - SetLookBrick setLookBrick = null; - WaitBrick waitBrick = null; - for (int i = 0; i < brickList.size(); i++) { - if (brickList.get(i) instanceof SetLookBrick) { - setLookBrick = (SetLookBrick) brickList.get(i); - break; - } - if (brickList.get(i) instanceof WaitBrick) { - waitBrick = (WaitBrick) brickList.get(i); - break; - } - } - - if (setLookBrick != null) { - LookData oldLookData = setLookBrick.getLook(); - LookData newLookData = new LookData(); - setLookBrick.setLook(newLookData); - assertFalse(Utils.isDefaultProject(defaultProject, InstrumentationRegistry.getTargetContext())); - - setLookBrick.setLook(oldLookData); - assertTrue(Utils.isDefaultProject(defaultProject, InstrumentationRegistry.getTargetContext())); - } - - if (waitBrick != null) { - Formula oldTime = waitBrick.getTimeToWait(); - Formula newTimeToWait = new Formula(2345); - - waitBrick.setTimeToWait(newTimeToWait); - assertFalse(Utils.isDefaultProject(defaultProject, InstrumentationRegistry.getTargetContext())); - - waitBrick.setTimeToWait(oldTime); - assertTrue(Utils.isDefaultProject(defaultProject, InstrumentationRegistry.getTargetContext())); - } - } - private void removeBrickAndCompareToDefaultProject() { Script catroidScript = defaultProject.getDefaultScene().getSpriteList().get(1).getScript(0); ArrayList brickList = catroidScript.getBrickList(); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/BrickValueParameterTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/BrickValueParameterTest.java index 822584d4acd..f62fa04fb85 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/BrickValueParameterTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/BrickValueParameterTest.java @@ -194,6 +194,7 @@ import static org.catrobat.catroid.ui.settingsfragments.SettingsFragment.SETTINGS_SHOW_PHIRO_BRICKS; import static org.catrobat.catroid.ui.settingsfragments.SettingsFragment.SETTINGS_SHOW_RASPI_BRICKS; import static org.catrobat.catroid.uiespresso.util.UiTestUtils.getResources; +import static org.catrobat.catroid.uiespresso.util.UiTestUtils.getResourcesString; import static org.hamcrest.Matchers.allOf; import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.core.Is.is; @@ -214,7 +215,7 @@ public class BrickValueParameterTest { @Before public void setUp() throws Exception { - createProject("brickDefaultValueParameterTest"); + createProject("brickDefaultValueParameterTest "); baseActivityTestRule.launchActivity(); SharedPreferences sharedPreferences = PreferenceManager @@ -302,7 +303,7 @@ public void testEventBricksDefaultValues() { //When becomes true checkIfBrickShowsText(WhenConditionBrick.class, R.string.brick_when_becomes_true); checkIfBrickShowsText(WhenConditionBrick.class, R.string.brick_when_condition_when); - checkIfBrickShowsEditTextWithText(WhenConditionBrick.class, R.id.brick_when_condition_edit_text, "1 < 2"); + checkIfBrickShowsEditTextWithText(WhenConditionBrick.class, R.id.brick_when_condition_edit_text, "1 < 2 "); //When physical collision with checkIfBrickShowsText(CollisionReceiverBrick.class, R.string.brick_collision_receive); @@ -332,24 +333,24 @@ public void testMotionBricksDefaultValues() { checkIfBrickShowsText(PlaceAtBrick.class, R.string.brick_place_at); checkIfBrickShowsText(PlaceAtBrick.class, R.string.x_label); checkIfBrickShowsText(PlaceAtBrick.class, R.string.y_label); - checkIfBrickShowsEditTextWithText(PlaceAtBrick.class, R.id.brick_place_at_edit_text_x, "100"); - checkIfBrickShowsEditTextWithText(PlaceAtBrick.class, R.id.brick_place_at_edit_text_y, "200"); + checkIfBrickShowsEditTextWithText(PlaceAtBrick.class, R.id.brick_place_at_edit_text_x, "100 "); + checkIfBrickShowsEditTextWithText(PlaceAtBrick.class, R.id.brick_place_at_edit_text_y, "200 "); //Set X to checkIfBrickShowsText(SetXBrick.class, R.string.brick_set_x); - checkIfBrickShowsText(SetXBrick.class, "100"); + checkIfBrickShowsText(SetXBrick.class, "100 "); //Set Y to checkIfBrickShowsText(SetYBrick.class, R.string.brick_set_y); - checkIfBrickShowsText(SetYBrick.class, "200"); + checkIfBrickShowsText(SetYBrick.class, "200 "); //Change X by checkIfBrickShowsText(ChangeXByNBrick.class, R.string.brick_change_x_by); - checkIfBrickShowsText(ChangeXByNBrick.class, "10"); + checkIfBrickShowsText(ChangeXByNBrick.class, "10 "); //Change Y by checkIfBrickShowsText(ChangeYByNBrick.class, R.string.brick_change_y_by); - checkIfBrickShowsText(ChangeYByNBrick.class, "10"); + checkIfBrickShowsText(ChangeYByNBrick.class, "10 "); //Go to checkIfBrickShowsText(GoToBrick.class, R.string.brick_go_to); @@ -360,22 +361,22 @@ public void testMotionBricksDefaultValues() { //Move steps checkIfBrickShowsText(MoveNStepsBrick.class, R.string.brick_move); - checkIfBrickShowsText(MoveNStepsBrick.class, "10"); + checkIfBrickShowsText(MoveNStepsBrick.class, "10 "); //Turn left degrees checkIfBrickShowsText(TurnLeftBrick.class, R.string.brick_turn_left); checkIfBrickShowsText(TurnLeftBrick.class, R.string.degrees); - checkIfBrickShowsText(TurnLeftBrick.class, "15"); + checkIfBrickShowsText(TurnLeftBrick.class, "15 "); //Turn right degrees checkIfBrickShowsText(TurnRightBrick.class, R.string.brick_turn_right); checkIfBrickShowsText(TurnRightBrick.class, R.string.degrees); - checkIfBrickShowsText(TurnRightBrick.class, "15"); + checkIfBrickShowsText(TurnRightBrick.class, "15 "); //Point in direction degrees checkIfBrickShowsText(PointInDirectionBrick.class, R.string.brick_point_in_direction); checkIfBrickShowsText(PointInDirectionBrick.class, R.string.degrees); - checkIfBrickShowsText(PointInDirectionBrick.class, "90"); + checkIfBrickShowsText(PointInDirectionBrick.class, "90 "); //Point towards checkIfBrickShowsText(PointToBrick.class, R.string.brick_point_to); @@ -393,20 +394,20 @@ public void testMotionBricksDefaultValues() { checkIfBrickShowsText(GlideToBrick.class, R.string.brick_glide); checkIfBrickShowsText(GlideToBrick.class, R.string.brick_glide_to_x); checkIfBrickShowsText(GlideToBrick.class, R.string.y_label); - checkIfBrickShowsText(GlideToBrick.class, R.string.number_1); - checkIfBrickShowsText(GlideToBrick.class, "100"); - checkIfBrickShowsText(GlideToBrick.class, "200"); + checkIfBrickShowsText(GlideToBrick.class, "1 "); + checkIfBrickShowsText(GlideToBrick.class, "100 "); + checkIfBrickShowsText(GlideToBrick.class, "200 "); //Go back checkIfBrickShowsText(GoNStepsBackBrick.class, R.string.brick_go_back); - checkIfBrickShowsText(GoNStepsBackBrick.class, "1"); + checkIfBrickShowsText(GoNStepsBackBrick.class, "1 "); //Go to front checkIfBrickShowsText(ComeToFrontBrick.class, R.string.brick_come_to_front); //Vibrate for second checkIfBrickShowsText(VibrationBrick.class, R.string.brick_vibration); - checkIfBrickShowsText(VibrationBrick.class, R.string.number_1); + checkIfBrickShowsText(VibrationBrick.class, "1 "); //Set motion type to checkIfBrickShowsText(SetPhysicsObjectTypeBrick.class, R.string.brick_set_physics_object_type); @@ -423,34 +424,34 @@ public void testMotionBricksDefaultValues() { //Rotate left checkIfBrickShowsText(TurnLeftBrick.class, R.string.brick_turn_left); checkIfBrickShowsText(TurnLeftBrick.class, R.string.degrees); - checkIfBrickShowsText(TurnLeftBrick.class, "15"); + checkIfBrickShowsText(TurnLeftBrick.class, "15 "); //Rotate right checkIfBrickShowsText(TurnRightBrick.class, R.string.brick_turn_right); checkIfBrickShowsText(TurnRightBrick.class, R.string.degrees); - checkIfBrickShowsText(TurnRightBrick.class, "15"); + checkIfBrickShowsText(TurnRightBrick.class, "15 "); //Set gravity checkIfBrickShowsText(SetGravityBrick.class, R.string.brick_set_gravity_to); checkIfBrickShowsText(SetGravityBrick.class, R.string.x_label); checkIfBrickShowsText(SetGravityBrick.class, R.string.y_label); checkIfBrickShowsText(SetGravityBrick.class, R.string.brick_set_gravity_unit); - checkIfBrickShowsText(SetGravityBrick.class, "0"); - checkIfBrickShowsText(SetGravityBrick.class, "-10"); + checkIfBrickShowsText(SetGravityBrick.class, "0 "); + checkIfBrickShowsText(SetGravityBrick.class, "- 10 "); //Set mass checkIfBrickShowsText(SetMassBrick.class, R.string.brick_set_mass); - checkIfBrickShowsText(SetMassBrick.class, "1"); + checkIfBrickShowsText(SetMassBrick.class, "1 "); checkIfBrickShowsText(SetMassBrick.class, R.string.brick_set_mass_unit); //Set bounce checkIfBrickShowsText(SetBounceBrick.class, R.string.brick_set_bounce_factor); - checkIfBrickShowsText(SetBounceBrick.class, "80"); + checkIfBrickShowsText(SetBounceBrick.class, "80 "); checkIfBrickShowsText(SetBounceBrick.class, R.string.percent_symbol); //Set friction checkIfBrickShowsText(SetFrictionBrick.class, R.string.brick_set_friction); - checkIfBrickShowsText(SetFrictionBrick.class, "20"); + checkIfBrickShowsText(SetFrictionBrick.class, "20 "); checkIfBrickShowsText(SetFrictionBrick.class, R.string.percent_symbol); } @@ -475,11 +476,11 @@ public void testSoundBricksDefaultValues() { //set volume to - edit text "60%" checkIfBrickShowsText(SetVolumeToBrick.class, R.string.brick_set_volume_to); checkIfBrickShowsText(SetVolumeToBrick.class, R.string.percent_symbol); - checkIfBrickShowsEditTextWithText(SetVolumeToBrick.class, R.id.brick_set_volume_to_edit_text, "60"); + checkIfBrickShowsEditTextWithText(SetVolumeToBrick.class, R.id.brick_set_volume_to_edit_text, "60 "); //change volume by - edit text "-10.0" checkIfBrickShowsText(ChangeVolumeByNBrick.class, R.string.brick_change_volume_by); - checkIfBrickShowsEditTextWithText(ChangeVolumeByNBrick.class, R.id.brick_change_volume_by_edit_text, "-10"); + checkIfBrickShowsEditTextWithText(ChangeVolumeByNBrick.class, R.id.brick_change_volume_by_edit_text, "- 10 "); //speak - edit text "hello" checkIfBrickShowsText(SpeakBrick.class, R.string.brick_speak); @@ -489,12 +490,12 @@ public void testSoundBricksDefaultValues() { //speak and wait - edit text "hello" checkIfBrickShowsText(SpeakAndWaitBrick.class, R.string.brick_speak_and_wait); checkIfBrickShowsEditTextWithText(SpeakAndWaitBrick.class, R.id.brick_speak_and_wait_edit_text, - R.string.brick_speak_default_value); + "'" + getResourcesString(R.string.brick_speak_default_value) + "' "); //ask and store - edit text "whats your name" - spinner "new" checkIfBrickShowsText(AskSpeechBrick.class, R.string.brick_ask_speech_label); checkIfBrickShowsEditTextWithText(AskSpeechBrick.class, R.id.brick_ask_speech_question_edit_text, - R.string.brick_ask_speech_default_question); + "'" + getResourcesString(R.string.brick_ask_speech_default_question) + "' "); checkIfBrickShowsText(AskSpeechBrick.class, R.string.brick_ask_speech_store); checkIfBrickShowsSpinnerWithEditTextOverlayWithText(AskSpeechBrick.class, R.id.brick_ask_speech_spinner, R.string.new_broadcast_message); @@ -516,62 +517,62 @@ public void testLooksBricksDefaultValues() { checkIfBrickShowsText(SetSizeToBrick.class, R.string.brick_set_size_to); checkIfBrickShowsText(SetSizeToBrick.class, R.string.percent_symbol); - checkIfBrickShowsText(SetSizeToBrick.class, "60"); + checkIfBrickShowsText(SetSizeToBrick.class, "60 "); checkIfBrickShowsText(ChangeSizeByNBrick.class, R.string.brick_change_size_by); - checkIfBrickShowsText(ChangeSizeByNBrick.class, "10"); + checkIfBrickShowsText(ChangeSizeByNBrick.class, "10 "); checkIfBrickShowsText(HideBrick.class, R.string.brick_hide); checkIfBrickShowsText(ShowBrick.class, R.string.brick_show); checkIfBrickShowsText(AskBrick.class, R.string.brick_ask_label); - checkIfBrickShowsText(AskBrick.class, R.string.brick_ask_default_question); + checkIfBrickShowsText(AskBrick.class, "'" + getResourcesString(R.string.brick_ask_default_question) + "' "); checkIfBrickShowsText(AskBrick.class, R.string.brick_ask_store); checkIfBrickShowsSpinnerWithEditTextOverlayWithText(AskBrick.class, R.id.brick_ask_spinner, R.string.brick_variable_spinner_create_new_variable); checkIfBrickShowsText(SayBubbleBrick.class, R.string.brick_say_bubble); - checkIfBrickShowsText(SayBubbleBrick.class, R.string.brick_say_bubble_default_value); + checkIfBrickShowsText(SayBubbleBrick.class, + "'" + getResourcesString(R.string.brick_say_bubble_default_value) + "' "); checkIfBrickShowsText(SayForBubbleBrick.class, R.string.brick_say_bubble); - checkIfBrickShowsText(SayForBubbleBrick.class, R.string.brick_say_bubble_default_value); + checkIfBrickShowsText(SayForBubbleBrick.class, + "'" + getResourcesString(R.string.brick_say_bubble_default_value) + "' "); checkIfBrickShowsText(SayForBubbleBrick.class, R.string.brick_think_say_for_text); - checkIfBrickShowsText(SayForBubbleBrick.class, UiTestUtils.getResourcesString(R.string - .formula_editor_sensor_time_second) + " "); + checkIfBrickShowsText(SayForBubbleBrick.class, getResources() + .getQuantityString(R.plurals.second_plural, Utils.convertDoubleToPluralInteger(BrickValues.DURATION))); checkIfBrickAtPositionShowsText(ThinkBubbleBrick.class, 1, R.string.brick_think_bubble); - checkIfBrickAtPositionShowsText(ThinkBubbleBrick.class, 1, R.string.brick_think_bubble_default_value); + checkIfBrickAtPositionShowsText(ThinkBubbleBrick.class, 1, + "'" + getResourcesString(R.string.brick_think_bubble_default_value) + "' "); checkIfBrickAtPositionShowsText(ThinkForBubbleBrick.class, 1, R.string.brick_think_bubble); - checkIfBrickAtPositionShowsText(ThinkForBubbleBrick.class, 1, R.string.brick_think_bubble_default_value); + checkIfBrickAtPositionShowsText(ThinkForBubbleBrick.class, 1, + "'" + getResourcesString(R.string.brick_think_bubble_default_value) + "' "); checkIfBrickAtPositionShowsText(ThinkForBubbleBrick.class, 1, R.string.brick_think_say_for_text); - onData(instanceOf(ThinkForBubbleBrick.class)) - .inAdapterView(BrickPrototypeListMatchers.isBrickPrototypeView()) - .atPosition(1) - .onChildView(withText(UiTestUtils.getResourcesString(R.string.formula_editor_sensor_time_second) - + " ")) - .check(matches(isDisplayed())); + checkIfBrickAtPositionShowsText(ThinkForBubbleBrick.class, 1, getResources() + .getQuantityString(R.plurals.second_plural, Utils.convertDoubleToPluralInteger(BrickValues.DURATION))); checkIfBrickShowsText(SetTransparencyBrick.class, R.string.brick_set_transparency); checkIfBrickShowsText(SetTransparencyBrick.class, R.string.percent_symbol); - checkIfBrickShowsText(SetTransparencyBrick.class, "50"); + checkIfBrickShowsText(SetTransparencyBrick.class, "50 "); checkIfBrickShowsText(ChangeTransparencyByNBrick.class, R.string.brick_change_ghost_effect); - checkIfBrickShowsText(ChangeTransparencyByNBrick.class, "25"); + checkIfBrickShowsText(ChangeTransparencyByNBrick.class, "25 "); checkIfBrickShowsText(SetBrightnessBrick.class, R.string.brick_set_brightness); - checkIfBrickShowsText(SetBrightnessBrick.class, "50"); + checkIfBrickShowsText(SetBrightnessBrick.class, "50 "); checkIfBrickShowsText(SetBrightnessBrick.class, R.string.percent_symbol); checkIfBrickShowsText(ChangeBrightnessByNBrick.class, R.string.brick_change_brightness); - checkIfBrickShowsText(ChangeBrightnessByNBrick.class, "25"); + checkIfBrickShowsText(ChangeBrightnessByNBrick.class, "25 "); checkIfBrickShowsText(SetColorBrick.class, R.string.brick_set_color); - checkIfBrickShowsText(SetColorBrick.class, "0"); + checkIfBrickShowsText(SetColorBrick.class, "0 "); checkIfBrickShowsText(ChangeColorByNBrick.class, R.string.brick_change_color); - checkIfBrickShowsText(ChangeColorByNBrick.class, "25"); + checkIfBrickShowsText(ChangeColorByNBrick.class, "25 "); checkIfBrickShowsText(ClearGraphicEffectBrick.class, R.string.brick_clear_graphic_effect); @@ -615,9 +616,8 @@ public void testPenBricksDefaultValues() { checkIfBrickShowsText(PenUpBrick.class, R.string.brick_pen_up); - checkIfBrickAtPositionShowsText(SetPenSizeBrick.class, 0, R.string.brick_pen_size); - - checkIfBrickShowsText(SetPenSizeBrick.class, "3.15"); + checkIfBrickShowsText(SetPenSizeBrick.class, R.string.brick_pen_size); + checkIfBrickShowsEditTextWithText(SetPenSizeBrick.class, R.id.brick_set_pen_size_edit_text, "3.15 "); checkIfBrickShowsText(ClearBackgroundBrick.class, R.string.brick_clear_background); } @@ -629,14 +629,14 @@ public void testDataBricksDefaultValues() { checkIfBrickShowsText(SetVariableBrick.class, R.string.brick_set_variable); checkIfBrickShowsText(SetVariableBrick.class, R.string.to_label); - checkIfBrickShowsText(SetVariableBrick.class, "1"); + checkIfBrickShowsText(SetVariableBrick.class, "1 "); checkIfBrickShowsSpinnerWithEditTextOverlayWithText(SetVariableBrick.class, R.id.set_variable_spinner, R.string.brick_variable_spinner_create_new_variable); checkIfBrickShowsText(ChangeVariableBrick.class, R.string.brick_change_variable); checkIfBrickShowsText(ChangeVariableBrick.class, R.string.by_label); - checkIfBrickShowsText(ChangeVariableBrick.class, "1"); + checkIfBrickShowsText(ChangeVariableBrick.class, "1 "); checkIfBrickShowsSpinnerWithEditTextOverlayWithText(ChangeVariableBrick.class, R.id.change_variable_spinner, R.string.brick_variable_spinner_create_new_variable); @@ -645,8 +645,8 @@ public void testDataBricksDefaultValues() { checkIfBrickShowsText(ShowTextBrick.class, R.string.brick_show_variable_position); checkIfBrickShowsText(ShowTextBrick.class, R.string.x_label); checkIfBrickShowsText(ShowTextBrick.class, R.string.y_label); - checkIfBrickShowsText(ShowTextBrick.class, "100"); - checkIfBrickShowsText(ShowTextBrick.class, "200"); + checkIfBrickShowsText(ShowTextBrick.class, "100 "); + checkIfBrickShowsText(ShowTextBrick.class, "200 "); checkIfBrickShowsSpinnerWithEditTextOverlayWithText(ShowTextBrick.class, R.id.show_variable_spinner, R.string.brick_variable_spinner_create_new_variable); @@ -658,14 +658,14 @@ public void testDataBricksDefaultValues() { checkIfBrickShowsText(AddItemToUserListBrick.class, R.string.brick_add_item_to_userlist_add); checkIfBrickShowsText(AddItemToUserListBrick.class, R.string.brick_add_item_to_userlist); - checkIfBrickShowsText(AddItemToUserListBrick.class, "1"); + checkIfBrickShowsText(AddItemToUserListBrick.class, "1 "); checkIfBrickShowsSpinnerWithEditTextOverlayWithText(AddItemToUserListBrick.class, R.id.add_item_to_userlist_spinner, R.string.brick_variable_spinner_create_new_variable); checkIfBrickShowsText(DeleteItemOfUserListBrick.class, R.string.brick_delete_item_from_userlist_delete); checkIfBrickShowsText(DeleteItemOfUserListBrick.class, R.string.brick_delete_item_from_userlist); - checkIfBrickShowsText(DeleteItemOfUserListBrick.class, "1"); + checkIfBrickShowsText(DeleteItemOfUserListBrick.class, "1 "); checkIfBrickShowsSpinnerWithEditTextOverlayWithText(DeleteItemOfUserListBrick.class, R.id.delete_item_of_userlist_spinner, R.string.brick_variable_spinner_create_new_variable); @@ -673,8 +673,8 @@ public void testDataBricksDefaultValues() { checkIfBrickShowsText(InsertItemIntoUserListBrick.class, R.string.brick_insert_item_into_userlist_insert_into); checkIfBrickShowsText(InsertItemIntoUserListBrick.class, R.string.brick_insert_item_into_userlist_into_list); checkIfBrickShowsText(InsertItemIntoUserListBrick.class, R.string.brick_insert_item_into_userlist_at_position); - checkIfBrickShowsEditTextWithText(InsertItemIntoUserListBrick.class, R.id.brick_insert_item_into_userlist_value_edit_text, "1"); - checkIfBrickShowsEditTextWithText(InsertItemIntoUserListBrick.class, R.id.brick_insert_item_into_userlist_at_index_edit_text, "1"); + checkIfBrickShowsEditTextWithText(InsertItemIntoUserListBrick.class, R.id.brick_insert_item_into_userlist_value_edit_text, "1 "); + checkIfBrickShowsEditTextWithText(InsertItemIntoUserListBrick.class, R.id.brick_insert_item_into_userlist_at_index_edit_text, "1 "); checkIfBrickShowsSpinnerWithEditTextOverlayWithText(InsertItemIntoUserListBrick.class, R.id.insert_item_into_userlist_spinner, R.string.brick_variable_spinner_create_new_variable); @@ -682,8 +682,8 @@ public void testDataBricksDefaultValues() { checkIfBrickShowsText(ReplaceItemInUserListBrick.class, R.string.brick_replace_item_in_userlist_replace_in_list); checkIfBrickShowsText(ReplaceItemInUserListBrick.class, R.string.brick_replace_item_in_userlist_item_at_index); checkIfBrickShowsText(ReplaceItemInUserListBrick.class, R.string.brick_replace_item_in_userlist_with_value); - checkIfBrickShowsEditTextWithText(ReplaceItemInUserListBrick.class, R.id.brick_replace_item_in_userlist_at_index_edit_text, "1"); - checkIfBrickShowsEditTextWithText(ReplaceItemInUserListBrick.class, R.id.brick_replace_item_in_userlist_value_edit_text, "1"); + checkIfBrickShowsEditTextWithText(ReplaceItemInUserListBrick.class, R.id.brick_replace_item_in_userlist_at_index_edit_text, "1 "); + checkIfBrickShowsEditTextWithText(ReplaceItemInUserListBrick.class, R.id.brick_replace_item_in_userlist_value_edit_text, "1 "); checkIfBrickShowsSpinnerWithEditTextOverlayWithText(ReplaceItemInUserListBrick.class, R.id.replace_item_in_userlist_spinner, R.string.brick_variable_spinner_create_new_variable); @@ -697,7 +697,7 @@ public void testLegoNXTBricksDefaultValues() { checkIfBrickShowsText(LegoNxtMotorTurnAngleBrick.class, R.string.nxt_brick_motor_turn_angle); checkIfBrickShowsText(LegoNxtMotorTurnAngleBrick.class, R.string.nxt_motor_move_by); checkIfBrickShowsText(LegoNxtMotorTurnAngleBrick.class, R.string.degree_symbol); - checkIfBrickShowsText(LegoNxtMotorTurnAngleBrick.class, "180"); + checkIfBrickShowsText(LegoNxtMotorTurnAngleBrick.class, "180 "); checkIfBrickShowsSpinnerWithEditTextOverlayWithText(LegoNxtMotorTurnAngleBrick.class, R.id.lego_motor_turn_angle_spinner, R.string.nxt_motor_a); @@ -711,7 +711,7 @@ public void testLegoNXTBricksDefaultValues() { checkIfBrickShowsText(LegoNxtMotorMoveBrick.class, R.string.nxt_motor_speed_to); checkIfBrickShowsText(LegoNxtMotorMoveBrick.class, R.string.percent_symbol); checkIfBrickShowsText(LegoNxtMotorMoveBrick.class, R.string.nxt_motor_speed); - checkIfBrickShowsText(LegoNxtMotorMoveBrick.class, "100"); + checkIfBrickShowsText(LegoNxtMotorMoveBrick.class, "100 "); checkIfBrickShowsSpinnerWithEditTextOverlayWithText(LegoNxtMotorMoveBrick.class, R.id.lego_motor_action_spinner, R.string.nxt_motor_a); @@ -722,8 +722,8 @@ public void testLegoNXTBricksDefaultValues() { Utils.convertDoubleToPluralInteger(BrickValues.LEGO_DURATION))); checkIfBrickShowsText(LegoNxtPlayToneBrick.class, R.string.nxt_tone_frequency); checkIfBrickShowsText(LegoNxtPlayToneBrick.class, R.string.nxt_tone_hundred_hz); - checkIfBrickShowsText(LegoNxtPlayToneBrick.class, "1.0"); - checkIfBrickShowsText(LegoNxtPlayToneBrick.class, "2"); + checkIfBrickShowsText(LegoNxtPlayToneBrick.class, "1 "); + checkIfBrickShowsText(LegoNxtPlayToneBrick.class, "2 "); } @Category({Cat.AppUi.class, Level.Smoke.class, Cat.Gadgets.class}) @@ -734,7 +734,7 @@ public void testLegoEV3BricksDefaultValues() { checkIfBrickShowsText(LegoEv3MotorTurnAngleBrick.class, R.string.ev3_brick_motor_turn_angle); checkIfBrickShowsText(LegoEv3MotorTurnAngleBrick.class, R.string.ev3_motor_move_by); checkIfBrickShowsText(LegoEv3MotorTurnAngleBrick.class, R.string.degree_symbol); - checkIfBrickShowsText(LegoEv3MotorTurnAngleBrick.class, "180"); + checkIfBrickShowsText(LegoEv3MotorTurnAngleBrick.class, "180 "); checkIfBrickShowsSpinnerWithEditTextOverlayWithText(LegoEv3MotorTurnAngleBrick.class, R.id.lego_ev3_motor_turn_angle_spinner, R.string.ev3_motor_a); @@ -743,7 +743,7 @@ public void testLegoEV3BricksDefaultValues() { checkIfBrickShowsText(LegoEv3MotorMoveBrick.class, R.string.nxt_motor_speed_to); checkIfBrickShowsText(LegoEv3MotorMoveBrick.class, R.string.percent_symbol); checkIfBrickShowsText(LegoEv3MotorMoveBrick.class, R.string.nxt_motor_speed); - checkIfBrickShowsText(LegoEv3MotorMoveBrick.class, "100"); + checkIfBrickShowsText(LegoEv3MotorMoveBrick.class, "100 "); checkIfBrickShowsSpinnerWithEditTextOverlayWithText(LegoEv3MotorMoveBrick.class, R.id.brick_ev3_motor_move_spinner, R.string.ev3_motor_a); @@ -761,9 +761,9 @@ public void testLegoEV3BricksDefaultValues() { checkIfBrickShowsText(LegoEv3PlayToneBrick.class, R.string.nxt_tone_hundred_hz); checkIfBrickShowsText(LegoEv3PlayToneBrick.class, R.string.ev3_tone_volume); checkIfBrickShowsText(LegoEv3PlayToneBrick.class, R.string.ev3_tone_percent); - checkIfBrickShowsText(LegoEv3PlayToneBrick.class, "1.0"); - checkIfBrickShowsText(LegoEv3PlayToneBrick.class, "2"); - checkIfBrickShowsText(LegoEv3PlayToneBrick.class, "100"); + checkIfBrickShowsText(LegoEv3PlayToneBrick.class, "1 "); + checkIfBrickShowsText(LegoEv3PlayToneBrick.class, "2 "); + checkIfBrickShowsText(LegoEv3PlayToneBrick.class, "100 "); checkIfBrickShowsText(LegoEv3SetLedBrick.class, R.string.ev3_set_led_status); checkIfBrickShowsSpinnerWithEditTextOverlayWithText(LegoEv3SetLedBrick.class, @@ -786,8 +786,8 @@ public void testDroneBricksDefaultValues() { checkIfBrickShowsText(DroneMoveUpBrick.class, R.string.brick_drone_with_); checkIfBrickShowsText(DroneMoveUpBrick.class, UiTestUtils.getResourcesString(R.string.percent_symbol)); checkIfBrickShowsText(DroneMoveUpBrick.class, UiTestUtils.getResourcesString(R.string.formula_editor_function_power)); - checkIfBrickShowsText(DroneMoveUpBrick.class, "1"); - checkIfBrickShowsText(DroneMoveUpBrick.class, "20"); + checkIfBrickShowsText(DroneMoveUpBrick.class, "1 "); + checkIfBrickShowsText(DroneMoveUpBrick.class, "20 "); checkIfBrickShowsText(DroneMoveDownBrick.class, R.string.brick_drone_move_down); checkIfBrickShowsText(DroneMoveDownBrick.class, getResources().getQuantityString(R.plurals.second_plural, @@ -796,8 +796,8 @@ public void testDroneBricksDefaultValues() { checkIfBrickShowsText(DroneMoveDownBrick.class, UiTestUtils.getResourcesString(R.string.percent_symbol)); checkIfBrickShowsText(DroneMoveDownBrick.class, UiTestUtils.getResourcesString(R.string .formula_editor_function_power)); - checkIfBrickShowsText(DroneMoveDownBrick.class, "1"); - checkIfBrickShowsText(DroneMoveDownBrick.class, "20"); + checkIfBrickShowsText(DroneMoveDownBrick.class, "1 "); + checkIfBrickShowsText(DroneMoveDownBrick.class, "20 "); checkIfBrickShowsText(DroneMoveLeftBrick.class, R.string.brick_drone_move_left); checkIfBrickShowsText(DroneMoveLeftBrick.class, getResources().getQuantityString(R.plurals.second_plural, @@ -806,8 +806,8 @@ public void testDroneBricksDefaultValues() { checkIfBrickShowsText(DroneMoveLeftBrick.class, UiTestUtils.getResourcesString(R.string.percent_symbol)); checkIfBrickShowsText(DroneMoveLeftBrick.class, UiTestUtils.getResourcesString(R.string .formula_editor_function_power)); - checkIfBrickShowsText(DroneMoveLeftBrick.class, "1"); - checkIfBrickShowsText(DroneMoveLeftBrick.class, "20"); + checkIfBrickShowsText(DroneMoveLeftBrick.class, "1 "); + checkIfBrickShowsText(DroneMoveLeftBrick.class, "20 "); checkIfBrickShowsText(DroneMoveRightBrick.class, R.string.brick_drone_move_right); checkIfBrickShowsText(DroneMoveRightBrick.class, getResources().getQuantityString(R.plurals.second_plural, @@ -816,8 +816,8 @@ public void testDroneBricksDefaultValues() { checkIfBrickShowsText(DroneMoveRightBrick.class, UiTestUtils.getResourcesString(R.string.percent_symbol)); checkIfBrickShowsText(DroneMoveRightBrick.class, UiTestUtils.getResourcesString(R.string .formula_editor_function_power)); - checkIfBrickShowsText(DroneMoveRightBrick.class, "1"); - checkIfBrickShowsText(DroneMoveRightBrick.class, "20"); + checkIfBrickShowsText(DroneMoveRightBrick.class, "1 "); + checkIfBrickShowsText(DroneMoveRightBrick.class, "20 "); checkIfBrickShowsText(DroneMoveForwardBrick.class, R.string.brick_drone_move_forward); checkIfBrickShowsText(DroneMoveForwardBrick.class, getResources().getQuantityString(R.plurals.second_plural, @@ -826,8 +826,8 @@ public void testDroneBricksDefaultValues() { checkIfBrickShowsText(DroneMoveForwardBrick.class, UiTestUtils.getResourcesString(R.string.percent_symbol)); checkIfBrickShowsText(DroneMoveForwardBrick.class, UiTestUtils.getResourcesString(R.string .formula_editor_function_power)); - checkIfBrickShowsText(DroneMoveForwardBrick.class, "1"); - checkIfBrickShowsText(DroneMoveForwardBrick.class, "20"); + checkIfBrickShowsText(DroneMoveForwardBrick.class, "1 "); + checkIfBrickShowsText(DroneMoveForwardBrick.class, "20 "); checkIfBrickShowsText(DroneMoveBackwardBrick.class, R.string.brick_drone_move_backward); checkIfBrickShowsText(DroneMoveBackwardBrick.class, getResources().getQuantityString(R.plurals.second_plural, @@ -836,8 +836,8 @@ public void testDroneBricksDefaultValues() { checkIfBrickShowsText(DroneMoveBackwardBrick.class, UiTestUtils.getResourcesString(R.string.percent_symbol)); checkIfBrickShowsText(DroneMoveBackwardBrick.class, UiTestUtils.getResourcesString(R.string .formula_editor_function_power)); - checkIfBrickShowsText(DroneMoveBackwardBrick.class, "1"); - checkIfBrickShowsText(DroneMoveBackwardBrick.class, "20"); + checkIfBrickShowsText(DroneMoveBackwardBrick.class, "1 "); + checkIfBrickShowsText(DroneMoveBackwardBrick.class, "20 "); checkIfBrickShowsText(DroneTurnLeftBrick.class, R.string.brick_drone_turn_left); checkIfBrickShowsText(DroneTurnLeftBrick.class, getResources().getQuantityString(R.plurals.second_plural, @@ -845,8 +845,8 @@ public void testDroneBricksDefaultValues() { checkIfBrickShowsText(DroneTurnLeftBrick.class, R.string.brick_drone_with_); checkIfBrickShowsText(DroneTurnLeftBrick.class, UiTestUtils.getResourcesString(R.string.percent_symbol)); checkIfBrickShowsText(DroneTurnLeftBrick.class, UiTestUtils.getResourcesString(R.string.formula_editor_function_power)); - checkIfBrickShowsText(DroneTurnLeftBrick.class, "1"); - checkIfBrickShowsText(DroneTurnLeftBrick.class, "20"); + checkIfBrickShowsText(DroneTurnLeftBrick.class, "1 "); + checkIfBrickShowsText(DroneTurnLeftBrick.class, "20 "); checkIfBrickShowsText(DroneTurnRightBrick.class, R.string.brick_drone_turn_right); checkIfBrickShowsText(DroneTurnRightBrick.class, getResources().getQuantityString(R.plurals.second_plural, @@ -855,8 +855,8 @@ public void testDroneBricksDefaultValues() { checkIfBrickShowsText(DroneTurnRightBrick.class, UiTestUtils.getResourcesString(R.string.percent_symbol)); checkIfBrickShowsText(DroneTurnRightBrick.class, UiTestUtils.getResourcesString(R.string .formula_editor_function_power)); - checkIfBrickShowsText(DroneTurnRightBrick.class, "1"); - checkIfBrickShowsText(DroneTurnRightBrick.class, "20"); + checkIfBrickShowsText(DroneTurnRightBrick.class, "1 "); + checkIfBrickShowsText(DroneTurnRightBrick.class, "20 "); checkIfBrickShowsText(DroneSwitchCameraBrick.class, R.string.brick_drone_switch_camera); } @@ -874,7 +874,7 @@ public void testPhiroBricksDefaultValues() { checkIfBrickShowsText(PhiroMotorMoveForwardBrick.class, R.string.brick_phiro_motor_forward_action); checkIfBrickShowsText(PhiroMotorMoveForwardBrick.class, R.string.phiro_motor_speed); checkIfBrickShowsText(PhiroMotorMoveForwardBrick.class, R.string.percent_symbol); - checkIfBrickShowsText(PhiroMotorMoveForwardBrick.class, "100"); + checkIfBrickShowsText(PhiroMotorMoveForwardBrick.class, "100 "); checkIfBrickShowsSpinnerWithEditTextOverlayWithText(PhiroMotorMoveForwardBrick.class, R.id.brick_phiro_motor_forward_action_spinner, R.string.phiro_motor_left); @@ -882,7 +882,7 @@ public void testPhiroBricksDefaultValues() { checkIfBrickShowsText(PhiroMotorMoveBackwardBrick.class, R.string.brick_phiro_motor_backward_action); checkIfBrickShowsText(PhiroMotorMoveBackwardBrick.class, R.string.phiro_motor_speed); checkIfBrickShowsText(PhiroMotorMoveBackwardBrick.class, R.string.percent_symbol); - checkIfBrickShowsText(PhiroMotorMoveBackwardBrick.class, "100"); + checkIfBrickShowsText(PhiroMotorMoveBackwardBrick.class, "100 "); checkIfBrickShowsSpinnerWithEditTextOverlayWithText(PhiroMotorMoveBackwardBrick.class, R.id.brick_phiro_motor_backward_action_spinner, R.string.phiro_motor_left); @@ -896,7 +896,7 @@ public void testPhiroBricksDefaultValues() { checkIfBrickShowsText(PhiroPlayToneBrick.class, R.string.phiro_tone_duration); checkIfBrickShowsText(PhiroPlayToneBrick.class, getResources().getQuantityString(R.plurals.second_plural, Utils.convertDoubleToPluralInteger(BrickValues.PHIRO_DURATION))); - checkIfBrickShowsText(PhiroPlayToneBrick.class, "1"); + checkIfBrickShowsText(PhiroPlayToneBrick.class, "1 "); checkIfBrickShowsSpinnerWithEditTextOverlayWithText(PhiroPlayToneBrick.class, R.id.brick_phiro_select_tone_spinner, R.string.phiro_tone_do); @@ -905,7 +905,7 @@ public void testPhiroBricksDefaultValues() { checkIfBrickShowsText(PhiroRGBLightBrick.class, R.string.phiro_rgb_led_red); checkIfBrickShowsText(PhiroRGBLightBrick.class, R.string.phiro_rgb_led_green); checkIfBrickShowsText(PhiroRGBLightBrick.class, R.string.phiro_rgb_led_blue); - checkIfBrickShowsText(PhiroRGBLightBrick.class, "0"); + checkIfBrickShowsText(PhiroRGBLightBrick.class, "0 "); checkIfBrickShowsSpinnerWithEditTextOverlayWithText(PhiroRGBLightBrick.class, R.id.brick_phiro_rgb_light_spinner, R.string.phiro_motor_both); @@ -919,42 +919,54 @@ public void testPhiroBricksDefaultValues() { //Set variable brick (Sensor: front-left) checkIfBrickAtPositionShowsText(SetVariableBrick.class, 0, R.string.brick_set_variable); checkIfBrickAtPositionShowsText(SetVariableBrick.class, 0, R.string.to_label); - checkIfBrickAtPositionShowsText(SetVariableBrick.class, 0, R.string.formula_editor_phiro_sensor_front_left); + checkIfBrickAtPositionShowsEditTextWithText(SetVariableBrick.class, 0, + R.id.brick_set_variable_edit_text, + getResourcesString(R.string.formula_editor_phiro_sensor_front_left) + " "); checkIfBrickAtPositionShowsSpinnerWithText(SetVariableBrick.class, 0, R.id .set_variable_spinner, R.string.brick_variable_spinner_create_new_variable); //Set variable brick (Sensor: front-right) checkIfBrickAtPositionShowsText(SetVariableBrick.class, 1, R.string.brick_set_variable); checkIfBrickAtPositionShowsText(SetVariableBrick.class, 1, R.string.to_label); - checkIfBrickAtPositionShowsText(SetVariableBrick.class, 1, R.string.formula_editor_phiro_sensor_front_right); + checkIfBrickAtPositionShowsEditTextWithText(SetVariableBrick.class, 1, + R.id.brick_set_variable_edit_text, + getResourcesString(R.string.formula_editor_phiro_sensor_front_right) + " "); checkIfBrickAtPositionShowsSpinnerWithText(SetVariableBrick.class, 1, R.id .set_variable_spinner, R.string.brick_variable_spinner_create_new_variable); //Set variable brick (Sensor: side-left) checkIfBrickAtPositionShowsText(SetVariableBrick.class, 2, R.string.brick_set_variable); checkIfBrickAtPositionShowsText(SetVariableBrick.class, 2, R.string.to_label); - checkIfBrickAtPositionShowsText(SetVariableBrick.class, 2, R.string.formula_editor_phiro_sensor_side_left); + checkIfBrickAtPositionShowsEditTextWithText(SetVariableBrick.class, 2, + R.id.brick_set_variable_edit_text, + getResourcesString(R.string.formula_editor_phiro_sensor_side_left) + " "); checkIfBrickAtPositionShowsSpinnerWithText(SetVariableBrick.class, 2, R.id .set_variable_spinner, R.string.brick_variable_spinner_create_new_variable); //Set variable brick (Sensor: side-right) checkIfBrickAtPositionShowsText(SetVariableBrick.class, 3, R.string.brick_set_variable); checkIfBrickAtPositionShowsText(SetVariableBrick.class, 3, R.string.to_label); - checkIfBrickAtPositionShowsText(SetVariableBrick.class, 3, R.string.formula_editor_phiro_sensor_side_right); + checkIfBrickAtPositionShowsEditTextWithText(SetVariableBrick.class, 3, + R.id.brick_set_variable_edit_text, + getResourcesString(R.string.formula_editor_phiro_sensor_side_right) + " "); checkIfBrickAtPositionShowsSpinnerWithText(SetVariableBrick.class, 3, R.id .set_variable_spinner, R.string.brick_variable_spinner_create_new_variable); //Set variable brick (Sensor: bottom-left) checkIfBrickAtPositionShowsText(SetVariableBrick.class, 4, R.string.brick_set_variable); checkIfBrickAtPositionShowsText(SetVariableBrick.class, 4, R.string.to_label); - checkIfBrickAtPositionShowsText(SetVariableBrick.class, 4, R.string.formula_editor_phiro_sensor_bottom_left); + checkIfBrickAtPositionShowsEditTextWithText(SetVariableBrick.class, 4, + R.id.brick_set_variable_edit_text, + getResourcesString(R.string.formula_editor_phiro_sensor_bottom_left) + " "); checkIfBrickAtPositionShowsSpinnerWithText(SetVariableBrick.class, 4, R.id .set_variable_spinner, R.string.brick_variable_spinner_create_new_variable); //Set variable brick (Sensor: bottom-right) checkIfBrickAtPositionShowsText(SetVariableBrick.class, 5, R.string.brick_set_variable); checkIfBrickAtPositionShowsText(SetVariableBrick.class, 5, R.string.to_label); - checkIfBrickAtPositionShowsText(SetVariableBrick.class, 5, R.string.formula_editor_phiro_sensor_bottom_right); + checkIfBrickAtPositionShowsEditTextWithText(SetVariableBrick.class, 5, + R.id.brick_set_variable_edit_text, + getResourcesString(R.string.formula_editor_phiro_sensor_bottom_right) + " "); checkIfBrickAtPositionShowsSpinnerWithText(SetVariableBrick.class, 5, R.id .set_variable_spinner, R.string.brick_variable_spinner_create_new_variable); } @@ -966,13 +978,13 @@ public void testArduinoBricksDefaultValues() { checkIfBrickShowsText(ArduinoSendDigitalValueBrick.class, R.string.brick_arduino_select_digital_value); checkIfBrickShowsText(ArduinoSendDigitalValueBrick.class, R.string.brick_arduino_set_pin_value_to); - checkIfBrickShowsText(ArduinoSendDigitalValueBrick.class, "1"); - checkIfBrickShowsText(ArduinoSendDigitalValueBrick.class, "13"); + checkIfBrickShowsText(ArduinoSendDigitalValueBrick.class, "1 "); + checkIfBrickShowsText(ArduinoSendDigitalValueBrick.class, "13 "); checkIfBrickShowsText(ArduinoSendPWMValueBrick.class, R.string.brick_arduino_select_analog_value); checkIfBrickShowsText(ArduinoSendPWMValueBrick.class, R.string.brick_arduino_set_pin_value_to); - checkIfBrickShowsText(ArduinoSendPWMValueBrick.class, "3"); - checkIfBrickShowsText(ArduinoSendPWMValueBrick.class, "255"); + checkIfBrickShowsText(ArduinoSendPWMValueBrick.class, "3 "); + checkIfBrickShowsText(ArduinoSendPWMValueBrick.class, "255 "); } @Category({Cat.AppUi.class, Level.Smoke.class, Cat.Gadgets.class}) @@ -989,20 +1001,20 @@ public void testRaspiBricksDefaultValues() { checkIfBrickShowsText(RaspiIfLogicBeginBrick.class, R.string.brick_raspi_if_begin); checkIfBrickShowsText(RaspiIfLogicBeginBrick.class, R.string.brick_raspi_if_begin_second_part); - checkIfBrickShowsText(RaspiIfLogicBeginBrick.class, "3"); + checkIfBrickShowsText(RaspiIfLogicBeginBrick.class, "3 "); checkIfBrickShowsText(RaspiSendDigitalValueBrick.class, R.string.brick_raspi_select_digital_value); checkIfBrickShowsText(RaspiSendDigitalValueBrick.class, R.string.brick_raspi_set_pin_value_to); - checkIfBrickShowsText(RaspiSendDigitalValueBrick.class, "3"); - checkIfBrickShowsText(RaspiSendDigitalValueBrick.class, "1"); + checkIfBrickShowsText(RaspiSendDigitalValueBrick.class, "3 "); + checkIfBrickShowsText(RaspiSendDigitalValueBrick.class, "1 "); checkIfBrickShowsText(RaspiPwmBrick.class, R.string.brick_raspi_set_pwm); checkIfBrickShowsText(RaspiPwmBrick.class, R.string.brick_arduino_set_pin_value_to); checkIfBrickShowsText(RaspiPwmBrick.class, R.string.percent_symbol); checkIfBrickShowsText(RaspiPwmBrick.class, R.string.hertz_symbol); - checkIfBrickShowsText(RaspiPwmBrick.class, "3"); - checkIfBrickShowsText(RaspiPwmBrick.class, "50"); - checkIfBrickShowsText(RaspiPwmBrick.class, "100"); + checkIfBrickShowsText(RaspiPwmBrick.class, "3 "); + checkIfBrickShowsText(RaspiPwmBrick.class, "50 "); + checkIfBrickShowsText(RaspiPwmBrick.class, "100 "); } //Educational Test on how to deal with old/hacked spinner default values @@ -1026,13 +1038,14 @@ public void testControlBricksDefaultValues() { //wait - edit text "1" - second checkIfBrickShowsText(WaitBrick.class, R.string.brick_wait); - checkIfBrickShowsEditTextWithText(WaitBrick.class, R.id.brick_wait_edit_text, "1"); + checkIfBrickShowsEditTextWithText(WaitBrick.class, R.id.brick_wait_edit_text, "1 "); checkIfBrickShowsText(WaitBrick.class, getResources().getQuantityString(R.plurals.second_plural, Utils.convertDoubleToPluralInteger(1))); //note - edit text "add comment here..." checkIfBrickShowsText(NoteBrick.class, R.string.brick_note); - checkIfBrickShowsEditTextWithText(NoteBrick.class, R.id.brick_note_edit_text, R.string.brick_note_default_value); + checkIfBrickShowsEditTextWithText(NoteBrick.class, R.id.brick_note_edit_text, + "'" + getResourcesString(R.string.brick_note_default_value) + "' "); //forever checkIfBrickShowsText(ForeverBrick.class, R.string.brick_forever); @@ -1041,23 +1054,23 @@ public void testControlBricksDefaultValues() { int ifBrickPosition = 0; checkIfBrickAtPositionShowsText(IfLogicBeginBrick.class, ifBrickPosition, R.string.brick_if_begin); checkIfBrickAtPositionShowsEditTextWithText(IfLogicBeginBrick.class, ifBrickPosition, - R.id.brick_if_begin_edit_text, "1 < 2"); + R.id.brick_if_begin_edit_text, "1 < 2 "); checkIfBrickAtPositionShowsText(IfLogicBeginBrick.class, ifBrickPosition, R.string.brick_if_begin_second_part); checkIfBrickAtPositionShowsText(IfLogicBeginBrick.class, ifBrickPosition, R.string.brick_if_else); // if - edit text "1 st 2" - is true then checkIfBrickShowsText(IfThenLogicBeginBrick.class, R.string.brick_if_begin); - checkIfBrickShowsEditTextWithText(IfThenLogicBeginBrick.class, R.id.brick_if_begin_edit_text, "1 < 2"); + checkIfBrickShowsEditTextWithText(IfThenLogicBeginBrick.class, R.id.brick_if_begin_edit_text, "1 < 2 "); checkIfBrickShowsText(IfThenLogicBeginBrick.class, R.string.brick_if_begin_second_part); //wait until - edit text "1 st 2" - is true checkIfBrickShowsText(WaitUntilBrick.class, R.string.brick_wait_until); - checkIfBrickShowsEditTextWithText(WaitUntilBrick.class, R.id.brick_wait_until_edit_text, "1 < 2"); + checkIfBrickShowsEditTextWithText(WaitUntilBrick.class, R.id.brick_wait_until_edit_text, "1 < 2 "); checkIfBrickShowsText(WaitUntilBrick.class, R.string.brick_wait_until_second_part); //repeat - edit text "10" - times checkIfBrickShowsText(RepeatBrick.class, R.string.brick_repeat); - checkIfBrickShowsEditTextWithText(RepeatBrick.class, R.id.brick_repeat_edit_text, "10"); + checkIfBrickShowsEditTextWithText(RepeatBrick.class, R.id.brick_repeat_edit_text, "10 "); checkIfBrickShowsText(RepeatBrick.class, getResources().getQuantityString(R.plurals.time_plural, Utils.convertDoubleToPluralInteger(10))); @@ -1117,6 +1130,13 @@ private void checkIfBrickAtPositionShowsText(Class brickClass, int position, int .check(matches(isDisplayed())); } + private void checkIfBrickAtPositionShowsText(Class brickClass, int position, String text) { + onData(instanceOf(brickClass)).inAdapterView(BrickPrototypeListMatchers.isBrickPrototypeView()) + .atPosition(position) + .onChildView(withText(text)) + .check(matches(isDisplayed())); + } + //Checks for Edit Text values private void checkIfBrickShowsEditTextWithText(Class brickClass, int editTextResourceId, String text) { onData(instanceOf(brickClass)).inAdapterView(BrickPrototypeListMatchers.isBrickPrototypeView()) diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/IfThenBrickTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/IfThenBrickTest.java index 754d70bc1a3..00f7f43203f 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/IfThenBrickTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/IfThenBrickTest.java @@ -27,10 +27,12 @@ import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.R; +import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Script; import org.catrobat.catroid.content.bricks.IfThenLogicBeginBrick; import org.catrobat.catroid.content.bricks.IfThenLogicEndBrick; import org.catrobat.catroid.content.bricks.SetXBrick; +import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.ui.SpriteActivity; import org.catrobat.catroid.uiespresso.content.brick.utils.BrickTestUtils; import org.catrobat.catroid.uiespresso.testsuites.Cat; @@ -136,7 +138,7 @@ public void createProject() { Script script = BrickTestUtils.createProjectAndGetStartScript("IfThenBrickTest"); script.addBrick(ifThenLogicBeginBrick); - script.addBrick(new SetXBrick()); + script.addBrick(new SetXBrick(new Formula(BrickValues.X_POSITION))); script.addBrick(ifThenLogicEndBrick); ProjectManager.getInstance().checkNestingBrickReferences(true, false); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/IfThenElseBrickTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/IfThenElseBrickTest.java index 8cab357017a..1017900a2db 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/IfThenElseBrickTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/IfThenElseBrickTest.java @@ -27,12 +27,14 @@ import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.R; +import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Script; import org.catrobat.catroid.content.bricks.IfLogicBeginBrick; import org.catrobat.catroid.content.bricks.IfLogicElseBrick; import org.catrobat.catroid.content.bricks.IfLogicEndBrick; import org.catrobat.catroid.content.bricks.SetXBrick; import org.catrobat.catroid.content.bricks.SetYBrick; +import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.ui.SpriteActivity; import org.catrobat.catroid.uiespresso.content.brick.utils.BrickTestUtils; import org.catrobat.catroid.uiespresso.testsuites.Cat; @@ -130,11 +132,11 @@ public void createProject() { ifThenElseBeginBrickPosition = 1; IfLogicBeginBrick ifBrick = new IfLogicBeginBrick(condition); IfLogicElseBrick elseBrick = new IfLogicElseBrick(ifBrick); - IfLogicEndBrick endBrick = new IfLogicEndBrick(elseBrick, ifBrick); + IfLogicEndBrick endBrick = new IfLogicEndBrick(ifBrick, elseBrick); Script script = BrickTestUtils.createProjectAndGetStartScript("IfThenElseBrickTest"); script.addBrick(ifBrick); - script.addBrick(new SetXBrick()); + script.addBrick(new SetXBrick(new Formula(BrickValues.X_POSITION))); script.addBrick(elseBrick); script.addBrick(new SetYBrick()); script.addBrick(endBrick); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/PenBricksTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/PenBricksTest.java index 5591dbe24b3..c145df4ef84 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/PenBricksTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/PenBricksTest.java @@ -173,7 +173,7 @@ private void createProject() { sprite1.addScript(startScript); startScript.addBrick(new PenDownBrick()); startScript.addBrick(new PenUpBrick()); - startScript.addBrick(new SetPenSizeBrick()); + startScript.addBrick(new SetPenSizeBrick(5)); startScript.addBrick(new SetPenColorBrick(255, 0, 0)); project.getDefaultScene().addSprite(sprite1); ProjectManager.getInstance().setProject(project); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/PhiroIfBrickTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/PhiroIfBrickTest.java index f393c236cf0..e1156e28c5c 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/PhiroIfBrickTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/PhiroIfBrickTest.java @@ -106,7 +106,7 @@ public void testPhiroIfBrickDelete() { private void createProject() { ifBrick = new PhiroIfLogicBeginBrick(); IfLogicElseBrick ifLogicElseBrick = new IfLogicElseBrick(ifBrick); - IfLogicEndBrick ifLogicEndBrick = new IfLogicEndBrick(ifLogicElseBrick, ifBrick); + IfLogicEndBrick ifLogicEndBrick = new IfLogicEndBrick(ifBrick, ifLogicElseBrick); ifBrick.setIfElseBrick(ifLogicElseBrick); ifBrick.setIfEndBrick(ifLogicEndBrick); Script script = BrickTestUtils.createProjectAndGetStartScript("PhiroIfBrickTest"); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/PhiroMoveMotorBackwardBrickTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/PhiroMoveMotorBackwardBrickTest.java index 158293f67fb..309c68307b9 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/PhiroMoveMotorBackwardBrickTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/PhiroMoveMotorBackwardBrickTest.java @@ -100,7 +100,7 @@ public void testPhiroMoveMotorBackwardBrick() { onView(allOf(withId(R.id.single_seekbar_title), withText(R.string.phiro_motor_speed))) .check(matches(isDisplayed())); - onView(allOf(withId(R.id.single_seekbar_value), withText(Integer.toString(setSpeed) + " "))) + onView(allOf(withId(R.id.single_seekbar_value), withText(Integer.toString(setSpeed)))) .check(matches(isDisplayed())) .perform(click()); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/PhiroMoveMotorForwardBrickTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/PhiroMoveMotorForwardBrickTest.java index 08a6b58a0db..7986851a07b 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/PhiroMoveMotorForwardBrickTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/PhiroMoveMotorForwardBrickTest.java @@ -98,7 +98,7 @@ public void testPhiroMoveMotorForwardBrick() { onView(allOf(withId(R.id.single_seekbar_title), withText(R.string.phiro_motor_speed))) .check(matches(isDisplayed())); - onView(allOf(withId(R.id.single_seekbar_value), withText(Integer.toString(setSpeed) + " "))) + onView(allOf(withId(R.id.single_seekbar_value), withText(Integer.toString(setSpeed)))) .check(matches(isDisplayed())) .perform(click()); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/PhiroSeekBarColorBrickTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/PhiroSeekBarColorBrickTest.java index 1152c2a4ebd..fcc81a9d47f 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/PhiroSeekBarColorBrickTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/PhiroSeekBarColorBrickTest.java @@ -64,9 +64,6 @@ public class PhiroSeekBarColorBrickTest { private static final Integer MAX_COLOR_VALUE = 255; private static final Integer INIT_COLOR_VALUE = 128; - private static Integer whenBrickPosition = 0; - private static Integer phiroRGBLightBrickPosition = 1; - @Rule public BaseActivityInstrumentationRule baseActivityTestRule = new BaseActivityInstrumentationRule<>(SpriteActivity.class, SpriteActivity.EXTRA_FRAGMENT_POSITION, SpriteActivity.FRAGMENT_SCRIPTS); @@ -111,7 +108,9 @@ public void setUp() throws Exception { @Test public void testSeekBar() { + Integer whenBrickPosition = 0; onBrickAtPosition(whenBrickPosition).checkShowsText(R.string.brick_when_started); + Integer phiroRGBLightBrickPosition = 1; onBrickAtPosition(phiroRGBLightBrickPosition).checkShowsText(R.string.brick_phiro_rgb_led_action); onBrickAtPosition(phiroRGBLightBrickPosition).onFormulaTextField(brickActionEditTextId) @@ -121,11 +120,11 @@ public void testSeekBar() { onView(withId(colorRgbSeekbarId)) .perform(swipeLeftSlow()); onView(withId(rgbValueId)) - .check(matches(withText(MIN_COLOR_VALUE.toString() + " "))); + .check(matches(withText(MIN_COLOR_VALUE.toString()))); onView(withId(colorRgbSeekbarId)) .perform(swipeRightSlow()); onView(withId(rgbValueId)) - .check(matches(withText(MAX_COLOR_VALUE.toString() + " "))); + .check(matches(withText(MAX_COLOR_VALUE.toString()))); onView(withId(rgbValueId)) .perform(click()); onView(withId(R.id.formula_editor_keyboard_ok)) diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/PointInDirectionBrickTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/PointInDirectionBrickTest.java index 8397c437ffc..df56f0eb95c 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/PointInDirectionBrickTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/PointInDirectionBrickTest.java @@ -52,7 +52,7 @@ public class PointInDirectionBrickTest { public void setUp() throws Exception { brickPosition = 1; BrickTestUtils.createProjectAndGetStartScript("PointInDirectionBrick") - .addBrick(new PointInDirectionBrick(PointInDirectionBrick.Direction.RIGHT)); + .addBrick(new PointInDirectionBrick(90)); baseActivityTestRule.launchActivity(); } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/SayBubbleBrickTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/SayBubbleBrickTest.java index 237dcd41d6e..c4fdaa5bb5f 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/SayBubbleBrickTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/SayBubbleBrickTest.java @@ -63,7 +63,7 @@ public void sayBubbleBrickTest() { onBrickAtPosition(brickPosition).checkShowsText(R.string.brick_say_bubble); - onBrickAtPosition(brickPosition).onFormulaTextField(R.id.brick_say_bubble_edit_text) + onBrickAtPosition(brickPosition).onFormulaTextField(R.id.brick_bubble_edit_text) .checkShowsText(sayString); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/SayForBubbleBrickTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/SayForBubbleBrickTest.java index caf61bc44e7..6fddb9b98b7 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/SayForBubbleBrickTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/SayForBubbleBrickTest.java @@ -75,13 +75,13 @@ public void sayForBubbleBrickTest() { onBrickAtPosition(brickPositionOneSecond) .checkShowsText(R.string.brick_say_bubble); - onBrickAtPosition(brickPositionOneSecond).onFormulaTextField(R.id.brick_say_for_bubble_edit_text_text) + onBrickAtPosition(brickPositionOneSecond).onFormulaTextField(R.id.brick_for_bubble_edit_text_text) .checkShowsText(sayString); onBrickAtPosition(brickPositionOneSecond) .checkShowsText(R.string.brick_think_say_for_text); - onBrickAtPosition(brickPositionOneSecond).onFormulaTextField(R.id.brick_say_for_bubble_edit_text_duration) + onBrickAtPosition(brickPositionOneSecond).onFormulaTextField(R.id.brick_for_bubble_edit_text_duration) .check(matches(withText("1 "))); String second = UiTestUtils.getResources().getQuantityString(R.plurals.second_plural, (int) durationOne); @@ -89,7 +89,7 @@ public void sayForBubbleBrickTest() { onBrickAtPosition(brickPositionOneSecond) .checkShowsText(second); - onBrickAtPosition(brickPositionTwoSeconds).onFormulaTextField(R.id.brick_say_for_bubble_edit_text_duration) + onBrickAtPosition(brickPositionTwoSeconds).onFormulaTextField(R.id.brick_for_bubble_edit_text_duration) .check(matches(withText("2 "))); String seconds = UiTestUtils.getResources().getQuantityString(R.plurals.second_plural, (int) durationTwo); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/SetXBrickTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/SetXBrickTest.java index e37add915a9..a68d86a609a 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/SetXBrickTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/SetXBrickTest.java @@ -26,7 +26,9 @@ import android.support.test.runner.AndroidJUnit4; import org.catrobat.catroid.R; +import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.bricks.SetXBrick; +import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.ui.SpriteActivity; import org.catrobat.catroid.uiespresso.content.brick.utils.BrickTestUtils; import org.catrobat.catroid.uiespresso.testsuites.Cat; @@ -51,7 +53,8 @@ public class SetXBrickTest { @Before public void setUp() throws Exception { brickPosition = 1; - BrickTestUtils.createProjectAndGetStartScript("setXBrickTest1").addBrick(new SetXBrick()); + BrickTestUtils.createProjectAndGetStartScript("setXBrickTest1") + .addBrick(new SetXBrick(new Formula(BrickValues.X_POSITION))); baseActivityTestRule.launchActivity(); } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/ThinkBubbleBrickTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/ThinkBubbleBrickTest.java index 59221955daa..d8e466b6e19 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/ThinkBubbleBrickTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/ThinkBubbleBrickTest.java @@ -64,7 +64,7 @@ public void thinkBubbleBrickTest() { onBrickAtPosition(brickPosition).checkShowsText(R.string.brick_think_bubble); - onBrickAtPosition(brickPosition).onFormulaTextField(R.id.brick_think_bubble_edit_text) + onBrickAtPosition(brickPosition).onFormulaTextField(R.id.brick_bubble_edit_text) .checkShowsText(thinkString); } } diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/ThinkForBubbleBrickTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/ThinkForBubbleBrickTest.java index 16258737686..ad6fc880fcc 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/ThinkForBubbleBrickTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/ThinkForBubbleBrickTest.java @@ -75,13 +75,13 @@ public void thinkForBubbleBrickTest() { onBrickAtPosition(brickPositionOneSecond) .checkShowsText(R.string.brick_think_bubble); - onBrickAtPosition(brickPositionOneSecond).onFormulaTextField(R.id.brick_think_for_bubble_edit_text_text) + onBrickAtPosition(brickPositionOneSecond).onFormulaTextField(R.id.brick_for_bubble_edit_text_text) .checkShowsText(thinkString); onBrickAtPosition(brickPositionOneSecond) .checkShowsText(R.string.brick_think_say_for_text); - onBrickAtPosition(brickPositionOneSecond).onFormulaTextField(R.id.brick_think_for_bubble_edit_text_duration) + onBrickAtPosition(brickPositionOneSecond).onFormulaTextField(R.id.brick_for_bubble_edit_text_duration) .check(matches(withText("1 "))); String second = UiTestUtils.getResources().getQuantityString(R.plurals.second_plural, (int) durationOne); @@ -89,7 +89,7 @@ public void thinkForBubbleBrickTest() { onBrickAtPosition(brickPositionOneSecond) .checkShowsText(second); - onBrickAtPosition(brickPositionTwoSeconds).onFormulaTextField(R.id.brick_think_for_bubble_edit_text_duration) + onBrickAtPosition(brickPositionTwoSeconds).onFormulaTextField(R.id.brick_for_bubble_edit_text_duration) .check(matches(withText("2 "))); String seconds = UiTestUtils.getResources().getQuantityString(R.plurals.second_plural, (int) durationTwo); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/rtl/ArabicSentenceStructureInBricksNameTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/rtl/ArabicSentenceStructureInBricksNameTest.java deleted file mode 100644 index 7b2086fa862..00000000000 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/rtl/ArabicSentenceStructureInBricksNameTest.java +++ /dev/null @@ -1,623 +0,0 @@ -/* - * Catroid: An on-device visual programming system for Android devices - * Copyright (C) 2010-2018 The Catrobat Team - * () - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * An additional term exception under section 7 of the GNU Affero - * General Public License, version 3, is available at - * http://developer.catrobat.org/license_additional_term - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package org.catrobat.catroid.uiespresso.content.brick.rtl; - -import android.content.SharedPreferences; -import android.preference.PreferenceManager; -import android.support.test.InstrumentationRegistry; -import android.support.test.runner.AndroidJUnit4; - -import org.catrobat.catroid.ProjectManager; -import org.catrobat.catroid.R; -import org.catrobat.catroid.content.Project; -import org.catrobat.catroid.content.Script; -import org.catrobat.catroid.content.Sprite; -import org.catrobat.catroid.content.StartScript; -import org.catrobat.catroid.content.bricks.DroneMoveBackwardBrick; -import org.catrobat.catroid.content.bricks.DroneMoveDownBrick; -import org.catrobat.catroid.content.bricks.DroneMoveForwardBrick; -import org.catrobat.catroid.content.bricks.DroneMoveLeftBrick; -import org.catrobat.catroid.content.bricks.DroneMoveRightBrick; -import org.catrobat.catroid.content.bricks.DroneMoveUpBrick; -import org.catrobat.catroid.content.bricks.DroneTurnLeftBrick; -import org.catrobat.catroid.content.bricks.DroneTurnRightBrick; -import org.catrobat.catroid.content.bricks.IfLogicBeginBrick; -import org.catrobat.catroid.content.bricks.JumpingSumoMoveBackwardBrick; -import org.catrobat.catroid.content.bricks.JumpingSumoMoveForwardBrick; -import org.catrobat.catroid.content.bricks.JumpingSumoRotateLeftBrick; -import org.catrobat.catroid.content.bricks.JumpingSumoRotateRightBrick; -import org.catrobat.catroid.content.bricks.LegoEv3MotorMoveBrick; -import org.catrobat.catroid.content.bricks.LegoNxtMotorMoveBrick; -import org.catrobat.catroid.content.bricks.RepeatUntilBrick; -import org.catrobat.catroid.content.bricks.SetNfcTagBrick; -import org.catrobat.catroid.content.bricks.WaitUntilBrick; -import org.catrobat.catroid.content.bricks.WhenConditionBrick; -import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.formulaeditor.FormulaElement; -import org.catrobat.catroid.formulaeditor.Sensors; -import org.catrobat.catroid.ui.SpriteActivity; -import org.catrobat.catroid.ui.settingsfragments.SettingsFragment; -import org.catrobat.catroid.uiespresso.testsuites.Cat; -import org.catrobat.catroid.uiespresso.testsuites.Level; -import org.catrobat.catroid.uiespresso.ui.activity.rtl.RtlUiTestUtils; -import org.catrobat.catroid.uiespresso.util.matchers.ScriptListMatchers; -import org.catrobat.catroid.uiespresso.util.rules.BaseActivityInstrumentationRule; -import org.junit.After; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Locale; - -import static android.support.test.InstrumentationRegistry.getTargetContext; -import static android.support.test.espresso.Espresso.onData; -import static android.support.test.espresso.Espresso.onView; -import static android.support.test.espresso.assertion.PositionAssertions.isBelow; -import static android.support.test.espresso.assertion.PositionAssertions.isLeftOf; -import static android.support.test.espresso.assertion.ViewAssertions.matches; -import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; -import static android.support.test.espresso.matcher.ViewMatchers.withId; - -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertTrue; - -import static org.catrobat.catroid.ui.settingsfragments.SettingsFragment.PARROT_JUMPING_SUMO_SCREEN_KEY; -import static org.catrobat.catroid.ui.settingsfragments.SettingsFragment.SETTINGS_MINDSTORMS_EV3_BRICKS_ENABLED; -import static org.catrobat.catroid.ui.settingsfragments.SettingsFragment.SETTINGS_MINDSTORMS_NXT_BRICKS_ENABLED; -import static org.catrobat.catroid.ui.settingsfragments.SettingsFragment.SETTINGS_SHOW_ARDUINO_BRICKS; -import static org.catrobat.catroid.ui.settingsfragments.SettingsFragment.SETTINGS_SHOW_NFC_BRICKS; -import static org.catrobat.catroid.ui.settingsfragments.SettingsFragment.SETTINGS_SHOW_PARROT_AR_DRONE_BRICKS; -import static org.catrobat.catroid.ui.settingsfragments.SettingsFragment.SETTINGS_SHOW_PHIRO_BRICKS; -import static org.catrobat.catroid.ui.settingsfragments.SettingsFragment.SETTINGS_SHOW_RASPI_BRICKS; -import static org.catrobat.catroid.uiespresso.util.UiTestUtils.getResourcesString; -import static org.catrobat.catroid.uiespresso.util.matchers.rtl.RtlViewDirection.isViewRtl; -import static org.hamcrest.Matchers.instanceOf; - -@RunWith(AndroidJUnit4.class) -public class ArabicSentenceStructureInBricksNameTest { - @Rule - public BaseActivityInstrumentationRule baseActivityTestRule = new - BaseActivityInstrumentationRule<>(SpriteActivity.class, SpriteActivity.EXTRA_FRAGMENT_POSITION, SpriteActivity.FRAGMENT_SCRIPTS); - private Locale arLocale = new Locale("ar"); - private List allPeripheralCategories = new ArrayList<>(Arrays.asList(SETTINGS_MINDSTORMS_NXT_BRICKS_ENABLED, - SETTINGS_MINDSTORMS_EV3_BRICKS_ENABLED, SETTINGS_SHOW_PARROT_AR_DRONE_BRICKS, SETTINGS_SHOW_PHIRO_BRICKS, - SETTINGS_SHOW_ARDUINO_BRICKS, SETTINGS_SHOW_RASPI_BRICKS, SETTINGS_SHOW_NFC_BRICKS, PARROT_JUMPING_SUMO_SCREEN_KEY)); - private List enabledByThisTestPeripheralCategories = new ArrayList<>(); - - @Before - public void setUp() throws Exception { - createProject("ArabicSentenceInBricksName"); - SettingsFragment.setLanguageSharedPreference(getTargetContext(), "ar"); - baseActivityTestRule.launchActivity(); - - SharedPreferences sharedPreferences = PreferenceManager - .getDefaultSharedPreferences(InstrumentationRegistry.getTargetContext()); - - for (String category : allPeripheralCategories) { - boolean categoryEnabled = sharedPreferences.getBoolean(category, false); - if (!categoryEnabled) { - sharedPreferences.edit().putBoolean(category, true).commit(); - enabledByThisTestPeripheralCategories.add(category); - } - } - } - - @Category({Cat.AppUi.class, Level.Smoke.class}) - @Test - public void testElementsOrderInAdaptedBricksForArabicLanguage() throws Exception { - assertEquals(Locale.getDefault().getDisplayLanguage(), arLocale.getDisplayLanguage()); - assertTrue(RtlUiTestUtils.checkTextDirectionIsRtl(Locale.getDefault().getDisplayName())); - - // if is true then ... else ... - checkIfBrickISRtl(IfLogicBeginBrick.class, R.id.brick_if_begin_layout); - onView(withId(R.id.if_label)) - .check(matches(isDisplayed())); - - onView(withId(R.id.if_label_second_part)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.if_label))); - - onView(withId(R.id.brick_if_begin_edit_text)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.if_label_second_part))); - - // repeat until is true - checkIfBrickISRtl(RepeatUntilBrick.class, R.id.brick_repeat_until_layout); - onView(withId(R.id.brick_repeat_until_label)) - .check(matches(isDisplayed())); - - onView(withId(R.id.wait_until_label_second_part)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id - .brick_repeat_until_label))); - - onView(withId(R.id.brick_repeat_until_edit_text)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.wait_until_label_second_part))); - - // Set Ev3 motor to speed - checkIfBrickISRtl(LegoEv3MotorMoveBrick.class, R.id.brick_ev3_motor_move_layout); - onView(withId(R.id.brick_ev3_motor_move_label)) - .check(matches(isDisplayed())); - - onView(withId(R.id.brick_ev3_motor_move_spinner)) - .check(matches(isDisplayed())) - .check(isBelow(withId(R.id.brick_ev3_motor_move_label))); - - onView(withId(R.id.ev3_motor_move_speed_edit_text)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_ev3_motor_move_speed_text))); - - onView(withId(R.id.brick_ev3_motor_move_percent)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.ev3_motor_move_speed_edit_text))); - - // Set NXT motor to speed - checkIfBrickISRtl(LegoNxtMotorMoveBrick.class, R.id.brick_nxt_motor_action_layout); - onView(withId(R.id.lego_motor_action_label)) - .check(matches(isDisplayed())); - - onView(withId(R.id.lego_motor_action_spinner)) - .check(matches(isDisplayed())) - .check(isBelow(withId(R.id.lego_motor_action_label))); - - onView(withId(R.id.motor_action_speed_edit_text)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.lego_motor_action_speed_text))); - - onView(withId(R.id.lego_motor_action_percent)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.motor_action_speed_edit_text))); - - // Move Jumping Sumo backward - checkIfBrickISRtl(JumpingSumoMoveBackwardBrick.class, R.id.brick_jumping_sumo_move_backward_layout); - onView(withId(R.id.brick_jumping_sumo_move_backward_label)) - .check(matches(isDisplayed())); - - onView(withId(R.id.brick_jumping_sumo_move_backward_edit_text_second)) - .check(matches(isDisplayed())) - .check(isBelow(withId(R.id.brick_jumping_sumo_move_backward_label))); - - onView(withId(R.id.brick_jumping_sumo_move_forward_text_second)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_jumping_sumo_move_backward_edit_text_second))); - - onView(withId(R.id.brick_jumping_sumo_move_backward_text_with)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_jumping_sumo_move_forward_text_second))); - - onView(withId(R.id.brick_jumping_sumo_move_backward_set_power)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_jumping_sumo_move_backward_text_with))); - - onView(withId(R.id.brick_jumping_sumo_move_backward_edit_text_power)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_jumping_sumo_move_backward_set_power))); - - onView(withId(R.id.brick_jumping_sumo_move_backward_set_percent)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_jumping_sumo_move_backward_edit_text_power))); - - // Move Jumping Sumo forward - checkIfBrickISRtl(JumpingSumoMoveForwardBrick.class, R.id.brick_jumping_sumo_move_forward_layout); - onView(withId(R.id.brick_jumping_sumo_move_forward_label)) - .check(matches(isDisplayed())); - - onView(withId(R.id.brick_jumping_sumo_move_forward_edit_text_second)) - .check(matches(isDisplayed())) - .check(isBelow(withId(R.id.brick_jumping_sumo_move_forward_label))); - - onView(withId(R.id.brick_jumping_sumo_move_forward_text_second)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_jumping_sumo_move_forward_edit_text_second))); - - onView(withId(R.id.brick_jumping_sumo_move_forward_text_with)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_jumping_sumo_move_forward_text_second))); - - onView(withId(R.id.brick_jumping_sumo_move_forward_set_power)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_jumping_sumo_move_forward_text_with))); - - onView(withId(R.id.brick_jumping_sumo_move_forward_edit_text_power)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_jumping_sumo_move_forward_set_power))); - - onView(withId(R.id.brick_jumping_sumo_move_forward_set_percent)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_jumping_sumo_move_forward_edit_text_power))); - - // JumpingSumoRotateLeftBrick - checkIfBrickISRtl(JumpingSumoRotateLeftBrick.class, R.id.brick_jumping_sumo_rotate_left_layout); - onView(withId(R.id.brick_jumping_sumo_rotate_left_label)) - .check(matches(isDisplayed())); - - onView(withId(R.id.brick_jumping_sumo_change_left_variable_edit_text)) - .check(matches(isDisplayed())) - .check(isBelow(withId(R.id.brick_jumping_sumo_rotate_left_label))); - - onView(withId(R.id.brick_jumping_sumo_rotate_left_text)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_jumping_sumo_change_left_variable_edit_text))); - - // JumpingSumoRotateRightBrick - checkIfBrickISRtl(JumpingSumoRotateRightBrick.class, R.id.brick_jumping_sumo_rotate_right_layout); - onView(withId(R.id.brick_jumping_sumo_rotate_right_label)) - .check(matches(isDisplayed())); - - onView(withId(R.id.brick_jumping_sumo_change_right_variable_edit_text)) - .check(matches(isDisplayed())) - .check(isBelow(withId(R.id.brick_jumping_sumo_rotate_right_label))); - - onView(withId(R.id.brick_jumping_sumo_rotate_right_text)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_jumping_sumo_change_right_variable_edit_text))); - - // Wait for next NFC tag to WRITE - checkIfBrickISRtl(SetNfcTagBrick.class, R.id.brick_set_nfc_tag_layout); - onView(withId(R.id.brick_set_nfc_tag_label)) - .check(matches(isDisplayed())); - - onView(withId(R.id.brick_set_nfc_tag_edit_text)) - .check(matches(isDisplayed())) - .check(isBelow(withId(R.id.brick_set_nfc_tag_label))); - - onView(withId(R.id.brick_set_nfc_tag_ndef_record_textview)) - .check(matches(isDisplayed())) - .check(isBelow(withId(R.id.brick_set_nfc_tag_edit_text))); - - onView(withId(R.id.brick_set_nfc_tag_ndef_record_spinner)) - .check(matches(isDisplayed())) - .check(isBelow(withId(R.id.brick_set_nfc_tag_ndef_record_textview))); - - // wait until is true - checkIfBrickISRtl(WaitUntilBrick.class, R.id.brick_wait_until_layout); - onView(withId(R.id.wait_until_label)) - .check(matches(isDisplayed())); - - onView(withId(R.id.wait_until_label_second_part)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.wait_until_label))); - - onView(withId(R.id.brick_wait_until_edit_text)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.wait_until_label_second_part))); - - // When becomes true - checkIfBrickISRtl(WhenConditionBrick.class, R.id.brick_when_condition_layout); - onView(withId(R.id.when_conditon_label)) - .check(matches(isDisplayed())); - - onView(withId(R.id.when_condition_label_second_part)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.when_conditon_label))); - - onView(withId(R.id.brick_when_condition_edit_text)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.when_condition_label_second_part))); - - // DroneMoveDownBrick - checkIfBrickISRtl(DroneMoveDownBrick.class, R.id.brick_drone_move_down_layout); - onView(withId(R.id.brick_drone_move_down_label)) - .check(matches(isDisplayed())); - - onView(withId(R.id.brick_drone_move_down_edit_text_second)) - .check(matches(isDisplayed())) - .check(isBelow(withId(R.id.brick_drone_move_down_label))); - - onView(withId(R.id.brick_drone_move_down_text_second)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_down_edit_text_second))); - - onView(withId(R.id.brick_drone_move_down_text_with)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_down_text_second))); - - onView(withId(R.id.brick_drone_move_down_power)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_down_text_with))); - - onView(withId(R.id.brick_drone_move_down_edit_text_power)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_down_power))); - - onView(withId(R.id.brick_drone_move_down_percent)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_down_edit_text_power))); - - // DroneMoveUpBrick - checkIfBrickISRtl(DroneMoveUpBrick.class, R.id.brick_drone_move_up_layout); - onView(withId(R.id.brick_drone_move_up_label)) - .check(matches(isDisplayed())); - - onView(withId(R.id.brick_drone_move_up_edit_text_second)) - .check(matches(isDisplayed())) - .check(isBelow(withId(R.id.brick_drone_move_up_label))); - - onView(withId(R.id.brick_drone_move_up_text_second)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_up_edit_text_second))); - - onView(withId(R.id.brick_drone_move_up_text_with)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_up_text_second))); - - onView(withId(R.id.brick_drone_move_up_power)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_up_text_with))); - - onView(withId(R.id.brick_drone_move_up_edit_text_power)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_up_power))); - - onView(withId(R.id.brick_drone_move_up_percent)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_up_edit_text_power))); - - //DroneMoveLeftBrick - checkIfBrickISRtl(DroneMoveLeftBrick.class, R.id.brick_drone_move_left_layout); - onView(withId(R.id.brick_drone_move_left_label)) - .check(matches(isDisplayed())); - - onView(withId(R.id.brick_drone_move_left_edit_text_second)) - .check(matches(isDisplayed())) - .check(isBelow(withId(R.id.brick_drone_move_left_label))); - - onView(withId(R.id.brick_drone_move_left_text_second)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_left_edit_text_second))); - - onView(withId(R.id.brick_drone_move_left_text_with)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_left_text_second))); - - onView(withId(R.id.brick_drone_move_left_power)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_left_text_with))); - - onView(withId(R.id.brick_drone_move_left_edit_text_power)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_left_power))); - - onView(withId(R.id.brick_drone_move_left_percent)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_left_edit_text_power))); - - //DroneMoveRightBrick - checkIfBrickISRtl(DroneMoveRightBrick.class, R.id.brick_drone_move_right_layout); - onView(withId(R.id.brick_drone_move_right_label)) - .check(matches(isDisplayed())); - - onView(withId(R.id.brick_drone_move_right_edit_text_second)) - .check(matches(isDisplayed())) - .check(isBelow(withId(R.id.brick_drone_move_right_label))); - - onView(withId(R.id.brick_drone_move_right_text_second)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_right_edit_text_second))); - - onView(withId(R.id.brick_drone_move_right_text_with)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_right_text_second))); - - onView(withId(R.id.brick_drone_move_right_power)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_right_text_with))); - - onView(withId(R.id.brick_drone_move_right_edit_text_power)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_right_power))); - - onView(withId(R.id.brick_drone_move_right_percent)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_right_edit_text_power))); - - //DroneMoveBackwardBrick - checkIfBrickISRtl(DroneMoveBackwardBrick.class, R.id.brick_drone_move_backward_layout); - onView(withId(R.id.brick_drone_move_backward_label)) - .check(matches(isDisplayed())); - - onView(withId(R.id.brick_drone_move_backward_edit_text_second)) - .check(matches(isDisplayed())) - .check(isBelow(withId(R.id.brick_drone_move_backward_label))); - - onView(withId(R.id.brick_drone_move_backward_text_second)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_backward_edit_text_second))); - - onView(withId(R.id.brick_drone_move_backward_text_with)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_backward_text_second))); - - onView(withId(R.id.brick_drone_move_backward_power)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_backward_text_with))); - - onView(withId(R.id.brick_drone_move_backward_edit_text_power)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_backward_power))); - - onView(withId(R.id.brick_drone_move_backward_percent)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_backward_edit_text_power))); - - //DroneMoveForwardBrick - checkIfBrickISRtl(DroneMoveForwardBrick.class, R.id.brick_drone_move_forward_layout); - onView(withId(R.id.brick_drone_move_forward_label)) - .check(matches(isDisplayed())); - - onView(withId(R.id.brick_drone_move_forward_edit_text_second)) - .check(matches(isDisplayed())) - .check(isBelow(withId(R.id.brick_drone_move_forward_label))); - - onView(withId(R.id.brick_drone_move_forward_text_second)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_forward_edit_text_second))); - - onView(withId(R.id.brick_drone_move_forward_text_with)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_forward_text_second))); - - onView(withId(R.id.brick_drone_move_forward_power)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_forward_text_with))); - - onView(withId(R.id.brick_drone_move_forward_edit_text_power)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_forward_power))); - - onView(withId(R.id.brick_drone_move_forward_percent)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_move_forward_edit_text_power))); - - //DroneTurnLeftBrick - checkIfBrickISRtl(DroneTurnLeftBrick.class, R.id.brick_drone_turn_left_layout); - onView(withId(R.id.brick_drone_turn_left_label)) - .check(matches(isDisplayed())); - - onView(withId(R.id.brick_drone_turn_left_edit_text_second)) - .check(matches(isDisplayed())) - .check(isBelow(withId(R.id.brick_drone_turn_left_label))); - - onView(withId(R.id.brick_drone_turn_left_text_second)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_turn_left_edit_text_second))); - - onView(withId(R.id.brick_drone_turn_left_text_with)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_turn_left_text_second))); - - onView(withId(R.id.brick_drone_turn_left_power)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_turn_left_text_with))); - - onView(withId(R.id.brick_drone_turn_left_edit_text_power)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_turn_left_power))); - - onView(withId(R.id.brick_drone_turn_left_percent)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_turn_left_edit_text_power))); - - //DroneTurnRightBrick - checkIfBrickISRtl(DroneTurnRightBrick.class, R.id.brick_drone_turn_right_layout); - onView(withId(R.id.brick_drone_turn_right_label)) - .check(matches(isDisplayed())); - - onView(withId(R.id.brick_drone_turn_right_edit_text_second)) - .check(matches(isDisplayed())) - .check(isBelow(withId(R.id.brick_drone_turn_right_label))); - - onView(withId(R.id.brick_drone_turn_right_text_second)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_turn_right_edit_text_second))); - - onView(withId(R.id.brick_drone_turn_right_text_with)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_turn_right_text_second))); - - onView(withId(R.id.brick_drone_turn_right_power)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_turn_right_text_with))); - - onView(withId(R.id.brick_drone_turn_right_edit_text_power)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_turn_right_power))); - - onView(withId(R.id.brick_drone_turn_right_percent)) - .check(matches(isDisplayed())) - .check(isLeftOf(withId(R.id.brick_drone_turn_right_edit_text_power))); - } - - @After - public void tearDown() { - SharedPreferences sharedPreferences = PreferenceManager - .getDefaultSharedPreferences(InstrumentationRegistry.getTargetContext()); - for (String category : enabledByThisTestPeripheralCategories) { - sharedPreferences.edit().putBoolean(category, false).commit(); - } - enabledByThisTestPeripheralCategories.clear(); - resetToDefaultLanguage(); - } - - public static void resetToDefaultLanguage() { - SettingsFragment.removeLanguageSharedPreference(getTargetContext()); - } - - private void createProject(String projectName) { - String nameSpriteTwo = "testSpriteTwo"; - - Project project = new Project(InstrumentationRegistry.getTargetContext(), projectName); - Sprite spriteOne = new Sprite("testSpriteOne"); - project.getDefaultScene().addSprite(spriteOne); - - Sprite spriteTwo = new Sprite(nameSpriteTwo); - Script script = new StartScript(); - - script.addBrick(new IfLogicBeginBrick()); - script.addBrick(new RepeatUntilBrick(5)); - - script.addBrick(new LegoEv3MotorMoveBrick(LegoEv3MotorMoveBrick.Motor.MOTOR_B, 5)); - script.addBrick(new LegoNxtMotorMoveBrick(LegoNxtMotorMoveBrick.Motor.MOTOR_B_C, 10)); - - script.addBrick(new JumpingSumoMoveBackwardBrick(2000, 20)); - script.addBrick(new JumpingSumoMoveForwardBrick(2000, 20)); - - script.addBrick(new JumpingSumoRotateLeftBrick(90)); - script.addBrick(new JumpingSumoRotateRightBrick(90)); - - script.addBrick(new SetNfcTagBrick(getResourcesString(R.string.brick_set_nfc_tag_default_value))); - script.addBrick(new WaitUntilBrick(new Formula(1))); - Formula condition = new Formula(new FormulaElement(FormulaElement.ElementType.SENSOR, - Sensors.COLLIDES_WITH_FINGER.name(), null)); - - script.addBrick(new WhenConditionBrick(condition)); - - script.addBrick(new DroneMoveDownBrick(2000, 20)); - script.addBrick(new DroneMoveUpBrick(2000, 20)); - script.addBrick(new DroneMoveLeftBrick(2000, 20)); - script.addBrick(new DroneMoveRightBrick(2000, 20)); - script.addBrick(new DroneMoveBackwardBrick(2000, 20)); - script.addBrick(new DroneMoveForwardBrick(2000, 20)); - script.addBrick(new DroneTurnLeftBrick(2000, 20)); - script.addBrick(new DroneTurnRightBrick(2000, 20)); - - spriteTwo.addScript(script); - project.getDefaultScene().addSprite(spriteTwo); - ProjectManager.getInstance().setProject(project); - ProjectManager.getInstance().setCurrentSprite(spriteTwo); - } - - private void checkIfBrickISRtl(Class brickClass, int bricksId) { - onData(instanceOf(brickClass)).inAdapterView(ScriptListMatchers.isScriptListView()) - .onChildView(withId(bricksId)) - .check(matches(isDisplayed())) - .check(matches(isViewRtl())); - } -} diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/formulaeditor/FormulaEditorEditTextTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/formulaeditor/FormulaEditorEditTextTest.java index 7e62dedf714..0d379b6e6a1 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/formulaeditor/FormulaEditorEditTextTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/formulaeditor/FormulaEditorEditTextTest.java @@ -32,6 +32,7 @@ import org.catrobat.catroid.uiespresso.content.brick.utils.BrickTestUtils; import org.catrobat.catroid.uiespresso.testsuites.Cat; import org.catrobat.catroid.uiespresso.testsuites.Level; +import org.catrobat.catroid.uiespresso.util.actions.CustomActions; import org.catrobat.catroid.uiespresso.util.rules.BaseActivityInstrumentationRule; import org.junit.Before; import org.junit.Rule; @@ -46,6 +47,7 @@ import static android.support.test.espresso.action.ViewActions.longClick; import static android.support.test.espresso.assertion.ViewAssertions.matches; import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; +import static android.support.test.espresso.matcher.ViewMatchers.isRoot; import static android.support.test.espresso.matcher.ViewMatchers.withId; import static android.support.test.espresso.matcher.ViewMatchers.withText; @@ -132,7 +134,6 @@ public void testFunctionDeletion() { @Category({Cat.CatrobatLanguage.class, Level.Smoke.class}) @Test public void testGoBackToDiscardChanges() { - onFormulaEditor() .performEnterFormula("99.9+"); pressBack(); @@ -144,7 +145,8 @@ public void testGoBackToDiscardChanges() { onToast(withText(R.string.formula_editor_changes_discarded)) .check(matches(isDisplayed())); onBrickAtPosition(1) - .checkShowsText("0 "); + .checkShowsText("10 "); + onView(isRoot()).perform(CustomActions.wait(3000)); } @Category({Cat.CatrobatLanguage.class, Level.Smoke.class}) @@ -168,38 +170,41 @@ public void testDiscardDialogDiscardSaveYes() { .check(matches(isDisplayed())); onBrickAtPosition(1) .checkShowsText("99" + decimalMark + "9 "); + onView(isRoot()).perform(CustomActions.wait(3000)); } @Category({Cat.CatrobatLanguage.class, Level.Smoke.class}) @Test - public void testDiscardDialogDiscardSaveNo() { - onFormulaEditor() - .performEnterFormula("99.9"); + public void testFormulaIsNotValidToast1() { onFormulaEditor() .performClickOn(BACKSPACE); onFormulaEditor() - .performClickOn(BACKSPACE); - pressBack(); - onView(withText(R.string.formula_editor_discard_changes_dialog_title)) - .check(matches(isDisplayed())); - onView(withText(no)) - .perform(click()); - onToast(withText(R.string.formula_editor_changes_discarded)) + .performClickOn(OK); + onToast(withText(R.string.formula_editor_parse_fail)) .check(matches(isDisplayed())); - onBrickAtPosition(1) - .checkShowsText("0 "); + onView(isRoot()).perform(CustomActions.wait(3000)); } @Category({Cat.CatrobatLanguage.class, Level.Smoke.class}) @Test - public void testFormulaIsNotValidToast() { + public void testFormulaIsNotValidToast2() { onFormulaEditor() .performClickOn(BACKSPACE); onFormulaEditor() - .performClickOn(OK); + .performEnterFormula("1+1+"); + pressBack(); + onView(withText(R.string.formula_editor_discard_changes_dialog_title)) + .check(matches(isDisplayed())); + onView(withText(yes)) + .perform(click()); onToast(withText(R.string.formula_editor_parse_fail)) .check(matches(isDisplayed())); + onView(isRoot()).perform(CustomActions.wait(3000)); + } + @Category({Cat.CatrobatLanguage.class, Level.Smoke.class}) + @Test + public void testFormulaIsNotValidToast3() { onFormulaEditor() .performClickOn(BACKSPACE); onFormulaEditor() @@ -208,18 +213,7 @@ public void testFormulaIsNotValidToast() { .performClickOn(OK); onToast(withText(R.string.formula_editor_parse_fail)) .check(matches(isDisplayed())); - - onFormulaEditor() - .performClickOn(BACKSPACE); - onFormulaEditor() - .performEnterFormula("1+1+"); - pressBack(); - onView(withText(R.string.formula_editor_discard_changes_dialog_title)) - .check(matches(isDisplayed())); - onView(withText(yes)) - .perform(click()); - onToast(withText(R.string.formula_editor_parse_fail)) - .check(matches(isDisplayed())); + onView(isRoot()).perform(CustomActions.wait(3000)); } @Category({Cat.CatrobatLanguage.class, Level.Smoke.class}) diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/formulaeditor/FormulaEditorFragmentTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/formulaeditor/FormulaEditorFragmentTest.java index 63f501ec10f..67afb4b8dfc 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/formulaeditor/FormulaEditorFragmentTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/formulaeditor/FormulaEditorFragmentTest.java @@ -94,7 +94,7 @@ public void testSaveChanges() { @Test public void testDiscardChanges() { onView(withId(R.id.brick_set_variable_edit_text)) - .check(matches(withText("0 "))); + .check(matches(withText("1 "))); onBrickAtPosition(1).onChildView(withId(R.id.brick_set_variable_edit_text)) .perform(click()); onFormulaEditor() @@ -105,7 +105,7 @@ public void testDiscardChanges() { onView(withId(android.R.id.button2)) .perform(click()); onBrickAtPosition(1).onChildView(withId(R.id.brick_set_variable_edit_text)) - .check(matches(withText("0 "))); + .check(matches(withText("1 "))); } @Category({Cat.AppUi.class, Level.Smoke.class}) diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/activity/ProjectActivityNumberOfBricksRegressionTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/activity/ProjectActivityNumberOfBricksRegressionTest.java index eddda5237d6..ddcf048a30b 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/activity/ProjectActivityNumberOfBricksRegressionTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/activity/ProjectActivityNumberOfBricksRegressionTest.java @@ -28,6 +28,7 @@ import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.R; +import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.common.LookData; import org.catrobat.catroid.content.Project; import org.catrobat.catroid.content.Script; @@ -35,6 +36,7 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.StartScript; import org.catrobat.catroid.content.bricks.SetXBrick; +import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.ui.ProjectActivity; import org.catrobat.catroid.uiespresso.testsuites.Cat; import org.catrobat.catroid.uiespresso.testsuites.Level; @@ -94,14 +96,14 @@ private void createProject() { Sprite firstSprite = new SingleSprite("firstSprite"); Script firstScript = new StartScript(); - firstScript.addBrick(new SetXBrick()); - firstScript.addBrick(new SetXBrick()); + firstScript.addBrick(new SetXBrick(new Formula(BrickValues.X_POSITION))); + firstScript.addBrick(new SetXBrick(new Formula(BrickValues.X_POSITION))); firstSprite.addScript(firstScript); Script secondScript = new StartScript(); - secondScript.addBrick(new SetXBrick()); - secondScript.addBrick(new SetXBrick()); - secondScript.addBrick(new SetXBrick()); + secondScript.addBrick(new SetXBrick(new Formula(BrickValues.X_POSITION))); + secondScript.addBrick(new SetXBrick(new Formula(BrickValues.X_POSITION))); + secondScript.addBrick(new SetXBrick(new Formula(BrickValues.X_POSITION))); firstSprite.addScript(secondScript); LookData lookData = new LookData(); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/activity/rtl/HindiNumberAtShowDetailsAtProjectActivityTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/activity/rtl/HindiNumberAtShowDetailsAtProjectActivityTest.java index f0b7b9ecc13..38ba60f9b5c 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/activity/rtl/HindiNumberAtShowDetailsAtProjectActivityTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/activity/rtl/HindiNumberAtShowDetailsAtProjectActivityTest.java @@ -28,6 +28,7 @@ import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.R; +import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.common.LookData; import org.catrobat.catroid.content.Project; import org.catrobat.catroid.content.Script; @@ -36,6 +37,7 @@ import org.catrobat.catroid.content.StartScript; import org.catrobat.catroid.content.bricks.SetXBrick; import org.catrobat.catroid.content.bricks.SetYBrick; +import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.ui.ProjectActivity; import org.catrobat.catroid.ui.settingsfragments.SettingsFragment; import org.catrobat.catroid.uiespresso.testsuites.Cat; @@ -107,14 +109,14 @@ private void createProject() { Sprite firstSprite = new SingleSprite("firstSprite"); Script firstScript = new StartScript(); - firstScript.addBrick(new SetXBrick()); - firstScript.addBrick(new SetXBrick()); + firstScript.addBrick(new SetXBrick(new Formula(BrickValues.X_POSITION))); + firstScript.addBrick(new SetXBrick(new Formula(BrickValues.X_POSITION))); firstSprite.addScript(firstScript); Script secondScript = new StartScript(); - secondScript.addBrick(new SetXBrick()); + secondScript.addBrick(new SetXBrick(new Formula(BrickValues.X_POSITION))); secondScript.addBrick(new SetYBrick()); - secondScript.addBrick(new SetXBrick()); + secondScript.addBrick(new SetXBrick(new Formula(BrickValues.X_POSITION))); firstSprite.addScript(secondScript); LookData lookData = new LookData(); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/fragment/CopyProjectTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/fragment/CopyProjectTest.java index 1d5b678b9e5..f861fb4a4c9 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/fragment/CopyProjectTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/fragment/CopyProjectTest.java @@ -28,6 +28,7 @@ import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.R; +import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.common.LookData; import org.catrobat.catroid.common.SoundInfo; import org.catrobat.catroid.content.Project; @@ -37,6 +38,7 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.StartScript; import org.catrobat.catroid.content.bricks.SetXBrick; +import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.io.ResourceImporter; import org.catrobat.catroid.io.XstreamSerializer; import org.catrobat.catroid.ui.ProjectListActivity; @@ -107,7 +109,7 @@ private void createProject() throws IOException { Project project = new Project(InstrumentationRegistry.getTargetContext(), toBeCopiedProjectName); Sprite sprite = new SingleSprite("firstSprite"); Script script = new StartScript(); - script.addBrick(new SetXBrick()); + script.addBrick(new SetXBrick(new Formula(BrickValues.X_POSITION))); sprite.addScript(script); project.getDefaultScene().addSprite(sprite); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/fragment/DeleteProjectTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/fragment/DeleteProjectTest.java index 8be74233d20..1d95dc4a8c9 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/fragment/DeleteProjectTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/fragment/DeleteProjectTest.java @@ -27,12 +27,14 @@ import android.support.test.runner.AndroidJUnit4; import org.catrobat.catroid.R; +import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Project; import org.catrobat.catroid.content.Script; import org.catrobat.catroid.content.SingleSprite; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.StartScript; import org.catrobat.catroid.content.bricks.SetXBrick; +import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.io.XstreamSerializer; import org.catrobat.catroid.ui.ProjectListActivity; import org.catrobat.catroid.uiespresso.testsuites.Cat; @@ -136,8 +138,8 @@ private void createProject(String projectName) { Sprite sprite = new SingleSprite("firstSprite"); Script script = new StartScript(); - script.addBrick(new SetXBrick()); - script.addBrick(new SetXBrick()); + script.addBrick(new SetXBrick(new Formula(BrickValues.X_POSITION))); + script.addBrick(new SetXBrick(new Formula(BrickValues.X_POSITION))); sprite.addScript(script); project.getDefaultScene().addSprite(sprite); diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/fragment/RenameProjectTest.java b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/fragment/RenameProjectTest.java index 24a66fa0ad5..7c09e7b0103 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/fragment/RenameProjectTest.java +++ b/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/fragment/RenameProjectTest.java @@ -28,12 +28,14 @@ import android.widget.EditText; import org.catrobat.catroid.R; +import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Project; import org.catrobat.catroid.content.Script; import org.catrobat.catroid.content.SingleSprite; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.StartScript; import org.catrobat.catroid.content.bricks.SetXBrick; +import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.io.XstreamSerializer; import org.catrobat.catroid.ui.ProjectListActivity; import org.catrobat.catroid.uiespresso.testsuites.Cat; @@ -134,8 +136,8 @@ private void createProject(String projectName) { Sprite sprite = new SingleSprite("firstSprite"); Script script = new StartScript(); - script.addBrick(new SetXBrick()); - script.addBrick(new SetXBrick()); + script.addBrick(new SetXBrick(new Formula(BrickValues.X_POSITION))); + script.addBrick(new SetXBrick(new Formula(BrickValues.X_POSITION))); sprite.addScript(script); project.getDefaultScene().addSprite(sprite); diff --git a/catroid/src/main/java/org/catrobat/catroid/ProjectManager.java b/catroid/src/main/java/org/catrobat/catroid/ProjectManager.java index f25e99e756a..6ab23617203 100644 --- a/catroid/src/main/java/org/catrobat/catroid/ProjectManager.java +++ b/catroid/src/main/java/org/catrobat/catroid/ProjectManager.java @@ -165,6 +165,9 @@ public void loadProject(String projectName, Context context) throws LoadingProje project.setCatrobatLanguageVersion(0.997f); } if (project.getCatrobatLanguageVersion() == 0.997f) { + project.setCatrobatLanguageVersion(0.998f); + } + if (project.getCatrobatLanguageVersion() == 0.998f) { project.setCatrobatLanguageVersion(Constants.CURRENT_CATROBAT_LANGUAGE_VERSION); } diff --git a/catroid/src/main/java/org/catrobat/catroid/common/BrickValues.java b/catroid/src/main/java/org/catrobat/catroid/common/BrickValues.java index dfe92e44e87..8cf456e6f00 100644 --- a/catroid/src/main/java/org/catrobat/catroid/common/BrickValues.java +++ b/catroid/src/main/java/org/catrobat/catroid/common/BrickValues.java @@ -36,44 +36,44 @@ public final class BrickValues { public static final int Y_POSITION = 200; public static final int CHANGE_X_BY = 10; public static final int CHANGE_Y_BY = 10; - public static final Float MOVE_STEPS = 10f; - public static final Float TURN_DEGREES = 15f; - public static final Float POINT_IN_DIRECTION = 90f; + public static final double MOVE_STEPS = 10; + public static final double TURN_DEGREES = 15; + public static final double POINT_IN_DIRECTION = 90; public static final int GLIDE_SECONDS = 1000; public static final int GO_BACK = 1; public static final int DURATION = 1; //constants Physics public static final PhysicsObject.Type PHYSIC_TYPE = Type.DYNAMIC; - public static final Float PHYSIC_MASS = PhysicsObject.DEFAULT_MASS; - public static final Float PHYSIC_BOUNCE_FACTOR = PhysicsObject.DEFAULT_BOUNCE_FACTOR; - public static final Float PHYSIC_FRICTION = PhysicsObject.DEFAULT_FRICTION; + public static final double PHYSIC_MASS = 1.0; + public static final double PHYSIC_BOUNCE_FACTOR = 0.8; + public static final double PHYSIC_FRICTION = 0.2; public static final Vector2 PHYSIC_GRAVITY = PhysicsWorld.DEFAULT_GRAVITY; public static final Vector2 PHYSIC_VELOCITY = new Vector2(); - public static final Float PHYSIC_TURN_DEGREES = TURN_DEGREES; + public static final double PHYSIC_TURN_DEGREES = TURN_DEGREES; //constants Looks - public static final Float SET_SIZE_TO = 60f; - public static final Float CHANGE_SIZE_BY = 10f; - public static final Float SET_TRANSPARENCY = 50f; - public static final Float CHANGE_TRANSPARENCY_EFFECT = 25f; - public static final Float SET_BRIGHTNESS_TO = 50f; - public static final Float CHANGE_BRITHNESS_BY = 25f; - public static final Float SET_COLOR_TO = 0f; - public static final Float CHANGE_COLOR_BY = 25f; - public static final Float VIBRATE_SECONDS = 1f; + public static final double SET_SIZE_TO = 60; + public static final double CHANGE_SIZE_BY = 10; + public static final double SET_TRANSPARENCY = 50; + public static final double CHANGE_TRANSPARENCY_EFFECT = 25; + public static final double SET_BRIGHTNESS_TO = 50; + public static final double CHANGE_BRITHNESS_BY = 25; + public static final double SET_COLOR_TO = 0; + public static final double CHANGE_COLOR_BY = 25; + public static final double VIBRATE_SECONDS = 1; public static final int GO_TO_TOUCH_POSITION = 80; public static final int GO_TO_RANDOM_POSITION = 81; public static final int GO_TO_OTHER_SPRITE_POSITION = 82; public static final int SET_LOOK_BY_INDEX = 1; //constants Pen - public static final Float PEN_SIZE = 3.15f; + public static final double PEN_SIZE = 3.15; public static final Color PEN_COLOR = Color.BLUE; //constants Sounds - public static final Float SET_VOLUME_TO = 60f; - public static final Float CHANGE_VOLUME_BY = -10f; + public static final double SET_VOLUME_TO = 60; + public static final double CHANGE_VOLUME_BY = -10; //Constants Control public static final int WAIT = 1000; @@ -88,7 +88,7 @@ public final class BrickValues { public static final String LEGO_MOTOR = "A"; public static final int LEGO_ANGLE = 180; public static final int LEGO_SPEED = 100; - public static final float LEGO_DURATION = 1.0f; + public static final double LEGO_DURATION = 1.0; public static final int LEGO_FREQUENCY = 2; public static final int LEGO_VOLUME = 100; @@ -128,12 +128,12 @@ public final class BrickValues { public static final double CHANGE_VARIABLE = 1d; //Constants Lists - public static final double ADD_ITEM_TO_USERLIST = 1d; + public static final double ADD_ITEM_TO_USERLIST = 1; public static final int DELETE_ITEM_OF_USERLIST = 1; public static final int INSERT_ITEM_INTO_USERLIST_INDEX = 1; - public static final double INSERT_ITEM_INTO_USERLIST_VALUE = 1d; + public static final double INSERT_ITEM_INTO_USERLIST_VALUE = 1; public static final int REPLACE_ITEM_IN_USERLIST_INDEX = 1; - public static final double REPLACE_ITEM_IN_USERLIST_VALUE = 1d; + public static final double REPLACE_ITEM_IN_USERLIST_VALUE = 1; //Constants Phiro public static final int PHIRO_SPEED = 100; @@ -170,8 +170,7 @@ public final class BrickValues { public static final byte NDEF_PREFIX_TEL = 0x05; public static final byte NDEF_PREFIX_MAILTO = 0x06; - // Suppress default constructor for noninstantiability private BrickValues() { - throw new AssertionError(); + throw new AssertionError("No."); } } diff --git a/catroid/src/main/java/org/catrobat/catroid/common/Constants.java b/catroid/src/main/java/org/catrobat/catroid/common/Constants.java index e3c4222fe19..0503ddbbea1 100644 --- a/catroid/src/main/java/org/catrobat/catroid/common/Constants.java +++ b/catroid/src/main/java/org/catrobat/catroid/common/Constants.java @@ -32,7 +32,7 @@ public final class Constants { - public static final float CURRENT_CATROBAT_LANGUAGE_VERSION = Float.valueOf(0.997f); + public static final float CURRENT_CATROBAT_LANGUAGE_VERSION = 0.998f; public static final String REMOTE_DISPLAY_APP_ID = "CEBB9229"; public static final int CAST_CONNECTION_TIMEOUT = 5000; //in milliseconds @@ -199,13 +199,17 @@ public final class Constants { // Lego @Retention(RetentionPolicy.SOURCE) @IntDef({NXT, EV3}) - public @interface LegoSensorType {} + public @interface LegoSensorType { + } + public static final int NXT = 0; public static final int EV3 = 1; @Retention(RetentionPolicy.SOURCE) @IntDef({PORT_1, PORT_2, PORT_3, PORT_4}) - public @interface LegoPort {} + public @interface LegoPort { + } + public static final int PORT_1 = 0; public static final int PORT_2 = 1; public static final int PORT_3 = 2; @@ -278,6 +282,6 @@ public final class Constants { public static final int STATUS_CODE_UPLOAD_OLD_CATROBAT_VERSION = 519; private Constants() { - throw new AssertionError(); + throw new AssertionError("No."); } } diff --git a/catroid/src/main/java/org/catrobat/catroid/common/defaultprojectcreators/ChromeCastProjectCreator.java b/catroid/src/main/java/org/catrobat/catroid/common/defaultprojectcreators/ChromeCastProjectCreator.java index ca9ca4253b7..657b45d1f93 100644 --- a/catroid/src/main/java/org/catrobat/catroid/common/defaultprojectcreators/ChromeCastProjectCreator.java +++ b/catroid/src/main/java/org/catrobat/catroid/common/defaultprojectcreators/ChromeCastProjectCreator.java @@ -272,13 +272,13 @@ public Project createDefaultProject(String projectName, Context context, boolean birdScriptBroadcast.addBrick(placeTop); IfLogicElseBrick ifLogicElseBrickMaxY = new IfLogicElseBrick(ifLogicBeginBrickMaxY); birdScriptBroadcast.addBrick(ifLogicElseBrickMaxY); - IfLogicEndBrick ifLogicEndBrickMaxY = new IfLogicEndBrick(ifLogicElseBrickMaxY, ifLogicBeginBrickMaxY); + IfLogicEndBrick ifLogicEndBrickMaxY = new IfLogicEndBrick(ifLogicBeginBrickMaxY, ifLogicElseBrickMaxY); birdScriptBroadcast.addBrick(ifLogicEndBrickMaxY); ChangeYByNBrick changeYByNBrickUp = new ChangeYByNBrick(5); birdScriptBroadcast.addBrick(changeYByNBrickUp); IfLogicElseBrick ifLogicElseBrickUp = new IfLogicElseBrick(ifLogicBeginBrickUp); birdScriptBroadcast.addBrick(ifLogicElseBrickUp); - IfLogicEndBrick ifLogicEndBrickUp = new IfLogicEndBrick(ifLogicElseBrickUp, ifLogicBeginBrickUp); + IfLogicEndBrick ifLogicEndBrickUp = new IfLogicEndBrick(ifLogicBeginBrickUp, ifLogicElseBrickUp); birdScriptBroadcast.addBrick(ifLogicEndBrickUp); //Down IfLogicBeginBrick ifLogicBeginBrickDown = new IfLogicBeginBrick(new Formula( @@ -293,13 +293,13 @@ public Project createDefaultProject(String projectName, Context context, boolean birdScriptBroadcast.addBrick(placeBottom); IfLogicElseBrick ifLogicElseBrickMinY = new IfLogicElseBrick(ifLogicBeginBrickMinY); birdScriptBroadcast.addBrick(ifLogicElseBrickMinY); - IfLogicEndBrick ifLogicEndBrickMinY = new IfLogicEndBrick(ifLogicElseBrickMinY, ifLogicBeginBrickMinY); + IfLogicEndBrick ifLogicEndBrickMinY = new IfLogicEndBrick(ifLogicBeginBrickMinY, ifLogicElseBrickMinY); birdScriptBroadcast.addBrick(ifLogicEndBrickMinY); ChangeYByNBrick changeYByNBrickDown = new ChangeYByNBrick(-5); birdScriptBroadcast.addBrick(changeYByNBrickDown); IfLogicElseBrick ifLogicElseBrickDown = new IfLogicElseBrick(ifLogicBeginBrickDown); birdScriptBroadcast.addBrick(ifLogicElseBrickDown); - IfLogicEndBrick ifLogicEndBrickDown = new IfLogicEndBrick(ifLogicElseBrickDown, ifLogicBeginBrickDown); + IfLogicEndBrick ifLogicEndBrickDown = new IfLogicEndBrick(ifLogicBeginBrickDown, ifLogicElseBrickDown); birdScriptBroadcast.addBrick(ifLogicEndBrickDown); //Left IfLogicBeginBrick ifLogicBeginBrickLeft = new IfLogicBeginBrick(new Formula( @@ -320,13 +320,13 @@ public Project createDefaultProject(String projectName, Context context, boolean birdScriptBroadcast.addBrick(placeRight); IfLogicElseBrick ifLogicElseBrickMinX = new IfLogicElseBrick(ifLogicBeginBrickMinX); birdScriptBroadcast.addBrick(ifLogicElseBrickMinX); - IfLogicEndBrick ifLogicEndBrickMinX = new IfLogicEndBrick(ifLogicElseBrickMinX, ifLogicBeginBrickMinX); + IfLogicEndBrick ifLogicEndBrickMinX = new IfLogicEndBrick(ifLogicBeginBrickMinX, ifLogicElseBrickMinX); birdScriptBroadcast.addBrick(ifLogicEndBrickMinX); ChangeXByNBrick changeXByNBrickLeft = new ChangeXByNBrick(-5); birdScriptBroadcast.addBrick(changeXByNBrickLeft); IfLogicElseBrick ifLogicElseBrickLeft = new IfLogicElseBrick(ifLogicBeginBrickLeft); birdScriptBroadcast.addBrick(ifLogicElseBrickLeft); - IfLogicEndBrick ifLogicEndBrickLeft = new IfLogicEndBrick(ifLogicElseBrickLeft, ifLogicBeginBrickLeft); + IfLogicEndBrick ifLogicEndBrickLeft = new IfLogicEndBrick(ifLogicBeginBrickLeft, ifLogicElseBrickLeft); birdScriptBroadcast.addBrick(ifLogicEndBrickLeft); //Right IfLogicBeginBrick ifLogicBeginBrickRight = new IfLogicBeginBrick(new Formula( @@ -347,13 +347,13 @@ public Project createDefaultProject(String projectName, Context context, boolean birdScriptBroadcast.addBrick(placeLeft); IfLogicElseBrick ifLogicElseBrickMaxX = new IfLogicElseBrick(ifLogicBeginBrickMaxX); birdScriptBroadcast.addBrick(ifLogicElseBrickMaxX); - IfLogicEndBrick ifLogicEndBrickMaxX = new IfLogicEndBrick(ifLogicElseBrickMaxX, ifLogicBeginBrickMaxX); + IfLogicEndBrick ifLogicEndBrickMaxX = new IfLogicEndBrick(ifLogicBeginBrickMaxX, ifLogicElseBrickMaxX); birdScriptBroadcast.addBrick(ifLogicEndBrickMaxX); ChangeXByNBrick changeXByNBrickRight = new ChangeXByNBrick(5); birdScriptBroadcast.addBrick(changeXByNBrickRight); IfLogicElseBrick ifLogicElseBrickRight = new IfLogicElseBrick(ifLogicBeginBrickRight); birdScriptBroadcast.addBrick(ifLogicElseBrickRight); - IfLogicEndBrick ifLogicEndBrickRight = new IfLogicEndBrick(ifLogicElseBrickRight, ifLogicBeginBrickRight); + IfLogicEndBrick ifLogicEndBrickRight = new IfLogicEndBrick(ifLogicBeginBrickRight, ifLogicElseBrickRight); birdScriptBroadcast.addBrick(ifLogicEndBrickRight); LoopEndlessBrick loopEndlessBrickBroadcast = new LoopEndlessBrick(foreverBrickBroadcast); @@ -387,7 +387,7 @@ public Project createDefaultProject(String projectName, Context context, boolean setLookBrickUpRight.setLook(birdWingUpLookData); birdScriptButtonA.addBrick(setLookBrickUpRight); //end if - IfLogicEndBrick ifLogicEndBrickBirdRight = new IfLogicEndBrick(ifLogicElseBrickBirdRight, ifLogicBeginBrickBirdRight); + IfLogicEndBrick ifLogicEndBrickBirdRight = new IfLogicEndBrick(ifLogicBeginBrickBirdRight, ifLogicElseBrickBirdRight); birdScriptButtonA.addBrick(ifLogicEndBrickBirdRight); birdSprite.addScript(birdScriptButtonA); @@ -405,7 +405,7 @@ public Project createDefaultProject(String projectName, Context context, boolean PlaySoundBrick playSoundBrickBird2 = new PlaySoundBrick(); playSoundBrickBird2.setSound(soundInfo2); birdScriptButtonB.addBrick(playSoundBrickBird2); - IfLogicEndBrick ifLogicEndBrickBirdLeft = new IfLogicEndBrick(ifLogicElseBrickBirdLeft, ifLogicBeginBrickBirdLeft); + IfLogicEndBrick ifLogicEndBrickBirdLeft = new IfLogicEndBrick(ifLogicBeginBrickBirdLeft, ifLogicElseBrickBirdLeft); birdScriptButtonB.addBrick(ifLogicEndBrickBirdLeft); birdSprite.addScript(birdScriptButtonB); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/Sprite.java b/catroid/src/main/java/org/catrobat/catroid/content/Sprite.java index 1cb433df65e..87a0808021b 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/Sprite.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/Sprite.java @@ -604,7 +604,7 @@ public void createCollisionPolygons() { public class PenConfiguration { public boolean penDown = false; - public float penSize = BrickValues.PEN_SIZE; + public double penSize = BrickValues.PEN_SIZE; public Color penColor = BrickValues.PEN_COLOR; public PointF previousPoint = null; public boolean stamp = false; diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/AddItemToUserListBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/AddItemToUserListBrick.java index d4ee04c1cb9..6f17cc49c8a 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/AddItemToUserListBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/AddItemToUserListBrick.java @@ -25,7 +25,6 @@ import android.content.Context; import android.view.View; import android.widget.Spinner; -import android.widget.TextView; import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.R; @@ -36,7 +35,6 @@ import org.catrobat.catroid.formulaeditor.UserList; import org.catrobat.catroid.ui.adapter.DataAdapter; import org.catrobat.catroid.ui.adapter.UserListAdapterWrapper; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -45,23 +43,16 @@ public class AddItemToUserListBrick extends UserListBrick { private static final long serialVersionUID = 1L; public AddItemToUserListBrick() { - addAllowedBrickField(BrickField.LIST_ADD_ITEM); - } - - public AddItemToUserListBrick(Formula userListFormula, UserList userList) { - initializeBrickFields(userListFormula); - this.userList = userList; + this(new Formula(BrickValues.ADD_ITEM_TO_USERLIST)); } public AddItemToUserListBrick(double value) { - initializeBrickFields(new Formula(value)); + this(new Formula(value)); } - @Override - public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createAddItemToUserListAction(sprite, - getFormulaWithBrickField(BrickField.LIST_ADD_ITEM), userList)); - return null; + public AddItemToUserListBrick(Formula formula) { + addAllowedBrickField(BrickField.LIST_ADD_ITEM, R.id.brick_add_item_to_userlist_edit_text); + setFormulaWithBrickField(BrickField.LIST_ADD_ITEM, formula); } @Override @@ -70,14 +61,8 @@ public int getViewResource() { } @Override - public View getView(final Context context) { + public View getView(Context context) { super.getView(context); - TextView textField = view.findViewById(R.id.brick_add_item_to_userlist_edit_text); - - getFormulaWithBrickField(BrickField.LIST_ADD_ITEM).setTextFieldId(R.id.brick_add_item_to_userlist_edit_text); - getFormulaWithBrickField(BrickField.LIST_ADD_ITEM).refreshTextField(view); - - textField.setOnClickListener(this); Spinner userListSpinner = view.findViewById(R.id.add_item_to_userlist_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyEditedScene().getDataContainer() @@ -108,9 +93,6 @@ public View getPrototypeView(Context context) { userListSpinner.setAdapter(userListAdapterWrapper); setSpinnerSelection(userListSpinner, null); - TextView textAddItemToList = prototypeView.findViewById(R.id.brick_add_item_to_userlist_edit_text); - textAddItemToList.setText(formatNumberForPrototypeView(BrickValues.ADD_ITEM_TO_USERLIST)); - return prototypeView; } @@ -121,12 +103,9 @@ public void onNewList(UserList userList) { } @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.LIST_ADD_ITEM); - } - - private void initializeBrickFields(Formula listAddItemFormula) { - addAllowedBrickField(BrickField.LIST_ADD_ITEM); - setFormulaWithBrickField(BrickField.LIST_ADD_ITEM, listAddItemFormula); + public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { + sequence.addAction(sprite.getActionFactory() + .createAddItemToUserListAction(sprite, getFormulaWithBrickField(BrickField.LIST_ADD_ITEM), userList)); + return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ArduinoSendDigitalValueBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ArduinoSendDigitalValueBrick.java index 61f359a93b3..f2b4b61e8d1 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ArduinoSendDigitalValueBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ArduinoSendDigitalValueBrick.java @@ -22,16 +22,11 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -40,69 +35,31 @@ public class ArduinoSendDigitalValueBrick extends FormulaBrick { private static final long serialVersionUID = 1L; public ArduinoSendDigitalValueBrick() { - addAllowedBrickField(BrickField.ARDUINO_DIGITAL_PIN_NUMBER); - addAllowedBrickField(BrickField.ARDUINO_DIGITAL_PIN_VALUE); + this(new Formula(BrickValues.ARDUINO_DIGITAL_INITIAL_PIN_NUMBER), + new Formula(BrickValues.ARDUINO_DIGITAL_INITIAL_PIN_VALUE)); } public ArduinoSendDigitalValueBrick(int pinNumber, int pinValue) { - initializeBrickFields(new Formula(pinNumber), new Formula(pinValue)); + this(new Formula(pinNumber), new Formula(pinValue)); } public ArduinoSendDigitalValueBrick(Formula pinNumber, Formula pinValue) { - initializeBrickFields(pinNumber, pinValue); - } - - public ArduinoSendDigitalValueBrick(int pinNumber, String pinValue) { - initializeBrickFields(new Formula(pinNumber), new Formula(pinValue)); - } - - private void initializeBrickFields(Formula pinNumber, Formula pinValue) { - addAllowedBrickField(BrickField.ARDUINO_DIGITAL_PIN_NUMBER); - addAllowedBrickField(BrickField.ARDUINO_DIGITAL_PIN_VALUE); + addAllowedBrickField(BrickField.ARDUINO_DIGITAL_PIN_NUMBER, R.id.brick_arduino_set_digital_pin_edit_text); + addAllowedBrickField(BrickField.ARDUINO_DIGITAL_PIN_VALUE, R.id.brick_arduino_set_digital_value_edit_text); setFormulaWithBrickField(BrickField.ARDUINO_DIGITAL_PIN_NUMBER, pinNumber); setFormulaWithBrickField(BrickField.ARDUINO_DIGITAL_PIN_VALUE, pinValue); } - @Override - public int getRequiredResources() { - return BLUETOOTH_SENSORS_ARDUINO - | getFormulaWithBrickField(BrickField.ARDUINO_DIGITAL_PIN_NUMBER).getRequiredResources() - | getFormulaWithBrickField(BrickField.ARDUINO_DIGITAL_PIN_VALUE).getRequiredResources(); - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - - TextView textSetPinNumber = prototypeView.findViewById(R.id.brick_arduino_set_digital_pin_edit_text); - textSetPinNumber.setText(formatNumberForPrototypeView(BrickValues.ARDUINO_DIGITAL_INITIAL_PIN_NUMBER)); - TextView textSetPinValue = prototypeView.findViewById(R.id.brick_arduino_set_digital_value_edit_text); - textSetPinValue.setText(formatNumberForPrototypeView(BrickValues.ARDUINO_DIGITAL_INITIAL_PIN_VALUE)); - - return prototypeView; - } - @Override public int getViewResource() { return R.layout.brick_arduino_send_digital; } @Override - public View getView(Context context) { - super.getView(context); - TextView editPinNumber = view.findViewById(R.id.brick_arduino_set_digital_pin_edit_text); - getFormulaWithBrickField(BrickField.ARDUINO_DIGITAL_PIN_NUMBER).setTextFieldId(R.id.brick_arduino_set_digital_pin_edit_text); - getFormulaWithBrickField(BrickField.ARDUINO_DIGITAL_PIN_NUMBER).refreshTextField(view); - - editPinNumber.setOnClickListener(this); - - TextView editPinValue = view.findViewById(R.id.brick_arduino_set_digital_value_edit_text); - getFormulaWithBrickField(BrickField.ARDUINO_DIGITAL_PIN_VALUE).setTextFieldId(R.id.brick_arduino_set_digital_value_edit_text); - getFormulaWithBrickField(BrickField.ARDUINO_DIGITAL_PIN_VALUE).refreshTextField(view); - - editPinValue.setOnClickListener(this); - - return view; + public int getRequiredResources() { + return BLUETOOTH_SENSORS_ARDUINO + | getFormulaWithBrickField(BrickField.ARDUINO_DIGITAL_PIN_NUMBER).getRequiredResources() + | getFormulaWithBrickField(BrickField.ARDUINO_DIGITAL_PIN_VALUE).getRequiredResources(); } @Override @@ -112,17 +69,4 @@ public List addActionToSequence(Sprite sprite, ScriptSeque getFormulaWithBrickField(BrickField.ARDUINO_DIGITAL_PIN_VALUE))); return null; } - - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_arduino_set_digital_value_edit_text: - FormulaEditorFragment.showFragment(view, this, BrickField.ARDUINO_DIGITAL_PIN_VALUE); - break; - - case R.id.brick_arduino_set_digital_pin_edit_text: - default: - FormulaEditorFragment.showFragment(view, this, BrickField.ARDUINO_DIGITAL_PIN_NUMBER); - break; - } - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ArduinoSendPWMValueBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ArduinoSendPWMValueBrick.java index b8283a2251c..0ff21eb8fcc 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ArduinoSendPWMValueBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ArduinoSendPWMValueBrick.java @@ -22,10 +22,6 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; @@ -33,7 +29,6 @@ import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.formulaeditor.FormulaElement; import org.catrobat.catroid.formulaeditor.Operators; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -42,65 +37,31 @@ public class ArduinoSendPWMValueBrick extends FormulaBrick { private static final long serialVersionUID = 1L; public ArduinoSendPWMValueBrick() { - addAllowedBrickField(BrickField.ARDUINO_ANALOG_PIN_NUMBER); - addAllowedBrickField(BrickField.ARDUINO_ANALOG_PIN_VALUE); + this(new Formula(BrickValues.ARDUINO_PWM_INITIAL_PIN_NUMBER), + new Formula(BrickValues.ARDUINO_PWM_INITIAL_PIN_VALUE)); } public ArduinoSendPWMValueBrick(int pinNumber, int pinValue) { - initializeBrickFields(new Formula(pinNumber), new Formula(pinValue)); + this(new Formula(pinNumber), new Formula(pinValue)); } public ArduinoSendPWMValueBrick(Formula pinNumber, Formula pinValue) { - initializeBrickFields(pinNumber, pinValue); - } - - private void initializeBrickFields(Formula pinNumber, Formula pinValue) { - addAllowedBrickField(BrickField.ARDUINO_ANALOG_PIN_NUMBER); - addAllowedBrickField(BrickField.ARDUINO_ANALOG_PIN_VALUE); + addAllowedBrickField(BrickField.ARDUINO_ANALOG_PIN_NUMBER, R.id.brick_arduino_set_analog_pin_edit_text); + addAllowedBrickField(BrickField.ARDUINO_ANALOG_PIN_VALUE, R.id.brick_arduino_set_analog_value_edit_text); setFormulaWithBrickField(BrickField.ARDUINO_ANALOG_PIN_NUMBER, pinNumber); setFormulaWithBrickField(BrickField.ARDUINO_ANALOG_PIN_VALUE, pinValue); } - @Override - public int getRequiredResources() { - return BLUETOOTH_SENSORS_ARDUINO - | getFormulaWithBrickField(BrickField.ARDUINO_ANALOG_PIN_NUMBER).getRequiredResources() - | getFormulaWithBrickField(BrickField.ARDUINO_ANALOG_PIN_VALUE).getRequiredResources(); - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - - TextView textSetPinNumber = prototypeView.findViewById(R.id.brick_arduino_set_analog_pin_edit_text); - textSetPinNumber.setText(formatNumberForPrototypeView(BrickValues.ARDUINO_PWM_INITIAL_PIN_NUMBER)); - TextView textSetPinValue = prototypeView.findViewById(R.id.brick_arduino_set_analog_value_edit_text); - textSetPinValue.setText(formatNumberForPrototypeView(BrickValues.ARDUINO_PWM_INITIAL_PIN_VALUE)); - - return prototypeView; - } - @Override public int getViewResource() { return R.layout.brick_arduino_send_analog; } @Override - public View getView(Context context) { - super.getView(context); - TextView editPinNumber = view.findViewById(R.id.brick_arduino_set_analog_pin_edit_text); - getFormulaWithBrickField(BrickField.ARDUINO_ANALOG_PIN_NUMBER).setTextFieldId(R.id.brick_arduino_set_analog_pin_edit_text); - getFormulaWithBrickField(BrickField.ARDUINO_ANALOG_PIN_NUMBER).refreshTextField(view); - - editPinNumber.setOnClickListener(this); - - TextView editPinValue = view.findViewById(R.id.brick_arduino_set_analog_value_edit_text); - getFormulaWithBrickField(BrickField.ARDUINO_ANALOG_PIN_VALUE).setTextFieldId(R.id.brick_arduino_set_analog_value_edit_text); - getFormulaWithBrickField(BrickField.ARDUINO_ANALOG_PIN_VALUE).refreshTextField(view); - - editPinValue.setOnClickListener(this); - - return view; + public int getRequiredResources() { + return BLUETOOTH_SENSORS_ARDUINO + | getFormulaWithBrickField(BrickField.ARDUINO_ANALOG_PIN_NUMBER).getRequiredResources() + | getFormulaWithBrickField(BrickField.ARDUINO_ANALOG_PIN_VALUE).getRequiredResources(); } @Override @@ -111,19 +72,6 @@ public List addActionToSequence(Sprite sprite, ScriptSeque return null; } - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_arduino_set_analog_value_edit_text: - FormulaEditorFragment.showFragment(view, this, BrickField.ARDUINO_ANALOG_PIN_VALUE); - break; - - case R.id.brick_arduino_set_analog_pin_edit_text: - default: - FormulaEditorFragment.showFragment(view, this, BrickField.ARDUINO_ANALOG_PIN_NUMBER); - break; - } - } - public void updateArduinoValues994to995() { Formula formula = getFormulaWithBrickField(BrickField.ARDUINO_ANALOG_PIN_VALUE); FormulaElement oldFormulaElement = formula.getFormulaTree(); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/AskBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/AskBrick.java index 4c423765c5b..880a9982d81 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/AskBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/AskBrick.java @@ -25,18 +25,15 @@ import android.content.Context; import android.view.View; import android.widget.Spinner; -import android.widget.TextView; import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.R; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.formulaeditor.InternToExternGenerator; import org.catrobat.catroid.formulaeditor.UserVariable; import org.catrobat.catroid.ui.adapter.DataAdapter; import org.catrobat.catroid.ui.adapter.UserVariableAdapterWrapper; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.Collections; import java.util.List; @@ -45,20 +42,17 @@ public class AskBrick extends UserVariableBrick { private static final long serialVersionUID = 1L; - private transient String defaultPrototypeToken = null; + public AskBrick(String questionText) { + this(new Formula(questionText)); + } public AskBrick(Formula questionFormula, UserVariable answerVariable) { + this(questionFormula); userVariable = answerVariable; - initializeBrickFields(questionFormula); } - public AskBrick(String questionText) { - userVariable = null; - initializeBrickFields(new Formula(questionText)); - } - - private void initializeBrickFields(Formula questionFormula) { - addAllowedBrickField(BrickField.ASK_QUESTION); + public AskBrick(Formula questionFormula) { + addAllowedBrickField(BrickField.ASK_QUESTION, R.id.brick_ask_question_edit_text); setFormulaWithBrickField(BrickField.ASK_QUESTION, questionFormula); } @@ -80,13 +74,8 @@ public int getViewResource() { } @Override - public View getView(final Context context) { + public View getView(Context context) { super.getView(context); - TextView textField = view.findViewById(R.id.brick_ask_question_edit_text); - - getFormulaWithBrickField(BrickField.ASK_QUESTION).setTextFieldId(R.id.brick_ask_question_edit_text); - getFormulaWithBrickField(BrickField.ASK_QUESTION).refreshTextField(view); - textField.setOnClickListener(this); Spinner variableSpinner = view.findViewById(R.id.brick_ask_spinner); @@ -97,17 +86,17 @@ public View getView(final Context context) { userVariableAdapterWrapper.setItemLayout(android.R.layout.simple_spinner_item, android.R.id.text1); variableSpinner.setAdapter(userVariableAdapterWrapper); - setSpinnerSelection(variableSpinner, null); - variableSpinner.setOnTouchListener(createSpinnerOnTouchListener()); variableSpinner.setOnItemSelectedListener(createVariableSpinnerItemSelectedListener()); + return view; } @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); + Spinner variableSpinner = prototypeView.findViewById(R.id.brick_ask_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyPlayingScene().getDataContainer() @@ -120,14 +109,6 @@ public View getPrototypeView(Context context) { variableSpinner.setAdapter(userVariableAdapterWrapper); setSpinnerSelection(variableSpinner, null); - TextView textSetVariable = prototypeView.findViewById(R.id.brick_ask_question_edit_text); - - if (defaultPrototypeToken != null) { - int defaultValueId = InternToExternGenerator.getMappedString(defaultPrototypeToken); - textSetVariable.setText(context.getText(defaultValueId)); - } else { - textSetVariable.setText(context.getString(R.string.brick_ask_default_question)); - } return prototypeView; } @@ -136,8 +117,4 @@ public void onNewVariable(UserVariable userVariable) { Spinner spinner = view.findViewById(R.id.brick_ask_spinner); setSpinnerSelection(spinner, userVariable); } - - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.ASK_QUESTION); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/AskSpeechBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/AskSpeechBrick.java index ad031ac48b7..6d277fd08a0 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/AskSpeechBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/AskSpeechBrick.java @@ -25,18 +25,15 @@ import android.content.Context; import android.view.View; import android.widget.Spinner; -import android.widget.TextView; import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.R; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.formulaeditor.InternToExternGenerator; import org.catrobat.catroid.formulaeditor.UserVariable; import org.catrobat.catroid.ui.adapter.DataAdapter; import org.catrobat.catroid.ui.adapter.UserVariableAdapterWrapper; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.Collections; import java.util.List; @@ -45,20 +42,12 @@ public class AskSpeechBrick extends UserVariableBrick { private static final long serialVersionUID = 1L; - private transient String defaultPrototypeToken = null; - - public AskSpeechBrick(Formula questionFormula, UserVariable answerVariable) { - this.userVariable = answerVariable; - initializeBrickFields(questionFormula); - } - public AskSpeechBrick(String questionText) { - this.userVariable = null; - initializeBrickFields(new Formula(questionText)); + this(new Formula(questionText)); } - private void initializeBrickFields(Formula questionFormula) { - addAllowedBrickField(BrickField.ASK_SPEECH_QUESTION); + public AskSpeechBrick(Formula questionFormula) { + addAllowedBrickField(BrickField.ASK_SPEECH_QUESTION, R.id.brick_ask_speech_question_edit_text); setFormulaWithBrickField(BrickField.ASK_SPEECH_QUESTION, questionFormula); } @@ -70,8 +59,8 @@ public int getRequiredResources() { @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createAskSpeechAction(sprite, - getFormulaWithBrickField(BrickField.ASK_SPEECH_QUESTION), userVariable)); + sequence.addAction(sprite.getActionFactory() + .createAskSpeechAction(sprite, getFormulaWithBrickField(BrickField.ASK_SPEECH_QUESTION), userVariable)); return Collections.emptyList(); } @@ -83,26 +72,22 @@ public int getViewResource() { @Override public View getView(final Context context) { super.getView(context); - TextView textField = view.findViewById(R.id.brick_ask_speech_question_edit_text); - - getFormulaWithBrickField(BrickField.ASK_SPEECH_QUESTION).setTextFieldId(R.id.brick_ask_speech_question_edit_text); - getFormulaWithBrickField(BrickField.ASK_SPEECH_QUESTION).refreshTextField(view); - textField.setOnClickListener(this); Spinner variableSpinner = view.findViewById(R.id.brick_ask_speech_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyPlayingScene().getDataContainer() .createDataAdapter(context, ProjectManager.getInstance().getCurrentSprite()); + UserVariableAdapterWrapper userVariableAdapterWrapper = new UserVariableAdapterWrapper(context, dataAdapter); + userVariableAdapterWrapper.setItemLayout(android.R.layout.simple_spinner_item, android.R.id.text1); variableSpinner.setAdapter(userVariableAdapterWrapper); - setSpinnerSelection(variableSpinner, null); - variableSpinner.setOnTouchListener(createSpinnerOnTouchListener()); variableSpinner.setOnItemSelectedListener(createVariableSpinnerItemSelectedListener()); + return view; } @@ -121,14 +106,6 @@ public View getPrototypeView(Context context) { variableSpinner.setAdapter(userVariableAdapterWrapper); setSpinnerSelection(variableSpinner, null); - TextView textSetVariable = prototypeView.findViewById(R.id.brick_ask_speech_question_edit_text); - - if (defaultPrototypeToken != null) { - int defaultValueId = InternToExternGenerator.getMappedString(defaultPrototypeToken); - textSetVariable.setText(context.getText(defaultValueId)); - } else { - textSetVariable.setText(context.getString(R.string.brick_ask_speech_default_question)); - } return prototypeView; } @@ -137,8 +114,4 @@ public void onNewVariable(UserVariable userVariable) { Spinner spinner = view.findViewById(R.id.brick_ask_speech_spinner); setSpinnerSelection(spinner, userVariable); } - - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.ASK_SPEECH_QUESTION); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/Brick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/Brick.java index 19e55112831..99e3966c1ce 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/Brick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/Brick.java @@ -44,7 +44,7 @@ enum BrickField { PEN_SIZE, PEN_COLOR_RED, PEN_COLOR_GREEN, PEN_COLOR_BLUE, IF_CONDITION, TIMES_TO_REPEAT, VIBRATE_DURATION_IN_SECONDS, USER_BRICK, NOTE, SPEAK, - SHOWTEXT, HIDETEXT, STRING, ROTATION_STYLE, REPEAT_UNTIL_CONDITION, ASK_QUESTION, NFC_NDEF_MESSAGE, ASK_SPEECH_QUESTION, + SHOWTEXT, STRING, ROTATION_STYLE, REPEAT_UNTIL_CONDITION, ASK_QUESTION, NFC_NDEF_MESSAGE, ASK_SPEECH_QUESTION, LOOK_INDEX, LEGO_NXT_SPEED, LEGO_NXT_DEGREES, LEGO_NXT_FREQUENCY, LEGO_NXT_DURATION_IN_SECONDS, @@ -60,7 +60,6 @@ enum BrickField { JUMPING_SUMO_SPEED, JUMPING_SUMO_TIME_TO_DRIVE_IN_SECONDS, JUMPING_SUMO_VOLUME, JUMPING_SUMO_ROTATE, PHIRO_SPEED, PHIRO_DURATION_IN_SECONDS, PHIRO_LIGHT_RED, PHIRO_LIGHT_GREEN, PHIRO_LIGHT_BLUE, - IF_PHIRO_SENSOR_CONDITION, PHYSICS_BOUNCE_FACTOR, PHYSICS_FRICTION, PHYSICS_GRAVITY_X, PHYSICS_GRAVITY_Y, PHYSICS_MASS, PHYSICS_VELOCITY_X, PHYSICS_VELOCITY_Y, PHYSICS_TURN_LEFT_SPEED, PHYSICS_TURN_RIGHT_SPEED, diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/BrickBaseType.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/BrickBaseType.java index 8f4a40bb41b..1c8ab60217c 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/BrickBaseType.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/BrickBaseType.java @@ -30,12 +30,8 @@ import android.widget.CheckBox; import org.catrobat.catroid.R; -import org.catrobat.catroid.content.Sprite; -import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.ui.adapter.BrickAdapter; -import java.util.List; - public abstract class BrickBaseType implements Brick { private static final long serialVersionUID = 1L; @@ -95,7 +91,7 @@ public int getRequiredResources() { @CallSuper @Override public View getView(Context context) { - view = LayoutInflater.from(context).inflate(getViewResource(), null); + view = LayoutInflater.from(context).inflate(getViewResource(), null, false); BrickViewProvider.setAlphaOnView(view, alphaValue); @@ -127,7 +123,4 @@ public void onClick(View view) { public View getPrototypeView(Context context) { return LayoutInflater.from(context).inflate(getViewResource(), null); } - - @Override - public abstract List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence); } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastMessageBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastMessageBrick.java index 6a4a47a92c1..7e6a6e35278 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastMessageBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/BroadcastMessageBrick.java @@ -69,7 +69,7 @@ public View getPrototypeView(Context context) { Spinner broadcastSpinner = prototypeView.findViewById(R.id.brick_broadcast_spinner); BroadcastSpinnerAdapter broadcastSpinnerAdapter = getMessageAdapter(context); - if (context.getString(R.string.new_broadcast_message).equals(getBroadcastMessage())) { + if (getBroadcastMessage().equals(context.getString(R.string.new_broadcast_message))) { setBroadcastMessage(broadcastSpinnerAdapter.getItem(1)); } broadcastSpinner.setAdapter(broadcastSpinnerAdapter); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/CameraBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/CameraBrick.java index 08269617c18..e332ae0a5af 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/CameraBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/CameraBrick.java @@ -59,12 +59,11 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); + Spinner videoSpinner = view.findViewById(R.id.brick_video_spinner); ArrayAdapter spinnerAdapter = createArrayAdapter(context); - videoSpinner.setAdapter(spinnerAdapter); - videoSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeBrightnessByNBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeBrightnessByNBrick.java index 984c4d210dc..8d41277c1ee 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeBrightnessByNBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeBrightnessByNBrick.java @@ -22,16 +22,11 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -40,20 +35,16 @@ public class ChangeBrightnessByNBrick extends FormulaBrick { private static final long serialVersionUID = 1L; public ChangeBrightnessByNBrick() { - addAllowedBrickField(BrickField.BRIGHTNESS_CHANGE); + this(new Formula(BrickValues.CHANGE_BRITHNESS_BY)); } public ChangeBrightnessByNBrick(double changeBrightnessValue) { - initializeBrickFields(new Formula(changeBrightnessValue)); - } - - public ChangeBrightnessByNBrick(Formula changeBrightness) { - initializeBrickFields(changeBrightness); + this(new Formula(changeBrightnessValue)); } - private void initializeBrickFields(Formula changeBrightness) { - addAllowedBrickField(BrickField.BRIGHTNESS_CHANGE); - setFormulaWithBrickField(BrickField.BRIGHTNESS_CHANGE, changeBrightness); + public ChangeBrightnessByNBrick(Formula formula) { + addAllowedBrickField(BrickField.BRIGHTNESS_CHANGE, R.id.brick_change_brightness_edit_text); + setFormulaWithBrickField(BrickField.BRIGHTNESS_CHANGE, formula); } @Override @@ -66,34 +57,10 @@ public int getViewResource() { return R.layout.brick_change_brightness; } - @Override - public View getView(Context context) { - super.getView(context); - TextView editX = view.findViewById(R.id.brick_change_brightness_edit_text); - getFormulaWithBrickField(BrickField.BRIGHTNESS_CHANGE).setTextFieldId(R.id.brick_change_brightness_edit_text); - getFormulaWithBrickField(BrickField.BRIGHTNESS_CHANGE).refreshTextField(view); - - editX.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textChangeBrightness = prototypeView.findViewById(R.id.brick_change_brightness_edit_text); - textChangeBrightness.setText(formatNumberForPrototypeView(BrickValues.CHANGE_BRITHNESS_BY)); - return prototypeView; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory() .createChangeBrightnessByNAction(sprite, getFormulaWithBrickField(BrickField.BRIGHTNESS_CHANGE))); return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.BRIGHTNESS_CHANGE); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeColorByNBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeColorByNBrick.java index ea074dc8d17..5b46163ffb5 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeColorByNBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeColorByNBrick.java @@ -22,16 +22,11 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -40,20 +35,16 @@ public class ChangeColorByNBrick extends FormulaBrick { private static final long serialVersionUID = 1L; public ChangeColorByNBrick() { - addAllowedBrickField(BrickField.COLOR_CHANGE); - } - - public ChangeColorByNBrick(Float changeColorValue) { - initializeBrickFields(new Formula(changeColorValue)); + this(new Formula(BrickValues.CHANGE_COLOR_BY)); } - public ChangeColorByNBrick(Formula changeColor) { - initializeBrickFields(changeColor); + public ChangeColorByNBrick(double changeColorValue) { + this(new Formula(changeColorValue)); } - private void initializeBrickFields(Formula changeColor) { - addAllowedBrickField(BrickField.COLOR_CHANGE); - setFormulaWithBrickField(BrickField.COLOR_CHANGE, changeColor); + public ChangeColorByNBrick(Formula formula) { + addAllowedBrickField(BrickField.COLOR_CHANGE, R.id.brick_change_color_by_edit_text); + setFormulaWithBrickField(BrickField.COLOR_CHANGE, formula); } @Override @@ -66,33 +57,10 @@ public int getViewResource() { return R.layout.brick_change_color_by; } - @Override - public View getView(Context context) { - super.getView(context); - TextView editX = view.findViewById(R.id.brick_change_color_by_edit_text); - getFormulaWithBrickField(BrickField.COLOR_CHANGE).setTextFieldId(R.id.brick_change_color_by_edit_text); - getFormulaWithBrickField(BrickField.COLOR_CHANGE).refreshTextField(view); - editX.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textChangeColor = prototypeView.findViewById(R.id.brick_change_color_by_edit_text); - textChangeColor.setText(formatNumberForPrototypeView(BrickValues.CHANGE_COLOR_BY)); - return prototypeView; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory() .createChangeColorByNAction(sprite, getFormulaWithBrickField(BrickField.COLOR_CHANGE))); return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.COLOR_CHANGE); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeSizeByNBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeSizeByNBrick.java index eddc355fd55..2328276c8a3 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeSizeByNBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeSizeByNBrick.java @@ -22,16 +22,11 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -40,20 +35,16 @@ public class ChangeSizeByNBrick extends FormulaBrick { private static final long serialVersionUID = 1L; public ChangeSizeByNBrick() { - addAllowedBrickField(BrickField.SIZE_CHANGE); + this(new Formula(BrickValues.CHANGE_SIZE_BY)); } public ChangeSizeByNBrick(double sizeValue) { - initializeBrickFields(new Formula(sizeValue)); - } - - public ChangeSizeByNBrick(Formula size) { - initializeBrickFields(size); + this(new Formula(sizeValue)); } - private void initializeBrickFields(Formula size) { - addAllowedBrickField(BrickField.SIZE_CHANGE); - setFormulaWithBrickField(BrickField.SIZE_CHANGE, size); + public ChangeSizeByNBrick(Formula formula) { + addAllowedBrickField(BrickField.SIZE_CHANGE, R.id.brick_change_size_by_edit_text); + setFormulaWithBrickField(BrickField.SIZE_CHANGE, formula); } @Override @@ -66,33 +57,10 @@ public int getViewResource() { return R.layout.brick_change_size_by_n; } - @Override - public View getView(Context context) { - super.getView(context); - TextView edit = view.findViewById(R.id.brick_change_size_by_edit_text); - getFormulaWithBrickField(BrickField.SIZE_CHANGE).setTextFieldId(R.id.brick_change_size_by_edit_text); - getFormulaWithBrickField(BrickField.SIZE_CHANGE).refreshTextField(view); - edit.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textChangeSizeBy = prototypeView.findViewById(R.id.brick_change_size_by_edit_text); - textChangeSizeBy.setText(formatNumberForPrototypeView(BrickValues.CHANGE_SIZE_BY)); - return prototypeView; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory() .createChangeSizeByNAction(sprite, getFormulaWithBrickField(BrickField.SIZE_CHANGE))); return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.SIZE_CHANGE); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeTransparencyByNBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeTransparencyByNBrick.java index 532d2ad6b32..628f7254744 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeTransparencyByNBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeTransparencyByNBrick.java @@ -22,16 +22,11 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -39,23 +34,17 @@ public class ChangeTransparencyByNBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - private transient View prototypeView; - public ChangeTransparencyByNBrick() { - addAllowedBrickField(BrickField.TRANSPARENCY_CHANGE); + this(new Formula(BrickValues.CHANGE_TRANSPARENCY_EFFECT)); } public ChangeTransparencyByNBrick(double changeTransparencyValue) { - initializeBrickFields(new Formula(changeTransparencyValue)); - } - - public ChangeTransparencyByNBrick(Formula changeTransparency) { - initializeBrickFields(changeTransparency); + this(new Formula(changeTransparencyValue)); } - private void initializeBrickFields(Formula changeTransparency) { - addAllowedBrickField(BrickField.TRANSPARENCY_CHANGE); - setFormulaWithBrickField(BrickField.TRANSPARENCY_CHANGE, changeTransparency); + public ChangeTransparencyByNBrick(Formula formula) { + addAllowedBrickField(BrickField.TRANSPARENCY_CHANGE, R.id.brick_change_transparency_edit_text); + setFormulaWithBrickField(BrickField.TRANSPARENCY_CHANGE, formula); } @Override @@ -68,36 +57,10 @@ public int getViewResource() { return R.layout.brick_change_transparency; } - @Override - public View getView(Context context) { - super.getView(context); - TextView editX = (TextView) view.findViewById(R.id.brick_change_transparency_edit_text); - getFormulaWithBrickField(BrickField.TRANSPARENCY_CHANGE) - .setTextFieldId(R.id.brick_change_transparency_edit_text); - getFormulaWithBrickField(BrickField.TRANSPARENCY_CHANGE).refreshTextField(view); - - editX.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textChangeGhostEffect = (TextView) prototypeView - .findViewById(R.id.brick_change_transparency_edit_text); - textChangeGhostEffect.setText(formatNumberForPrototypeView(BrickValues.CHANGE_TRANSPARENCY_EFFECT)); - return prototypeView; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createChangeTransparencyByNAction(sprite, - getFormulaWithBrickField(BrickField.TRANSPARENCY_CHANGE))); + sequence.addAction(sprite.getActionFactory() + .createChangeTransparencyByNAction(sprite, getFormulaWithBrickField(BrickField.TRANSPARENCY_CHANGE))); return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.TRANSPARENCY_CHANGE); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeVariableBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeVariableBrick.java index 3ab498f76b3..619012d4c12 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeVariableBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeVariableBrick.java @@ -25,7 +25,6 @@ import android.content.Context; import android.view.View; import android.widget.Spinner; -import android.widget.TextView; import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.R; @@ -36,7 +35,6 @@ import org.catrobat.catroid.formulaeditor.UserVariable; import org.catrobat.catroid.ui.adapter.DataAdapter; import org.catrobat.catroid.ui.adapter.UserVariableAdapterWrapper; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -45,25 +43,21 @@ public class ChangeVariableBrick extends UserVariableBrick { private static final long serialVersionUID = 1L; public ChangeVariableBrick() { - addAllowedBrickField(BrickField.VARIABLE_CHANGE); + this(new Formula(BrickValues.CHANGE_VARIABLE)); } - public ChangeVariableBrick(Formula variableFormula) { - initializeBrickFields(variableFormula); + public ChangeVariableBrick(double value) { + this(new Formula(value)); } - public ChangeVariableBrick(Formula variableFormula, UserVariable userVariable) { - initializeBrickFields(variableFormula); + public ChangeVariableBrick(Formula formula, UserVariable userVariable) { + this(formula); this.userVariable = userVariable; } - public ChangeVariableBrick(double value) { - initializeBrickFields(new Formula(value)); - } - - private void initializeBrickFields(Formula variableFormula) { - addAllowedBrickField(BrickField.VARIABLE_CHANGE); - setFormulaWithBrickField(BrickField.VARIABLE_CHANGE, variableFormula); + public ChangeVariableBrick(Formula formula) { + addAllowedBrickField(BrickField.VARIABLE_CHANGE, R.id.brick_change_variable_edit_text); + setFormulaWithBrickField(BrickField.VARIABLE_CHANGE, formula); } @Override @@ -77,25 +71,20 @@ public int getViewResource() { } @Override - public View getView(final Context context) { + public View getView(Context context) { super.getView(context); - TextView textField = (TextView) view.findViewById(R.id.brick_change_variable_edit_text); - getFormulaWithBrickField(BrickField.VARIABLE_CHANGE).setTextFieldId(R.id.brick_change_variable_edit_text); - getFormulaWithBrickField(BrickField.VARIABLE_CHANGE).refreshTextField(view); - textField.setOnClickListener(this); - Spinner variableSpinner = (Spinner) view.findViewById(R.id.change_variable_spinner); + Spinner variableSpinner = view.findViewById(R.id.change_variable_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyEditedScene().getDataContainer() .createDataAdapter(context, ProjectManager.getInstance().getCurrentSprite()); + UserVariableAdapterWrapper userVariableAdapterWrapper = new UserVariableAdapterWrapper(context, dataAdapter); - userVariableAdapterWrapper.setItemLayout(android.R.layout.simple_spinner_item, android.R.id.text1); + userVariableAdapterWrapper.setItemLayout(android.R.layout.simple_spinner_item, android.R.id.text1); variableSpinner.setAdapter(userVariableAdapterWrapper); - setSpinnerSelection(variableSpinner, null); - variableSpinner.setOnTouchListener(createSpinnerOnTouchListener()); variableSpinner.setOnItemSelectedListener(createVariableSpinnerItemSelectedListener()); return view; @@ -104,19 +93,16 @@ public View getView(final Context context) { @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - Spinner variableSpinner = (Spinner) prototypeView.findViewById(R.id.change_variable_spinner); + Spinner variableSpinner = prototypeView.findViewById(R.id.change_variable_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyEditedScene() .getDataContainer().createDataAdapter(context, ProjectManager.getInstance().getCurrentSprite()); - UserVariableAdapterWrapper userVariableAdapterWrapper = new UserVariableAdapterWrapper(context, - dataAdapter); + UserVariableAdapterWrapper userVariableAdapterWrapper = new UserVariableAdapterWrapper(context, dataAdapter); userVariableAdapterWrapper.setItemLayout(android.R.layout.simple_spinner_item, android.R.id.text1); variableSpinner.setAdapter(userVariableAdapterWrapper); setSpinnerSelection(variableSpinner, null); - TextView textChangeVariable = (TextView) prototypeView.findViewById(R.id.brick_change_variable_edit_text); - textChangeVariable.setText(formatNumberForPrototypeView(BrickValues.CHANGE_VARIABLE)); return prototypeView; } @@ -128,11 +114,8 @@ public void onNewVariable(UserVariable userVariable) { @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createChangeVariableAction(sprite, getFormulaWithBrickField(BrickField.VARIABLE_CHANGE), userVariable)); + sequence.addAction(sprite.getActionFactory() + .createChangeVariableAction(sprite, getFormulaWithBrickField(BrickField.VARIABLE_CHANGE), userVariable)); return null; } - - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.VARIABLE_CHANGE); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeVolumeByNBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeVolumeByNBrick.java index 1330d4acf42..0940e278a29 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeVolumeByNBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeVolumeByNBrick.java @@ -22,16 +22,11 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -40,20 +35,16 @@ public class ChangeVolumeByNBrick extends FormulaBrick { private static final long serialVersionUID = 1L; public ChangeVolumeByNBrick() { - addAllowedBrickField(BrickField.VOLUME_CHANGE); + this(new Formula(BrickValues.CHANGE_VOLUME_BY)); } public ChangeVolumeByNBrick(double changeVolumeValue) { - initializeBrickFields(new Formula(changeVolumeValue)); - } - - public ChangeVolumeByNBrick(Formula volume) { - initializeBrickFields(volume); + this(new Formula(changeVolumeValue)); } - private void initializeBrickFields(Formula volume) { - addAllowedBrickField(BrickField.VOLUME_CHANGE); - setFormulaWithBrickField(BrickField.VOLUME_CHANGE, volume); + public ChangeVolumeByNBrick(Formula formula) { + addAllowedBrickField(BrickField.VOLUME_CHANGE, R.id.brick_change_volume_by_edit_text); + setFormulaWithBrickField(BrickField.VOLUME_CHANGE, formula); } @Override @@ -66,33 +57,10 @@ public int getViewResource() { return R.layout.brick_change_volume_by; } - @Override - public View getView(Context context) { - super.getView(context); - TextView edit = view.findViewById(R.id.brick_change_volume_by_edit_text); - getFormulaWithBrickField(BrickField.VOLUME_CHANGE).setTextFieldId(R.id.brick_change_volume_by_edit_text); - getFormulaWithBrickField(BrickField.VOLUME_CHANGE).refreshTextField(view); - edit.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textSetVolumeTo = prototypeView.findViewById(R.id.brick_change_volume_by_edit_text); - textSetVolumeTo.setText(formatNumberForPrototypeView(BrickValues.CHANGE_VOLUME_BY)); - return prototypeView; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory() .createChangeVolumeByNAction(sprite, getFormulaWithBrickField(BrickField.VOLUME_CHANGE))); return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.VOLUME_CHANGE); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeXByNBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeXByNBrick.java index 2e8f4bdf317..a1bb6837d73 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeXByNBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeXByNBrick.java @@ -22,16 +22,11 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -40,20 +35,16 @@ public class ChangeXByNBrick extends FormulaBrick { private static final long serialVersionUID = 1L; public ChangeXByNBrick() { - addAllowedBrickField(BrickField.X_POSITION_CHANGE); + this(new Formula(BrickValues.CHANGE_X_BY)); } public ChangeXByNBrick(int xMovementValue) { - initializeBrickFields(new Formula(xMovementValue)); - } - - public ChangeXByNBrick(Formula xMovement) { - initializeBrickFields(xMovement); + this(new Formula(xMovementValue)); } - private void initializeBrickFields(Formula xMovement) { - addAllowedBrickField(BrickField.X_POSITION_CHANGE); - setFormulaWithBrickField(BrickField.X_POSITION_CHANGE, xMovement); + public ChangeXByNBrick(Formula formula) { + addAllowedBrickField(BrickField.X_POSITION_CHANGE, R.id.brick_change_x_edit_text); + setFormulaWithBrickField(BrickField.X_POSITION_CHANGE, formula); } @Override @@ -66,34 +57,10 @@ public int getViewResource() { return R.layout.brick_change_x; } - @Override - public View getView(Context context) { - super.getView(context); - TextView editX = view.findViewById(R.id.brick_change_x_edit_text); - getFormulaWithBrickField(BrickField.X_POSITION_CHANGE).setTextFieldId(R.id.brick_change_x_edit_text); - getFormulaWithBrickField(BrickField.X_POSITION_CHANGE).refreshTextField(view); - - editX.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textXMovement = prototypeView.findViewById(R.id.brick_change_x_edit_text); - textXMovement.setText(formatNumberForPrototypeView(BrickValues.CHANGE_X_BY)); - return prototypeView; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory() .createChangeXByNAction(sprite, getFormulaWithBrickField(BrickField.X_POSITION_CHANGE))); return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.X_POSITION_CHANGE); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeYByNBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeYByNBrick.java index a749d407841..f3710ceffd9 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeYByNBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChangeYByNBrick.java @@ -22,16 +22,11 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -40,20 +35,16 @@ public class ChangeYByNBrick extends FormulaBrick { private static final long serialVersionUID = 1L; public ChangeYByNBrick() { - addAllowedBrickField(BrickField.Y_POSITION_CHANGE); + this(new Formula(BrickValues.CHANGE_Y_BY)); } public ChangeYByNBrick(int yMovementValue) { - initializeBrickFields(new Formula(yMovementValue)); - } - - public ChangeYByNBrick(Formula yMovement) { - initializeBrickFields(yMovement); + this(new Formula(yMovementValue)); } - private void initializeBrickFields(Formula yMovement) { - addAllowedBrickField(BrickField.Y_POSITION_CHANGE); - setFormulaWithBrickField(BrickField.Y_POSITION_CHANGE, yMovement); + public ChangeYByNBrick(Formula formula) { + addAllowedBrickField(BrickField.Y_POSITION_CHANGE, R.id.brick_change_y_edit_text); + setFormulaWithBrickField(BrickField.Y_POSITION_CHANGE, formula); } @Override @@ -66,33 +57,10 @@ public int getViewResource() { return R.layout.brick_change_y; } - @Override - public View getView(Context context) { - super.getView(context); - TextView editY = view.findViewById(R.id.brick_change_y_edit_text); - getFormulaWithBrickField(BrickField.Y_POSITION_CHANGE).setTextFieldId(R.id.brick_change_y_edit_text); - getFormulaWithBrickField(BrickField.Y_POSITION_CHANGE).refreshTextField(view); - editY.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textYMovement = prototypeView.findViewById(R.id.brick_change_y_edit_text); - textYMovement.setText(formatNumberForPrototypeView(BrickValues.CHANGE_Y_BY)); - return prototypeView; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory() .createChangeYByNAction(sprite, getFormulaWithBrickField(BrickField.Y_POSITION_CHANGE))); return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.Y_POSITION_CHANGE); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChooseCameraBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChooseCameraBrick.java index f0e1c2fe83f..92e7f34242f 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChooseCameraBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ChooseCameraBrick.java @@ -37,8 +37,6 @@ public class ChooseCameraBrick extends BrickBaseType { - private transient View prototypeView; - private int spinnerSelectionID; private static final int BACK = 0; private static final int FRONT = 1; @@ -59,12 +57,10 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - Spinner videoSpinner = (Spinner) view.findViewById(R.id.brick_choose_camera_spinner); + Spinner videoSpinner = view.findViewById(R.id.brick_choose_camera_spinner); ArrayAdapter spinnerAdapter = createArrayAdapter(context); - videoSpinner.setAdapter(spinnerAdapter); - videoSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override @@ -78,16 +74,14 @@ public void onNothingSelected(AdapterView adapterView) { }); videoSpinner.setSelection(spinnerSelectionID); - return view; } @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - - Spinner setVideoSpinner = (Spinner) prototypeView.findViewById(R.id.brick_choose_camera_spinner); + View prototypeView = super.getPrototypeView(context); + Spinner setVideoSpinner = prototypeView.findViewById(R.id.brick_choose_camera_spinner); ArrayAdapter spinnerAdapter = createArrayAdapter(context); setVideoSpinner.setAdapter(spinnerAdapter); setVideoSpinner.setSelection(spinnerSelectionID); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DeleteItemOfUserListBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DeleteItemOfUserListBrick.java index ee6d98d4ec9..e4e10413cda 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DeleteItemOfUserListBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DeleteItemOfUserListBrick.java @@ -25,7 +25,6 @@ import android.content.Context; import android.view.View; import android.widget.Spinner; -import android.widget.TextView; import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.R; @@ -36,7 +35,6 @@ import org.catrobat.catroid.formulaeditor.UserList; import org.catrobat.catroid.ui.adapter.DataAdapter; import org.catrobat.catroid.ui.adapter.UserListAdapterWrapper; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -45,27 +43,27 @@ public class DeleteItemOfUserListBrick extends UserListBrick { private static final long serialVersionUID = 1L; public DeleteItemOfUserListBrick() { - addAllowedBrickField(BrickField.LIST_DELETE_ITEM); + this(new Formula(BrickValues.DELETE_ITEM_OF_USERLIST)); } - public DeleteItemOfUserListBrick(Formula userListFormula, UserList userList) { - initializeBrickFields(userListFormula); - this.userList = userList; + public DeleteItemOfUserListBrick(Integer item) { + this(new Formula(item)); } - public DeleteItemOfUserListBrick(Integer value) { - initializeBrickFields(new Formula(value)); + public DeleteItemOfUserListBrick(Formula formula, UserList userList) { + this(formula); + this.userList = userList; } - private void initializeBrickFields(Formula listAddItemFormula) { - addAllowedBrickField(BrickField.LIST_DELETE_ITEM); - setFormulaWithBrickField(BrickField.LIST_DELETE_ITEM, listAddItemFormula); + public DeleteItemOfUserListBrick(Formula formula) { + addAllowedBrickField(BrickField.LIST_DELETE_ITEM, R.id.brick_delete_item_of_userlist_edit_text); + setFormulaWithBrickField(BrickField.LIST_DELETE_ITEM, formula); } @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createDeleteItemOfUserListAction(sprite, - getFormulaWithBrickField(BrickField.LIST_DELETE_ITEM), userList)); + sequence.addAction(sprite.getActionFactory() + .createDeleteItemOfUserListAction(sprite, getFormulaWithBrickField(BrickField.LIST_DELETE_ITEM), userList)); return null; } @@ -77,22 +75,16 @@ public int getViewResource() { @Override public View getView(final Context context) { super.getView(context); - TextView textField = (TextView) view.findViewById(R.id.brick_delete_item_of_userlist_edit_text); - getFormulaWithBrickField(BrickField.LIST_DELETE_ITEM).setTextFieldId(R.id.brick_delete_item_of_userlist_edit_text); - getFormulaWithBrickField(BrickField.LIST_DELETE_ITEM).refreshTextField(view); - - textField.setOnClickListener(this); - Spinner userListSpinner = (Spinner) view.findViewById(R.id.delete_item_of_userlist_spinner); + Spinner userListSpinner = view.findViewById(R.id.delete_item_of_userlist_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyEditedScene().getDataContainer() .createDataAdapter(context, ProjectManager.getInstance().getCurrentSprite()); + UserListAdapterWrapper userListAdapterWrapper = new UserListAdapterWrapper(context, dataAdapter); userListAdapterWrapper.setItemLayout(android.R.layout.simple_spinner_item, android.R.id.text1); userListSpinner.setAdapter(userListAdapterWrapper); - setSpinnerSelection(userListSpinner, null); - userListSpinner.setOnTouchListener(createSpinnerOnTouchListener()); userListSpinner.setOnItemSelectedListener(createListSpinnerItemSelectedListener()); return view; @@ -101,7 +93,8 @@ public View getView(final Context context) { @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - Spinner userListSpinner = (Spinner) prototypeView.findViewById(R.id.delete_item_of_userlist_spinner); + + Spinner userListSpinner = prototypeView.findViewById(R.id.delete_item_of_userlist_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyEditedScene().getDataContainer() .createDataAdapter(context, ProjectManager.getInstance().getCurrentSprite()); @@ -112,10 +105,6 @@ public View getPrototypeView(Context context) { userListSpinner.setAdapter(userListAdapterWrapper); setSpinnerSelection(userListSpinner, null); - TextView textAddItemToList = (TextView) prototypeView - .findViewById(R.id.brick_delete_item_of_userlist_edit_text); - textAddItemToList.setText(formatNumberForPrototypeView(BrickValues.DELETE_ITEM_OF_USERLIST)); - return prototypeView; } @@ -124,9 +113,4 @@ public void onNewList(UserList userList) { Spinner spinner = view.findViewById(R.id.delete_item_of_userlist_spinner); setSpinnerSelection(spinner, userList); } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.LIST_DELETE_ITEM); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneBasicControlBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneBasicControlBrick.java deleted file mode 100644 index c4ce1cf4004..00000000000 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneBasicControlBrick.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Catroid: An on-device visual programming system for Android devices - * Copyright (C) 2010-2018 The Catrobat Team - * () - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * An additional term exception under section 7 of the GNU Affero - * General Public License, version 3, is available at - * http://developer.catrobat.org/license_additional_term - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -package org.catrobat.catroid.content.bricks; - -import android.content.Context; -import android.view.View; -import android.widget.TextView; - -import org.catrobat.catroid.R; - -public abstract class DroneBasicControlBrick extends BrickBaseType { - - @Override - public int getViewResource() { - return R.layout.brick_drone_control; - } - - @Override - public View getView(Context context) { - super.getView(context); - TextView label = (TextView) view.findViewById(R.id.ValueTextViewControl); - label.setText(getBrickLabel(view)); - - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - - TextView label = (TextView) prototypeView.findViewById(R.id.ValueTextViewControl); - label.setText(getBrickLabel(prototypeView)); - - return prototypeView; - } - - @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; - } - - protected abstract String getBrickLabel(View view); -} diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneEmergencyBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneEmergencyBrick.java index 0bc8f21c369..f235d6e8e35 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneEmergencyBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneEmergencyBrick.java @@ -22,9 +22,6 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; - import org.catrobat.catroid.R; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; @@ -32,24 +29,20 @@ import java.util.List; public class DroneEmergencyBrick extends BrickBaseType { + private static final long serialVersionUID = 1L; - @Override - public int getViewResource() { - return R.layout.brick_drone_emergency; + public DroneEmergencyBrick() { } @Override - public View getView(Context context) { - super.getView(context); - return view; + public int getViewResource() { + return R.layout.brick_drone_emergency; } @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - - return prototypeView; + public int getRequiredResources() { + return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; } @Override @@ -57,10 +50,5 @@ public List addActionToSequence(Sprite sprite, ScriptSeque sequence.addAction(sprite.getActionFactory().createDroneGoEmergencyAction()); return null; } - - @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneFlipBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneFlipBrick.java index c5dac33c8ef..971c6d8d157 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneFlipBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneFlipBrick.java @@ -22,16 +22,14 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; - import org.catrobat.catroid.R; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import java.util.List; -public class DroneFlipBrick extends BrickBaseType{ +public class DroneFlipBrick extends BrickBaseType { + private static final long serialVersionUID = 1L; @Override @@ -40,16 +38,8 @@ public int getViewResource() { } @Override - public View getView(Context context) { - super.getView(context); - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - - return prototypeView; + public int getRequiredResources() { + return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; } @Override @@ -57,9 +47,4 @@ public List addActionToSequence(Sprite sprite, ScriptSeque sequence.addAction(sprite.getActionFactory().createDroneFlipAction()); return null; } - - @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneMoveBackwardBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneMoveBackwardBrick.java index 0ee62f4e574..16c73cf7ea9 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneMoveBackwardBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneMoveBackwardBrick.java @@ -24,14 +24,12 @@ import android.content.Context; import android.view.View; -import android.widget.TextView; import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -39,82 +37,51 @@ public class DroneMoveBackwardBrick extends FormulaBrick { private static final long serialVersionUID = 1L; + public DroneMoveBackwardBrick() { + this(new Formula(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS / 1000.0), + new Formula(BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); + } + public DroneMoveBackwardBrick(int durationInMilliseconds, int powerInPercent) { - initializeBrickFields(new Formula(durationInMilliseconds / 1000.0), new Formula(powerInPercent)); + this(new Formula(durationInMilliseconds / 1000.0), new Formula(powerInPercent)); } - private void initializeBrickFields(Formula durationInSeconds, Formula powerInPercent) { - addAllowedBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - addAllowedBrickField(BrickField.DRONE_POWER_IN_PERCENT); + public DroneMoveBackwardBrick(Formula durationInSeconds, Formula powerInPercent) { + addAllowedBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS, R.id.brick_drone_move_backward_edit_text_second); + addAllowedBrickField(BrickField.DRONE_POWER_IN_PERCENT, R.id.brick_drone_move_backward_edit_text_power); setFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS, durationInSeconds); setFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT, powerInPercent); } @Override - public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createDroneMoveBackwardAction(sprite, - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS), - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT))); - return null; - } - - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_drone_move_backward_edit_text_power: - FormulaEditorFragment.showFragment(view, this, BrickField.DRONE_POWER_IN_PERCENT); - break; - case R.id.brick_drone_move_backward_edit_text_second: - default: - FormulaEditorFragment.showFragment(view, this, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - break; - } + public int getViewResource() { + return R.layout.brick_drone_move_backward; } @Override - public int getViewResource() { - return R.layout.brick_drone_move_backward; + public View getPrototypeView(Context context) { + View prototypeView = super.getPrototypeView(context); + setSecondsLabel(prototypeView, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); + return prototypeView; } @Override public View getView(Context context) { super.getView(context); - setSecondText(view, R.id.brick_drone_move_backward_text_second, R.id - .brick_drone_move_backward_edit_text_second, BrickField - .DRONE_TIME_TO_FLY_IN_SECONDS); - - TextView editTime = (TextView) view.findViewById(R.id.brick_drone_move_backward_edit_text_second); - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS) - .setTextFieldId(R.id.brick_drone_move_backward_edit_text_second); - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS).refreshTextField(view); - editTime.setOnClickListener(this); - - TextView editPower = (TextView) view.findViewById(R.id.brick_drone_move_backward_edit_text_power); - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT) - .setTextFieldId(R.id.brick_drone_move_backward_edit_text_power); - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT).refreshTextField(view); - editPower.setOnClickListener(this); - + setSecondsLabel(view, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); return view; } @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textTime = (TextView) prototypeView.findViewById(R.id - .brick_drone_move_backward_edit_text_second); - - TextView textPower = (TextView) prototypeView.findViewById(R.id - .brick_drone_move_backward_edit_text_power); - - textTime.setText(formatNumberForPrototypeView(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS / 1000)); - - textPower.setText(formatNumberForPrototypeView(BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); - setSecondText(context, prototypeView, R.id.brick_drone_move_backward_text_second); - return prototypeView; + public int getRequiredResources() { + return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; } @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; + public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { + sequence.addAction(sprite.getActionFactory().createDroneMoveBackwardAction(sprite, + getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS), + getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT))); + return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneMoveDownBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneMoveDownBrick.java index a41e64730d1..7bba8c875df 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneMoveDownBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneMoveDownBrick.java @@ -24,97 +24,65 @@ import android.content.Context; import android.view.View; -import android.widget.TextView; import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; public class DroneMoveDownBrick extends FormulaBrick { + private static final long serialVersionUID = 1L; + public DroneMoveDownBrick() { + this(new Formula(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS / 1000.0), + new Formula(BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); + } + public DroneMoveDownBrick(int durationInMilliseconds, int powerInPercent) { - initializeBrickFields(new Formula(durationInMilliseconds / 1000.0), new Formula(powerInPercent)); + this(new Formula(durationInMilliseconds / 1000.0), new Formula(powerInPercent)); } - private void initializeBrickFields(Formula durationInSeconds, Formula powerInPercent) { - addAllowedBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - addAllowedBrickField(BrickField.DRONE_POWER_IN_PERCENT); + public DroneMoveDownBrick(Formula durationInSeconds, Formula powerInPercent) { + addAllowedBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS, R.id.brick_drone_move_down_edit_text_second); + addAllowedBrickField(BrickField.DRONE_POWER_IN_PERCENT, R.id.brick_drone_move_down_edit_text_power); setFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS, durationInSeconds); setFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT, powerInPercent); } @Override - public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createDroneMoveDownAction(sprite, - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS), - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT))); - return null; - } - - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_drone_move_down_edit_text_power: - FormulaEditorFragment.showFragment(view, this, BrickField.DRONE_POWER_IN_PERCENT); - break; - case R.id.brick_drone_move_down_edit_text_second: - default: - FormulaEditorFragment.showFragment(view, this, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - break; - } + public int getViewResource() { + return R.layout.brick_drone_move_down; } @Override - public int getViewResource() { - return R.layout.brick_drone_move_down; + public View getPrototypeView(Context context) { + View prototypeView = super.getPrototypeView(context); + setSecondsLabel(prototypeView, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); + return prototypeView; } @Override public View getView(Context context) { super.getView(context); - setSecondText(view, R.id.brick_drone_move_down_text_second, R.id - .brick_drone_move_down_edit_text_second, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - - TextView editTime = (TextView) view.findViewById(R.id.brick_drone_move_down_edit_text_second); - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS) - .setTextFieldId(R.id.brick_drone_move_down_edit_text_second); - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS).refreshTextField(view); - editTime.setOnClickListener(this); - - TextView editPower = (TextView) view.findViewById(R.id.brick_drone_move_down_edit_text_power); - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT) - .setTextFieldId(R.id.brick_drone_move_down_edit_text_power); - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT).refreshTextField(view); - editPower.setOnClickListener(this); - + setSecondsLabel(view, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); return view; } @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textTime = (TextView) prototypeView.findViewById(R.id - .brick_drone_move_down_edit_text_second); - - TextView textPower = (TextView) prototypeView.findViewById(R.id - .brick_drone_move_down_edit_text_power); - - textTime.setText(formatNumberForPrototypeView(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS / 1000)); - - textPower.setText(formatNumberForPrototypeView(BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); - - setSecondText(context, prototypeView, R.id.brick_drone_move_down_text_second); - return prototypeView; + public int getRequiredResources() { + return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; } @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; + public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { + sequence.addAction(sprite.getActionFactory().createDroneMoveDownAction(sprite, + getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS), + getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT))); + return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneMoveForwardBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneMoveForwardBrick.java index 1b330c49b42..6341750016c 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneMoveForwardBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneMoveForwardBrick.java @@ -24,96 +24,64 @@ import android.content.Context; import android.view.View; -import android.widget.TextView; import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; public class DroneMoveForwardBrick extends FormulaBrick { + private static final long serialVersionUID = 1L; + public DroneMoveForwardBrick() { + this(new Formula(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS / 1000.0), + new Formula(BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); + } + public DroneMoveForwardBrick(int durationInMilliseconds, int powerInPercent) { - initializeBrickFields(new Formula(durationInMilliseconds / 1000.0), new Formula(powerInPercent)); + this(new Formula(durationInMilliseconds / 1000.0), new Formula(powerInPercent)); } - private void initializeBrickFields(Formula durationInSeconds, Formula powerInPercent) { - addAllowedBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - addAllowedBrickField(BrickField.DRONE_POWER_IN_PERCENT); + public DroneMoveForwardBrick(Formula durationInSeconds, Formula powerInPercent) { + addAllowedBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS, R.id.brick_drone_move_forward_edit_text_second); + addAllowedBrickField(BrickField.DRONE_POWER_IN_PERCENT, R.id.brick_drone_move_forward_edit_text_power); setFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS, durationInSeconds); setFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT, powerInPercent); } @Override - public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createDroneMoveForwardAction(sprite, - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS), - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT))); - return null; - } - - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_drone_move_forward_edit_text_power: - FormulaEditorFragment.showFragment(view, this, BrickField.DRONE_POWER_IN_PERCENT); - break; - case R.id.brick_drone_move_forward_edit_text_second: - default: - FormulaEditorFragment.showFragment(view, this, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - break; - } + public int getViewResource() { + return R.layout.brick_drone_move_forward; } @Override - public int getViewResource() { - return R.layout.brick_drone_move_forward; + public View getPrototypeView(Context context) { + View prototypeView = super.getPrototypeView(context); + setSecondsLabel(prototypeView, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); + return prototypeView; } @Override public View getView(Context context) { super.getView(context); - setSecondText(view, R.id.brick_drone_move_forward_text_second, R.id - .brick_drone_move_forward_edit_text_second, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - - TextView editTime = (TextView) view.findViewById(R.id.brick_drone_move_forward_edit_text_second); - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS) - .setTextFieldId(R.id.brick_drone_move_forward_edit_text_second); - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS).refreshTextField(view); - editTime.setOnClickListener(this); - - TextView editPower = (TextView) view.findViewById(R.id.brick_drone_move_forward_edit_text_power); - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT) - .setTextFieldId(R.id.brick_drone_move_forward_edit_text_power); - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT).refreshTextField(view); - editPower.setOnClickListener(this); - + setSecondsLabel(view, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); return view; } @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textTime = (TextView) prototypeView.findViewById(R.id - .brick_drone_move_forward_edit_text_second); - - TextView textPower = (TextView) prototypeView.findViewById(R.id - .brick_drone_move_forward_edit_text_power); - - textTime.setText(formatNumberForPrototypeView(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS / 1000)); - - textPower.setText(formatNumberForPrototypeView(BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); - - setSecondText(context, prototypeView, R.id.brick_drone_move_forward_text_second); - return prototypeView; + public int getRequiredResources() { + return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; } @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; + public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { + sequence.addAction(sprite.getActionFactory().createDroneMoveForwardAction(sprite, + getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS), + getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT))); + return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneMoveLeftBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneMoveLeftBrick.java index 0dd02f32ea5..d700273fe28 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneMoveLeftBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneMoveLeftBrick.java @@ -24,97 +24,65 @@ import android.content.Context; import android.view.View; -import android.widget.TextView; import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; public class DroneMoveLeftBrick extends FormulaBrick { + private static final long serialVersionUID = 1L; + public DroneMoveLeftBrick() { + this(new Formula(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS / 1000.0), + new Formula(BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); + } + public DroneMoveLeftBrick(int durationInMilliseconds, int powerInPercent) { - initializeBrickFields(new Formula(durationInMilliseconds / 1000.0), new Formula(powerInPercent)); + this(new Formula(durationInMilliseconds / 1000.0), new Formula(powerInPercent)); } - private void initializeBrickFields(Formula durationInSeconds, Formula powerInPercent) { - addAllowedBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - addAllowedBrickField(BrickField.DRONE_POWER_IN_PERCENT); + public DroneMoveLeftBrick(Formula durationInSeconds, Formula powerInPercent) { + addAllowedBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS, R.id.brick_drone_move_left_edit_text_second); + addAllowedBrickField(BrickField.DRONE_POWER_IN_PERCENT, R.id.brick_drone_move_left_edit_text_power); setFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS, durationInSeconds); setFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT, powerInPercent); } @Override - public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createDroneMoveLeftAction(sprite, - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS), - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT))); - return null; - } - - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_drone_move_left_edit_text_power: - FormulaEditorFragment.showFragment(view, this, BrickField.DRONE_POWER_IN_PERCENT); - break; - case R.id.brick_drone_move_left_edit_text_second: - default: - FormulaEditorFragment.showFragment(view, this, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - break; - } + public int getViewResource() { + return R.layout.brick_drone_move_left; } @Override - public int getViewResource() { - return R.layout.brick_drone_move_left; + public View getPrototypeView(Context context) { + View prototypeView = super.getPrototypeView(context); + setSecondsLabel(prototypeView, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); + return prototypeView; } @Override public View getView(Context context) { super.getView(context); - setSecondText(view, R.id.brick_drone_move_left_text_second, R.id.brick_drone_move_left_edit_text_second, BrickField - .DRONE_TIME_TO_FLY_IN_SECONDS); - - TextView editTime = (TextView) view.findViewById(R.id.brick_drone_move_left_edit_text_second); - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS) - .setTextFieldId(R.id.brick_drone_move_left_edit_text_second); - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS).refreshTextField(view); - editTime.setOnClickListener(this); - - TextView editPower = (TextView) view.findViewById(R.id.brick_drone_move_left_edit_text_power); - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT) - .setTextFieldId(R.id.brick_drone_move_left_edit_text_power); - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT).refreshTextField(view); - editPower.setOnClickListener(this); - + setSecondsLabel(view, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); return view; } @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textTime = (TextView) prototypeView.findViewById(R.id - .brick_drone_move_left_edit_text_second); - - TextView textPower = (TextView) prototypeView.findViewById(R.id - .brick_drone_move_left_edit_text_power); - - textTime.setText(formatNumberForPrototypeView(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS / 1000)); - - textPower.setText(formatNumberForPrototypeView(BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); - - setSecondText(context, prototypeView, R.id.brick_drone_move_left_text_second); - return prototypeView; + public int getRequiredResources() { + return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; } @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; + public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { + sequence.addAction(sprite.getActionFactory().createDroneMoveLeftAction(sprite, + getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS), + getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT))); + return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneMoveRightBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneMoveRightBrick.java index 48a6fdc066a..de9f43e4698 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneMoveRightBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneMoveRightBrick.java @@ -24,97 +24,64 @@ import android.content.Context; import android.view.View; -import android.widget.TextView; import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; public class DroneMoveRightBrick extends FormulaBrick { + private static final long serialVersionUID = 1L; + DroneMoveRightBrick() { + this(new Formula(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS / 1000.0), + new Formula(BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); + } + public DroneMoveRightBrick(int durationInMilliseconds, int powerInPercent) { - initializeBrickFields(new Formula(durationInMilliseconds / 1000.0), new Formula(powerInPercent)); + this(new Formula(durationInMilliseconds / 1000.0), new Formula(powerInPercent)); } - private void initializeBrickFields(Formula durationInSeconds, Formula powerInPercent) { - addAllowedBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - addAllowedBrickField(BrickField.DRONE_POWER_IN_PERCENT); + public DroneMoveRightBrick(Formula durationInSeconds, Formula powerInPercent) { + addAllowedBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS, R.id.brick_drone_move_right_edit_text_second); + addAllowedBrickField(BrickField.DRONE_POWER_IN_PERCENT, R.id.brick_drone_move_right_edit_text_power); setFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS, durationInSeconds); setFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT, powerInPercent); } @Override - public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createDroneMoveRightAction(sprite, - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS), - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT))); - return null; - } - - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_drone_move_right_edit_text_power: - FormulaEditorFragment.showFragment(view, this, BrickField.DRONE_POWER_IN_PERCENT); - break; - case R.id.brick_drone_move_right_edit_text_second: - default: - FormulaEditorFragment.showFragment(view, this, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - break; - } + public int getViewResource() { + return R.layout.brick_drone_move_right; } @Override - public int getViewResource() { - return R.layout.brick_drone_move_right; + public View getPrototypeView(Context context) { + View prototypeView = super.getPrototypeView(context); + setSecondsLabel(prototypeView, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); + return prototypeView; } @Override public View getView(Context context) { super.getView(context); - setSecondText(view, R.id.brick_drone_move_right_text_second, R.id - .brick_drone_move_right_edit_text_second, BrickField - .DRONE_TIME_TO_FLY_IN_SECONDS); - - TextView editTime = (TextView) view.findViewById(R.id.brick_drone_move_right_edit_text_second); - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS) - .setTextFieldId(R.id.brick_drone_move_right_edit_text_second); - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS).refreshTextField(view); - editTime.setOnClickListener(this); - - TextView editPower = (TextView) view.findViewById(R.id.brick_drone_move_right_edit_text_power); - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT) - .setTextFieldId(R.id.brick_drone_move_right_edit_text_power); - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT).refreshTextField(view); - editPower.setOnClickListener(this); - + setSecondsLabel(view, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); return view; } @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textTime = (TextView) prototypeView.findViewById(R.id - .brick_drone_move_right_edit_text_second); - - TextView textPower = (TextView) prototypeView.findViewById(R.id - .brick_drone_move_right_edit_text_power); - - textTime.setText(formatNumberForPrototypeView(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS / 1000)); - - textPower.setText(formatNumberForPrototypeView(BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); - - setSecondText(context, prototypeView, R.id.brick_drone_move_right_text_second); - return prototypeView; + public int getRequiredResources() { + return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; } @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; + public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { + sequence.addAction(sprite.getActionFactory().createDroneMoveRightAction(sprite, + getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS), + getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT))); + return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneMoveUpBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneMoveUpBrick.java index 7112428848c..674aebb10ac 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneMoveUpBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneMoveUpBrick.java @@ -24,95 +24,64 @@ import android.content.Context; import android.view.View; -import android.widget.TextView; import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; public class DroneMoveUpBrick extends FormulaBrick { + private static final long serialVersionUID = 1L; + public DroneMoveUpBrick() { + this(new Formula(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS / 1000.0), + new Formula(BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); + } + public DroneMoveUpBrick(int durationInMilliseconds, int powerInPercent) { - initializeBrickFields(new Formula(durationInMilliseconds / 1000.0), new Formula(powerInPercent)); + this(new Formula(durationInMilliseconds / 1000.0), new Formula(powerInPercent)); } - private void initializeBrickFields(Formula durationInSeconds, Formula powerInPercent) { - addAllowedBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - addAllowedBrickField(BrickField.DRONE_POWER_IN_PERCENT); + public DroneMoveUpBrick(Formula durationInSeconds, Formula powerInPercent) { + addAllowedBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS, R.id.brick_drone_move_up_edit_text_second); + addAllowedBrickField(BrickField.DRONE_POWER_IN_PERCENT, R.id.brick_drone_move_up_edit_text_power); setFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS, durationInSeconds); setFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT, powerInPercent); } @Override - public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createDroneMoveUpAction(sprite, - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS), - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT))); - return null; - } - - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_drone_move_up_edit_text_power: - FormulaEditorFragment.showFragment(view, this, BrickField.DRONE_POWER_IN_PERCENT); - break; - case R.id.brick_drone_move_up_edit_text_second: - default: - FormulaEditorFragment.showFragment(view, this, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - break; - } + public int getViewResource() { + return R.layout.brick_drone_move_up; } @Override - public int getViewResource() { - return R.layout.brick_drone_move_up; + public View getPrototypeView(Context context) { + View prototypeView = super.getPrototypeView(context); + setSecondsLabel(prototypeView, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); + return prototypeView; } @Override public View getView(Context context) { super.getView(context); - setSecondText(view, R.id.brick_drone_move_up_text_second, R.id.brick_drone_move_up_edit_text_second, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - - TextView editTime = (TextView) view.findViewById(R.id.brick_drone_move_up_edit_text_second); - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS) - .setTextFieldId(R.id.brick_drone_move_up_edit_text_second); - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS).refreshTextField(view); - editTime.setOnClickListener(this); - - TextView editPower = (TextView) view.findViewById(R.id.brick_drone_move_up_edit_text_power); - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT) - .setTextFieldId(R.id.brick_drone_move_up_edit_text_power); - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT).refreshTextField(view); - editPower.setOnClickListener(this); - + setSecondsLabel(view, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); return view; } @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textTime = (TextView) prototypeView.findViewById(R.id - .brick_drone_move_up_edit_text_second); - - TextView textPower = (TextView) prototypeView.findViewById(R.id - .brick_drone_move_up_edit_text_power); - - textTime.setText(formatNumberForPrototypeView(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS / 1000)); - - textPower.setText(formatNumberForPrototypeView(BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); - - setSecondText(context, prototypeView, R.id.brick_drone_move_up_text_second); - return prototypeView; + public int getRequiredResources() { + return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; } @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; + public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { + sequence.addAction(sprite.getActionFactory().createDroneMoveUpAction(sprite, + getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS), + getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT))); + return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DronePlayLedAnimationBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DronePlayLedAnimationBrick.java index 91c948a370b..771bb93567e 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DronePlayLedAnimationBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DronePlayLedAnimationBrick.java @@ -37,9 +37,9 @@ import java.util.List; public class DronePlayLedAnimationBrick extends BrickBaseType { + private static final long serialVersionUID = 1L; - private transient View prototypeView; private String ledAnimationName; private transient ARDRONE_LED_ANIMATION ledAnimation; @@ -55,12 +55,17 @@ protected Object readResolve() { return this; } + @Override + public int getViewResource() { + return R.layout.brick_drone_play_led_animation; + } + @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); + View prototypeView = super.getPrototypeView(context); - Spinner dronePlayLedAnimationSpinner = (Spinner) prototypeView.findViewById(R.id - .brick_drone_play_led_animation_spinner); + Spinner dronePlayLedAnimationSpinner = prototypeView + .findViewById(R.id.brick_drone_play_led_animation_spinner); dronePlayLedAnimationSpinner.setFocusableInTouchMode(false); dronePlayLedAnimationSpinner.setFocusable(false); dronePlayLedAnimationSpinner.setEnabled(false); @@ -75,18 +80,13 @@ public View getPrototypeView(Context context) { return prototypeView; } - @Override - public int getViewResource() { - return R.layout.brick_drone_play_led_animation; - } - @Override public View getView(Context context) { super.getView(context); ArrayAdapter animationAdapter = ArrayAdapter.createFromResource(context, R.array.brick_drone_play_led_animation_spinner, android.R.layout.simple_spinner_item); animationAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - Spinner animationSpinner = (Spinner) view.findViewById(R.id.brick_drone_play_led_animation_spinner); + Spinner animationSpinner = view.findViewById(R.id.brick_drone_play_led_animation_spinner); animationSpinner.setAdapter(animationAdapter); animationSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @@ -111,14 +111,14 @@ public void onNothingSelected(AdapterView arg0) { } @Override - public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createDronePlayLedAnimationAction(ledAnimation)); - return null; + public int getRequiredResources() { + return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; } @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; + public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { + sequence.addAction(sprite.getActionFactory().createDronePlayLedAnimationAction(ledAnimation)); + return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneSpinnerBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneSpinnerBrick.java deleted file mode 100644 index 07fa9873a08..00000000000 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneSpinnerBrick.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Catroid: An on-device visual programming system for Android devices - * Copyright (C) 2010-2018 The Catrobat Team - * () - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * An additional term exception under section 7 of the GNU Affero - * General Public License, version 3, is available at - * http://developer.catrobat.org/license_additional_term - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -package org.catrobat.catroid.content.bricks; - -import android.content.Context; -import android.util.Log; -import android.view.View; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.Spinner; -import android.widget.TextView; - -import org.catrobat.catroid.R; - -import java.util.ArrayList; - -public abstract class DroneSpinnerBrick extends BrickBaseType { - private static final String TAG = DroneSpinnerBrick.class.getSimpleName(); - - protected transient AdapterView adapterView; - protected String selectedMessage; - protected int spinnerPosition = 0; - - @Override - public int getViewResource() { - return R.layout.brick_drone_spinner; - } - - @Override - public View getView(final Context context) { - super.getView(context); - Spinner spinner = (Spinner) view.findViewById(R.id.brick_drone_spinner_ID); - spinner.setFocusableInTouchMode(false); - spinner.setFocusable(false); - - ArrayAdapter arrayAdapter = new ArrayAdapter<>(view.getContext(), - android.R.layout.simple_spinner_item, getSpinnerItems(view)); - arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - - spinner.setAdapter(arrayAdapter); - - spinner.setAdapter(arrayAdapter); - spinner.setSelection(spinnerPosition); - - spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView parent, View view, int position, long id) { - selectedMessage = parent.getItemAtPosition(position).toString(); - spinnerPosition = position; - Log.d(TAG, "selected message = " - + selectedMessage + " on position: " + spinnerPosition); - } - - @Override - public void onNothingSelected(AdapterView arg0) { - } - }); - - TextView label = (TextView) view.findViewById(R.id.brick_drone_spinner_label); - label.setText(getBrickLabel(view)); - - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - - Spinner spinner = (Spinner) prototypeView.findViewById(R.id.brick_drone_spinner_ID); - - ArrayAdapter arrayAdapter = new ArrayAdapter<>(prototypeView.getContext(), - android.R.layout.simple_spinner_item, getSpinnerItems(prototypeView)); - arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - - spinner.setAdapter(arrayAdapter); - spinner.setSelection(spinnerPosition); - - TextView label = (TextView) prototypeView.findViewById(R.id.brick_drone_spinner_label); - label.setText(getBrickLabel(prototypeView)); - - return prototypeView; - } - - public void setSpinnerPosition(int spinnerPosition) { - this.spinnerPosition = spinnerPosition; - } - - @Override - public int getRequiredResources() { - return ARDRONE_SUPPORT; - } - - protected abstract String getBrickLabel(View view); - - protected abstract ArrayList getSpinnerItems(View view); -} diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneSwitchCameraBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneSwitchCameraBrick.java index d895511e4f4..33bfc6563a1 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneSwitchCameraBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneSwitchCameraBrick.java @@ -22,9 +22,6 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; - import org.catrobat.catroid.R; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; @@ -32,24 +29,20 @@ import java.util.List; public class DroneSwitchCameraBrick extends BrickBaseType { + private static final long serialVersionUID = 1L; - @Override - public int getViewResource() { - return R.layout.brick_drone_switch_camera; + public DroneSwitchCameraBrick() { } @Override - public View getView(Context context) { - super.getView(context); - return view; + public int getViewResource() { + return R.layout.brick_drone_switch_camera; } @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - - return prototypeView; + public int getRequiredResources() { + return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; } @Override @@ -57,10 +50,5 @@ public List addActionToSequence(Sprite sprite, ScriptSeque sequence.addAction(sprite.getActionFactory().createDroneSwitchCameraAction()); return null; } - - @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneTakeOffLandBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneTakeOffLandBrick.java index ed4a7a74a54..1e31e0b747b 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneTakeOffLandBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneTakeOffLandBrick.java @@ -22,34 +22,27 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; - import org.catrobat.catroid.R; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import java.util.List; -public class DroneTakeOffLandBrick extends BrickBaseType{ +public class DroneTakeOffLandBrick extends BrickBaseType { + private static final long serialVersionUID = 1L; - @Override - public int getViewResource() { - return R.layout.brick_drone_takeoff_land; + public DroneTakeOffLandBrick() { } @Override - public View getView(Context context) { - super.getView(context); - return view; + public int getViewResource() { + return R.layout.brick_drone_takeoff_land; } @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - - return prototypeView; + public int getRequiredResources() { + return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; } @Override @@ -57,9 +50,4 @@ public List addActionToSequence(Sprite sprite, ScriptSeque sequence.addAction(sprite.getActionFactory().createDroneTakeOffAndLandAction()); return null; } - - @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneTurnLeftBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneTurnLeftBrick.java index d99dad71de5..af80ef0dc2f 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneTurnLeftBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneTurnLeftBrick.java @@ -24,95 +24,58 @@ import android.content.Context; import android.view.View; -import android.widget.TextView; import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; public class DroneTurnLeftBrick extends FormulaBrick { + private static final long serialVersionUID = 1L; public DroneTurnLeftBrick(int durationInMilliseconds, int powerInPercent) { - initializeBrickFields(new Formula(durationInMilliseconds / 1000.0), new Formula(powerInPercent)); + this(new Formula(durationInMilliseconds / 1000.0), new Formula(powerInPercent)); } - private void initializeBrickFields(Formula durationInSeconds, Formula powerInPercent) { - addAllowedBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - addAllowedBrickField(BrickField.DRONE_POWER_IN_PERCENT); + public DroneTurnLeftBrick(Formula durationInSeconds, Formula powerInPercent) { + addAllowedBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS, R.id.brick_drone_turn_left_edit_text_second); + addAllowedBrickField(BrickField.DRONE_POWER_IN_PERCENT, R.id.brick_drone_turn_left_edit_text_power); setFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS, durationInSeconds); setFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT, powerInPercent); } @Override - public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createDroneTurnLeftAction(sprite, - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS), - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT))); - return null; - } - - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_drone_turn_left_edit_text_power: - FormulaEditorFragment.showFragment(view, this, BrickField.DRONE_POWER_IN_PERCENT); - break; - case R.id.brick_drone_turn_left_edit_text_second: - default: - FormulaEditorFragment.showFragment(view, this, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - break; - } + public int getViewResource() { + return R.layout.brick_drone_turn_left; } @Override - public int getViewResource() { - return R.layout.brick_drone_turn_left; + public View getPrototypeView(Context context) { + View prototypeView = super.getPrototypeView(context); + setSecondsLabel(prototypeView, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); + return prototypeView; } @Override public View getView(Context context) { super.getView(context); - setSecondText(view, R.id.brick_drone_turn_left_text_second, R.id.brick_drone_turn_left_edit_text_second, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - - TextView editTime = (TextView) view.findViewById(R.id.brick_drone_turn_left_edit_text_second); - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS) - .setTextFieldId(R.id.brick_drone_turn_left_edit_text_second); - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS).refreshTextField(view); - editTime.setOnClickListener(this); - - TextView editPower = (TextView) view.findViewById(R.id.brick_drone_turn_left_edit_text_power); - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT) - .setTextFieldId(R.id.brick_drone_turn_left_edit_text_power); - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT).refreshTextField(view); - editPower.setOnClickListener(this); - + setSecondsLabel(view, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); return view; } @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textTime = (TextView) prototypeView.findViewById(R.id - .brick_drone_turn_left_edit_text_second); - - TextView textPower = (TextView) prototypeView.findViewById(R.id - .brick_drone_turn_left_edit_text_power); - - textTime.setText(formatNumberForPrototypeView(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS / 1000)); - - textPower.setText(formatNumberForPrototypeView(BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); - - setSecondText(context, prototypeView, R.id.brick_drone_turn_left_text_second); - return prototypeView; + public int getRequiredResources() { + return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; } @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; + public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { + sequence.addAction(sprite.getActionFactory().createDroneTurnLeftAction(sprite, + getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS), + getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT))); + return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneTurnLeftMagnetoBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneTurnLeftMagnetoBrick.java deleted file mode 100644 index 500c3174f73..00000000000 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneTurnLeftMagnetoBrick.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Catroid: An on-device visual programming system for Android devices - * Copyright (C) 2010-2018 The Catrobat Team - * () - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * An additional term exception under section 7 of the GNU Affero - * General Public License, version 3, is available at - * http://developer.catrobat.org/license_additional_term - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -package org.catrobat.catroid.content.bricks; - -import android.content.Context; -import android.view.View; -import android.widget.TextView; - -import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; -import org.catrobat.catroid.content.Sprite; -import org.catrobat.catroid.content.actions.ScriptSequenceAction; -import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; - -import java.util.List; - -public class DroneTurnLeftMagnetoBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - - public DroneTurnLeftMagnetoBrick(int durationInMilliseconds, int powerInPercent) { - initializeBrickFields(new Formula(durationInMilliseconds / 1000.0), new Formula(powerInPercent)); - } - - private void initializeBrickFields(Formula durationInSeconds, Formula powerInPercent) { - addAllowedBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - addAllowedBrickField(BrickField.DRONE_POWER_IN_PERCENT); - setFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS, durationInSeconds); - setFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT, powerInPercent); - } - - @Override - public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createDroneTurnLeftMagnetoAction(sprite, - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS), - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT))); - return null; - } - - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_drone_turn_left_magneto_edit_text_power: - FormulaEditorFragment.showFragment(view, this, BrickField.DRONE_POWER_IN_PERCENT); - break; - case R.id.brick_drone_turn_left_magneto_edit_text_second: - default: - FormulaEditorFragment.showFragment(view, this, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - break; - } - } - - @Override - public int getViewResource() { - return R.layout.brick_drone_turn_left_magneto; - } - - @Override - public View getView(Context context) { - super.getView(context); - setSecondText(view, R.id.brick_drone_turn_left_magneto_text_second, R.id.brick_drone_turn_left_magneto_edit_text_second, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - - TextView editTime = (TextView) view.findViewById(R.id.brick_drone_turn_left_magneto_edit_text_second); - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS) - .setTextFieldId(R.id.brick_drone_turn_left_magneto_edit_text_second); - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS).refreshTextField(view); - editTime.setOnClickListener(this); - - TextView editPower = (TextView) view.findViewById(R.id.brick_drone_turn_left_magneto_edit_text_power); - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT) - .setTextFieldId(R.id.brick_drone_turn_left_magneto_edit_text_power); - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT).refreshTextField(view); - editPower.setOnClickListener(this); - - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textTime = (TextView) prototypeView.findViewById(R.id - .brick_drone_turn_left_magneto_edit_text_second); - - TextView textPower = (TextView) prototypeView.findViewById(R.id - .brick_drone_turn_left_magneto_edit_text_power); - - textTime.setText(formatNumberForPrototypeView(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS / 1000)); - - textPower.setText(formatNumberForPrototypeView(BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); - setSecondText(context, prototypeView, R.id.brick_drone_turn_left_magneto_text_second); - return prototypeView; - } - - @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; - } -} diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneTurnRightBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneTurnRightBrick.java index 6e6e0b75cff..54b76db5ba4 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneTurnRightBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneTurnRightBrick.java @@ -24,95 +24,58 @@ import android.content.Context; import android.view.View; -import android.widget.TextView; import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; public class DroneTurnRightBrick extends FormulaBrick { + private static final long serialVersionUID = 1L; public DroneTurnRightBrick(int durationInMilliseconds, int powerInPercent) { - initializeBrickFields(new Formula(durationInMilliseconds / 1000.0), new Formula(powerInPercent)); + this(new Formula(durationInMilliseconds / 1000.0), new Formula(powerInPercent)); } - private void initializeBrickFields(Formula durationInSeconds, Formula powerInPercent) { - addAllowedBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - addAllowedBrickField(BrickField.DRONE_POWER_IN_PERCENT); + public DroneTurnRightBrick(Formula durationInSeconds, Formula powerInPercent) { + addAllowedBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS, R.id.brick_drone_turn_right_edit_text_second); + addAllowedBrickField(BrickField.DRONE_POWER_IN_PERCENT, R.id.brick_drone_turn_right_edit_text_power); setFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS, durationInSeconds); setFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT, powerInPercent); } @Override - public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createDroneTurnRightAction(sprite, - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS), - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT))); - return null; - } - - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_drone_turn_right_edit_text_power: - FormulaEditorFragment.showFragment(view, this, BrickField.DRONE_POWER_IN_PERCENT); - break; - case R.id.brick_drone_turn_right_edit_text_second: - default: - FormulaEditorFragment.showFragment(view, this, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - break; - } + public int getViewResource() { + return R.layout.brick_drone_turn_right; } @Override - public int getViewResource() { - return R.layout.brick_drone_turn_right; + public View getPrototypeView(Context context) { + View prototypeView = super.getPrototypeView(context); + setSecondsLabel(prototypeView, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); + return prototypeView; } @Override public View getView(Context context) { super.getView(context); - setSecondText(view, R.id.brick_drone_turn_right_text_second, R.id.brick_drone_turn_right_edit_text_second, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - - TextView editTime = (TextView) view.findViewById(R.id.brick_drone_turn_right_edit_text_second); - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS) - .setTextFieldId(R.id.brick_drone_turn_right_edit_text_second); - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS).refreshTextField(view); - editTime.setOnClickListener(this); - - TextView editPower = (TextView) view.findViewById(R.id.brick_drone_turn_right_edit_text_power); - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT) - .setTextFieldId(R.id.brick_drone_turn_right_edit_text_power); - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT).refreshTextField(view); - editPower.setOnClickListener(this); - + setSecondsLabel(view, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); return view; } @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textTime = (TextView) prototypeView.findViewById(R.id - .brick_drone_turn_right_edit_text_second); - - TextView textPower = (TextView) prototypeView.findViewById(R.id - .brick_drone_turn_right_edit_text_power); - - textTime.setText(formatNumberForPrototypeView(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS / 1000)); - - textPower.setText(formatNumberForPrototypeView(BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); - - setSecondText(context, prototypeView, R.id.brick_drone_turn_right_text_second); - return prototypeView; + public int getRequiredResources() { + return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; } @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; + public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { + sequence.addAction(sprite.getActionFactory().createDroneTurnRightAction(sprite, + getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS), + getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT))); + return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneTurnRightMagnetoBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneTurnRightMagnetoBrick.java deleted file mode 100644 index ca479510dae..00000000000 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/DroneTurnRightMagnetoBrick.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Catroid: An on-device visual programming system for Android devices - * Copyright (C) 2010-2018 The Catrobat Team - * () - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * An additional term exception under section 7 of the GNU Affero - * General Public License, version 3, is available at - * http://developer.catrobat.org/license_additional_term - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -package org.catrobat.catroid.content.bricks; - -import android.content.Context; -import android.view.View; -import android.widget.TextView; - -import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; -import org.catrobat.catroid.content.Sprite; -import org.catrobat.catroid.content.actions.ScriptSequenceAction; -import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; - -import java.util.List; - -public class DroneTurnRightMagnetoBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - - public DroneTurnRightMagnetoBrick(int durationInMilliseconds, int powerInPercent) { - initializeBrickFields(new Formula(durationInMilliseconds / 1000.0), new Formula(powerInPercent)); - } - - private void initializeBrickFields(Formula durationInSeconds, Formula powerInPercent) { - addAllowedBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - addAllowedBrickField(BrickField.DRONE_POWER_IN_PERCENT); - setFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS, durationInSeconds); - setFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT, powerInPercent); - } - - @Override - public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createDroneTurnRightMagnetoAction(sprite, - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS), - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT))); - return null; - } - - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_drone_turn_right_magneto_edit_text_power: - FormulaEditorFragment.showFragment(view, this, BrickField.DRONE_POWER_IN_PERCENT); - break; - case R.id.brick_drone_turn_right_magneto_edit_text_second: - default: - FormulaEditorFragment.showFragment(view, this, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - break; - } - } - - @Override - public int getViewResource() { - return R.layout.brick_drone_turn_right_magneto; - } - - @Override - public View getView(Context context) { - super.getView(context); - setSecondText(view, R.id.brick_drone_turn_right_magneto_text_second, R.id.brick_drone_turn_right_magneto_edit_text_second, BrickField.DRONE_TIME_TO_FLY_IN_SECONDS); - - TextView editTime = (TextView) view.findViewById(R.id.brick_drone_turn_right_magneto_edit_text_second); - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS) - .setTextFieldId(R.id.brick_drone_turn_right_magneto_edit_text_second); - getFormulaWithBrickField(BrickField.DRONE_TIME_TO_FLY_IN_SECONDS).refreshTextField(view); - editTime.setOnClickListener(this); - - TextView editPower = (TextView) view.findViewById(R.id.brick_drone_turn_right_magneto_edit_text_power); - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT) - .setTextFieldId(R.id.brick_drone_turn_right_magneto_edit_text_power); - getFormulaWithBrickField(BrickField.DRONE_POWER_IN_PERCENT).refreshTextField(view); - editPower.setOnClickListener(this); - - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textTime = (TextView) prototypeView.findViewById(R.id - .brick_drone_turn_right_magneto_edit_text_second); - - TextView textPower = (TextView) prototypeView.findViewById(R.id - .brick_drone_turn_right_magneto_edit_text_power); - - textTime.setText(formatNumberForPrototypeView(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS / 1000)); - - textPower.setText(formatNumberForPrototypeView(BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); - - setSecondText(context, prototypeView, R.id.brick_drone_turn_right_magneto_text_second); - return prototypeView; - } - - @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.ARDRONE_SUPPORT; - } -} diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/FlashBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/FlashBrick.java index 7dde8030047..f3b8b1f1697 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/FlashBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/FlashBrick.java @@ -39,18 +39,12 @@ public class FlashBrick extends BrickBaseType { private static final int FLASH_OFF = 0; private static final int FLASH_ON = 1; - private transient View prototypeView; - private int spinnerSelectionID; public FlashBrick() { spinnerSelectionID = FLASH_ON; } - public FlashBrick(int onOrOff) { - spinnerSelectionID = onOrOff; - } - @Override public int getViewResource() { return R.layout.brick_flash; @@ -59,12 +53,10 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - Spinner flashSpinner = (Spinner) view.findViewById(R.id.brick_flash_spinner); + Spinner flashSpinner = view.findViewById(R.id.brick_flash_spinner); ArrayAdapter spinnerAdapter = createArrayAdapter(context); - flashSpinner.setAdapter(spinnerAdapter); - flashSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override @@ -78,15 +70,14 @@ public void onNothingSelected(AdapterView adapterView) { }); flashSpinner.setSelection(spinnerSelectionID); - return view; } @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); + View prototypeView = super.getPrototypeView(context); - Spinner setFlashSpinner = (Spinner) prototypeView.findViewById(R.id.brick_flash_spinner); + Spinner setFlashSpinner = prototypeView.findViewById(R.id.brick_flash_spinner); ArrayAdapter spinnerAdapter = createArrayAdapter(context); setFlashSpinner.setAdapter(spinnerAdapter); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ForeverBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ForeverBrick.java index dec5bd36dd8..6ba6c658d49 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ForeverBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ForeverBrick.java @@ -47,16 +47,6 @@ public int getViewResource() { return R.layout.brick_forever; } - @Override - public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - ScriptSequenceAction foreverSequence = (ScriptSequenceAction) ActionFactory.eventSequence(sequence.getScript()); - Action action = sprite.getActionFactory().createForeverAction(sprite, foreverSequence); - sequence.addAction(action); - LinkedList returnActionList = new LinkedList<>(); - returnActionList.add(foreverSequence); - return returnActionList; - } - @Override public LoopEndBrick getLoopEndBrick() { return loopEndBrick; @@ -87,7 +77,16 @@ public List getAllNestingBrickParts() { List nestingBrickList = new ArrayList(); nestingBrickList.add(this); nestingBrickList.add(loopEndBrick); - return nestingBrickList; } + + @Override + public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { + ScriptSequenceAction foreverSequence = (ScriptSequenceAction) ActionFactory.eventSequence(sequence.getScript()); + Action action = sprite.getActionFactory().createForeverAction(sprite, foreverSequence); + sequence.addAction(action); + LinkedList returnActionList = new LinkedList<>(); + returnActionList.add(foreverSequence); + return returnActionList; + } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/FormulaBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/FormulaBrick.java index 59d37b47d74..34682d0aaae 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/FormulaBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/FormulaBrick.java @@ -23,18 +23,21 @@ package org.catrobat.catroid.content.bricks; import android.content.Context; +import android.graphics.PorterDuff; import android.util.Log; import android.view.View; -import android.widget.BaseAdapter; import android.widget.TextView; +import com.google.common.collect.BiMap; +import com.google.common.collect.HashBiMap; + import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; +import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.formulaeditor.InterpretationException; import org.catrobat.catroid.ui.adapter.BrickAdapter; -import org.catrobat.catroid.utils.FormatNumberUtil; +import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import org.catrobat.catroid.utils.Utils; import java.util.ArrayList; @@ -44,11 +47,14 @@ public abstract class FormulaBrick extends BrickBaseType implements View.OnClick ConcurrentFormulaHashMap formulaMap = new ConcurrentFormulaHashMap(); + private transient BiMap brickFieldToTextViewIdMap = HashBiMap.create(2); + public Formula getFormulaWithBrickField(BrickField brickField) throws IllegalArgumentException { if (formulaMap.containsKey(brickField)) { return formulaMap.get(brickField); } else { - throw new IllegalArgumentException("Incompatible Brick Field : " + brickField.toString()); + throw new IllegalArgumentException("Incompatible Brick Field: " + this.getClass().getSimpleName() + + " does have BrickField." + brickField.toString()); } } @@ -56,7 +62,8 @@ public void setFormulaWithBrickField(BrickField brickField, Formula formula) thr if (formulaMap.containsKey(brickField)) { formulaMap.replace(brickField, formula); } else { - throw new IllegalArgumentException("Incompatible Brick Field : " + brickField.toString()); + throw new IllegalArgumentException("Incompatible Brick Field: Cannot set BrickField." + + brickField.toString() + " fot " + this.getClass().getSimpleName()); } } @@ -64,6 +71,11 @@ protected void addAllowedBrickField(BrickField brickField) { formulaMap.putIfAbsent(brickField, new Formula(0)); } + protected void addAllowedBrickField(BrickField brickField, int textViewResourceId) { + formulaMap.putIfAbsent(brickField, new Formula(0)); + brickFieldToTextViewIdMap.put(brickField, textViewResourceId); + } + void replaceFormulaBrickField(BrickField oldBrickField, BrickField newBrickField) { if (formulaMap.containsKey(oldBrickField)) { Formula brickFormula = formulaMap.get(oldBrickField); @@ -79,12 +91,43 @@ public BrickBaseType clone() throws CloneNotSupportedException { return clone; } - public List getFormulas() { - List formulas = new ArrayList<>(); - for (BrickField brickField : formulaMap.keySet()) { - formulas.add(formulaMap.get(brickField)); + @Override + public View getView(Context context) { + super.getView(context); + + for (BiMap.Entry entry : brickFieldToTextViewIdMap.entrySet()) { + TextView brickFieldView = view.findViewById(entry.getValue()); + brickFieldView.setText(getFormulaWithBrickField(entry.getKey()).getTrimmedFormulaString(context)); + brickFieldView.setOnClickListener(this); } - return formulas; + + return view; + } + + @Override + public View getPrototypeView(Context context) { + View prototypeView = super.getPrototypeView(context); + for (BiMap.Entry entry : brickFieldToTextViewIdMap.entrySet()) { + TextView brickFieldView = prototypeView.findViewById(entry.getValue()); + brickFieldView.setText(getFormulaWithBrickField(entry.getKey()).getTrimmedFormulaString(context)); + } + return prototypeView; + } + + public List getFormulas() { + return new ArrayList<>(formulaMap.values()); + } + + public TextView getTextView(BrickField brickField) { + return view.findViewById(brickFieldToTextViewIdMap.get(brickField)); + } + + public void highlightTextView(BrickField brickField) { + TextView formulaTextField = view.findViewById(brickFieldToTextViewIdMap.get(brickField)); + + formulaTextField.getBackground().mutate() + .setColorFilter(view.getContext().getResources() + .getColor(R.color.holo_blue_bright), PorterDuff.Mode.SRC_ATOP); } @Override @@ -101,48 +144,36 @@ public void onClick(View view) { showFormulaEditorToEditFormula(view); } - public View getCustomView(Context context, int brickId, BaseAdapter baseAdapter) { - return null; + public void showFormulaEditorToEditFormula(View view) { + if (brickFieldToTextViewIdMap.inverse().containsKey(view.getId())) { + FormulaEditorFragment.showFragment(view.getContext(), this, brickFieldToTextViewIdMap.inverse().get(view.getId())); + } else { + FormulaEditorFragment.showFragment(view.getContext(), this, formulaMap.keys().nextElement()); + } } - public abstract void showFormulaEditorToEditFormula(View view); - - public void setSecondText(View view, int textViewId, int editTextDurationId, BrickField brickField) { - TextView editDuration = view.findViewById(editTextDurationId); - getFormulaWithBrickField(brickField) - .setTextFieldId(editTextDurationId); - getFormulaWithBrickField(brickField).refreshTextField(view); + public View getCustomView(Context context) { + throw new IllegalStateException("There is no custom view for this brick"); + } - TextView times = view.findViewById(textViewId); + protected void setSecondsLabel(View view, BrickField brickField) { + TextView textView = view.findViewById(R.id.brick_seconds_label); + Context context = textView.getContext(); if (getFormulaWithBrickField(brickField).isSingleNumberFormula()) { try { - times.setText(view.getResources().getQuantityString( - R.plurals.second_plural, - Utils.convertDoubleToPluralInteger(getFormulaWithBrickField(brickField) - .interpretDouble(ProjectManager.getInstance().getCurrentSprite())) - )); - } catch (InterpretationException interpretationException) { - Log.d(getClass().getSimpleName(), "Couldn't interpret Formula.", interpretationException); + Sprite sprite = ProjectManager.getInstance().getCurrentSprite(); + Double formulaValue = formulaMap.get(brickField).interpretDouble(sprite); + textView.setText(context.getResources().getQuantityString(R.plurals.second_plural, + Utils.convertDoubleToPluralInteger(formulaValue))); + return; + } catch (InterpretationException e) { + Log.e(getClass().getSimpleName(), + "Interpretation of formula failed, " + + "fallback to quantity \"other\" for \"second(s)\" label.", e); } - } else { - times.setText(view.getResources().getQuantityString(R.plurals.second_plural, - Utils.TRANSLATION_PLURAL_OTHER_INTEGER)); } - - editDuration.setOnClickListener(this); - } - - public void setSecondText(Context context, View prototypeView, int textViewId) { - TextView second = prototypeView.findViewById(textViewId); - second.setText(context.getResources().getQuantityString(R.plurals.second_plural, - Utils.convertDoubleToPluralInteger(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS / 1000))); - } - - protected String formatNumberForPrototypeView(T value) { - - String number = String.valueOf(value); - - return FormatNumberUtil.cutTrailingZeros(number); + textView.setText(context.getResources() + .getQuantityString(R.plurals.second_plural, Utils.TRANSLATION_PLURAL_OTHER_INTEGER)); } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/GlideToBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/GlideToBrick.java index dc0508cf0e1..becbd698b57 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/GlideToBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/GlideToBrick.java @@ -23,124 +23,65 @@ package org.catrobat.catroid.content.bricks; import android.content.Context; -import android.util.Log; import android.view.View; -import android.widget.TextView; -import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.formulaeditor.InterpretationException; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; -import org.catrobat.catroid.utils.Utils; import java.util.List; public class GlideToBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - private transient View prototypeView; + private static final long serialVersionUID = 1L; public GlideToBrick() { - addAllowedBrickField(BrickField.X_DESTINATION); - addAllowedBrickField(BrickField.Y_DESTINATION); - addAllowedBrickField(BrickField.DURATION_IN_SECONDS); + this(new Formula(BrickValues.X_POSITION), + new Formula(BrickValues.Y_POSITION), + new Formula(BrickValues.GLIDE_SECONDS)); } public GlideToBrick(int xDestinationValue, int yDestinationValue, int durationInMilliSecondsValue) { - initializeBrickFields(new Formula(xDestinationValue), new Formula(yDestinationValue), new Formula( - durationInMilliSecondsValue / 1000.0)); + this(new Formula(xDestinationValue), + new Formula(yDestinationValue), + new Formula(durationInMilliSecondsValue / 1000.0)); } public GlideToBrick(Formula xDestination, Formula yDestination, Formula durationInSeconds) { - initializeBrickFields(xDestination, yDestination, durationInSeconds); - } - - private void initializeBrickFields(Formula xDestination, Formula yDestination, Formula durationInSeconds) { - addAllowedBrickField(BrickField.X_DESTINATION); - addAllowedBrickField(BrickField.Y_DESTINATION); - addAllowedBrickField(BrickField.DURATION_IN_SECONDS); + addAllowedBrickField(BrickField.X_DESTINATION, R.id.brick_glide_to_edit_text_x); + addAllowedBrickField(BrickField.Y_DESTINATION, R.id.brick_glide_to_edit_text_y); + addAllowedBrickField(BrickField.DURATION_IN_SECONDS, R.id.brick_glide_to_edit_text_duration); setFormulaWithBrickField(BrickField.X_DESTINATION, xDestination); setFormulaWithBrickField(BrickField.Y_DESTINATION, yDestination); setFormulaWithBrickField(BrickField.DURATION_IN_SECONDS, durationInSeconds); } - public void setXDestination(Formula xDestination) { - setFormulaWithBrickField(BrickField.X_DESTINATION, xDestination); - } - - public void setYDestination(Formula yDestination) { - setFormulaWithBrickField(BrickField.Y_DESTINATION, yDestination); - } - @Override - public int getRequiredResources() { - return getFormulaWithBrickField(BrickField.X_DESTINATION).getRequiredResources() | getFormulaWithBrickField(BrickField.Y_DESTINATION).getRequiredResources() - | getFormulaWithBrickField(BrickField.DURATION_IN_SECONDS).getRequiredResources(); + public int getViewResource() { + return R.layout.brick_glide_to; } @Override - public int getViewResource() { - return R.layout.brick_glide_to; + public View getPrototypeView(Context context) { + View prototypeView = super.getPrototypeView(context); + setSecondsLabel(prototypeView, BrickField.DURATION_IN_SECONDS); + return prototypeView; } @Override public View getView(Context context) { super.getView(context); - BrickViewProvider.setAlphaOnView(view, alphaValue); - TextView editX = (TextView) view.findViewById(R.id.brick_glide_to_edit_text_x); - getFormulaWithBrickField(BrickField.X_DESTINATION).setTextFieldId(R.id.brick_glide_to_edit_text_x); - getFormulaWithBrickField(BrickField.X_DESTINATION).refreshTextField(view); - editX.setOnClickListener(this); - - TextView editY = (TextView) view.findViewById(R.id.brick_glide_to_edit_text_y); - getFormulaWithBrickField(BrickField.Y_DESTINATION).setTextFieldId(R.id.brick_glide_to_edit_text_y); - getFormulaWithBrickField(BrickField.Y_DESTINATION).refreshTextField(view); - editY.setOnClickListener(this); - - TextView editDuration = (TextView) view.findViewById(R.id.brick_glide_to_edit_text_duration); - getFormulaWithBrickField(BrickField.DURATION_IN_SECONDS).setTextFieldId(R.id.brick_glide_to_edit_text_duration); - getFormulaWithBrickField(BrickField.DURATION_IN_SECONDS).refreshTextField(view); - - TextView times = (TextView) view.findViewById(R.id.brick_glide_to_seconds_text_view); - - if (getFormulaWithBrickField(BrickField.DURATION_IN_SECONDS).isSingleNumberFormula()) { - try { - times.setText(view.getResources().getQuantityString( - R.plurals.second_plural, - Utils.convertDoubleToPluralInteger(getFormulaWithBrickField(BrickField.DURATION_IN_SECONDS) - .interpretDouble(ProjectManager.getInstance().getCurrentSprite())))); - } catch (InterpretationException interpretationException) { - Log.d(getClass().getSimpleName(), "Couldn't interpret Formula.", interpretationException); - } - } else { - - // Random Number to get into the "other" keyword for values like 0.99 or 2.001 seconds or degrees - // in hopefully all possible languages - times.setText(view.getResources().getQuantityString(R.plurals.second_plural, - Utils.TRANSLATION_PLURAL_OTHER_INTEGER)); - } - - editDuration.setOnClickListener(this); + setSecondsLabel(view, BrickField.DURATION_IN_SECONDS); return view; } @Override - public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textX = (TextView) prototypeView.findViewById(R.id.brick_glide_to_edit_text_x); - TextView textY = (TextView) prototypeView.findViewById(R.id.brick_glide_to_edit_text_y); - TextView textDuration = (TextView) prototypeView.findViewById(R.id.brick_glide_to_edit_text_duration); - TextView times = (TextView) prototypeView.findViewById(R.id.brick_glide_to_seconds_text_view); - textX.setText(formatNumberForPrototypeView(BrickValues.X_POSITION)); - textY.setText(formatNumberForPrototypeView(BrickValues.Y_POSITION)); - textDuration.setText(formatNumberForPrototypeView(BrickValues.DURATION)); - times.setText(context.getResources().getQuantityString(R.plurals.second_plural, - Utils.convertDoubleToPluralInteger(BrickValues.DURATION))); - return prototypeView; + public int getRequiredResources() { + return getFormulaWithBrickField(BrickField.X_DESTINATION).getRequiredResources() + | getFormulaWithBrickField(BrickField.Y_DESTINATION).getRequiredResources() + | getFormulaWithBrickField(BrickField.DURATION_IN_SECONDS).getRequiredResources(); } @Override @@ -151,21 +92,4 @@ public List addActionToSequence(Sprite sprite, ScriptSeque getFormulaWithBrickField(BrickField.DURATION_IN_SECONDS))); return null; } - - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_glide_to_edit_text_x: - FormulaEditorFragment.showFragment(view, this, BrickField.X_DESTINATION); - break; - - case R.id.brick_glide_to_edit_text_y: - FormulaEditorFragment.showFragment(view, this, BrickField.Y_DESTINATION); - break; - - case R.id.brick_glide_to_edit_text_duration: - default: - FormulaEditorFragment.showFragment(view, this, BrickField.DURATION_IN_SECONDS); - break; - } - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/GoNStepsBackBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/GoNStepsBackBrick.java index 6e73a0464a7..5545d717ed9 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/GoNStepsBackBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/GoNStepsBackBrick.java @@ -34,7 +34,6 @@ import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.formulaeditor.InterpretationException; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import org.catrobat.catroid.utils.Utils; import java.util.List; @@ -44,20 +43,16 @@ public class GoNStepsBackBrick extends FormulaBrick { private static final long serialVersionUID = 1L; public GoNStepsBackBrick() { - addAllowedBrickField(BrickField.STEPS); + this(new Formula(BrickValues.GO_BACK)); } - public GoNStepsBackBrick(int stepsValue) { - initializeBrickFields(new Formula(stepsValue)); + public GoNStepsBackBrick(int steps) { + this(new Formula(steps)); } - public GoNStepsBackBrick(Formula steps) { - initializeBrickFields(steps); - } - - private void initializeBrickFields(Formula steps) { - addAllowedBrickField(BrickField.STEPS); - setFormulaWithBrickField(BrickField.STEPS, steps); + public GoNStepsBackBrick(Formula formula) { + addAllowedBrickField(BrickField.STEPS, R.id.brick_go_back_edit_text); + setFormulaWithBrickField(BrickField.STEPS, formula); } @Override @@ -73,10 +68,6 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - TextView edit = view.findViewById(R.id.brick_go_back_edit_text); - - getFormulaWithBrickField(BrickField.STEPS).setTextFieldId(R.id.brick_go_back_edit_text); - getFormulaWithBrickField(BrickField.STEPS).refreshTextField(view); TextView times = view.findViewById(R.id.brick_go_back_layers_text_view); @@ -91,26 +82,19 @@ public View getView(Context context) { Log.d(getClass().getSimpleName(), "Couldn't interpret Formula.", interpretationException); } } else { - - // Random Number to get into the "other" keyword for values like 0.99 or 2.001 seconds or degrees - // in hopefully all possible languages times.setText(view.getResources().getQuantityString(R.plurals.brick_go_back_layer_plural, Utils.TRANSLATION_PLURAL_OTHER_INTEGER)); } - edit.setOnClickListener(this); return view; } @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - TextView textSteps = prototypeView.findViewById(R.id.brick_go_back_edit_text); TextView times = prototypeView.findViewById(R.id.brick_go_back_layers_text_view); - textSteps.setText(formatNumberForPrototypeView(BrickValues.GO_BACK)); - times.setText(context.getResources().getQuantityString(R.plurals.brick_go_back_layer_plural, - Utils.convertDoubleToPluralInteger(BrickValues.GO_BACK))); - + times.setText(context.getResources() + .getQuantityString(R.plurals.brick_go_back_layer_plural, Utils.convertDoubleToPluralInteger(BrickValues.GO_BACK))); return prototypeView; } @@ -120,9 +104,4 @@ public List addActionToSequence(Sprite sprite, ScriptSeque .createGoNStepsBackAction(sprite, getFormulaWithBrickField(BrickField.STEPS))); return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.STEPS); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/GoToBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/GoToBrick.java index b72a46e7718..9026401a9cc 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/GoToBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/GoToBrick.java @@ -48,19 +48,15 @@ public class GoToBrick extends BrickBaseType { private static final long serialVersionUID = 1L; private Sprite destinationSprite; - private transient String oldSelectedObject; - private int spinnerSelection; + private transient String oldSelectedObject = ""; + public GoToBrick() { - this.spinnerSelection = 0; - this.oldSelectedObject = ""; } public GoToBrick(Sprite destinationSprite) { this.destinationSprite = destinationSprite; - this.spinnerSelection = 0; - this.oldSelectedObject = ""; } @Override @@ -76,9 +72,7 @@ public View getView(final Context context) { final ArrayAdapter spinnerAdapter = createArrayAdapter(context); SpinnerAdapterWrapper spinnerAdapterWrapper = new SpinnerAdapterWrapper(context, goToSpinner, spinnerAdapter); - goToSpinner.setAdapter(spinnerAdapterWrapper); - goToSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { @@ -118,7 +112,6 @@ public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); Spinner goToSpinner = prototypeView.findViewById(R.id.brick_go_to_spinner); - SpinnerAdapter goToSpinnerAdapter = createArrayAdapter(context); goToSpinner.setAdapter(goToSpinnerAdapter); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/HideTextBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/HideTextBrick.java index 1d627d70071..940b4ae4c32 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/HideTextBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/HideTextBrick.java @@ -35,7 +35,6 @@ import org.catrobat.catroid.formulaeditor.UserVariable; import org.catrobat.catroid.ui.adapter.DataAdapter; import org.catrobat.catroid.ui.adapter.UserVariableAdapterWrapper; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -43,16 +42,6 @@ public class HideTextBrick extends UserVariableBrick { private static final long serialVersionUID = 1L; - public HideTextBrick() { - addAllowedBrickField(BrickField.X_POSITION); - addAllowedBrickField(BrickField.Y_POSITION); - } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.changeInputField(view, BrickField.HIDETEXT); - } - @Override public int getViewResource() { return R.layout.brick_hide_variable; diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfLogicBeginBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfLogicBeginBrick.java index a2446df32be..413df75f6d6 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfLogicBeginBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfLogicBeginBrick.java @@ -29,12 +29,10 @@ import com.badlogic.gdx.scenes.scene2d.Action; import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.ActionFactory; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.ArrayList; import java.util.LinkedList; @@ -44,29 +42,21 @@ public class IfLogicBeginBrick extends FormulaBrick implements NestingBrick { private static final long serialVersionUID = 1L; - transient IfLogicElseBrick ifElseBrick; - transient IfLogicEndBrick ifEndBrick; + private transient IfLogicElseBrick ifElseBrick; + private transient IfLogicEndBrick ifEndBrick; public IfLogicBeginBrick() { - addAllowedBrickField(BrickField.IF_CONDITION); + //For ridiculous inheritance -> call only from PhiroIfLogicBeginBrick + //Should be removed asap. } public IfLogicBeginBrick(int condition) { - initializeBrickFields(new Formula(condition)); + this(new Formula(condition)); } - public IfLogicBeginBrick(Formula condition) { - initializeBrickFields(condition); - } - - protected void initializeBrickFields(Formula ifCondition) { - addAllowedBrickField(BrickField.IF_CONDITION); - setFormulaWithBrickField(BrickField.IF_CONDITION, ifCondition); - } - - @Override - public int getRequiredResources() { - return getFormulaWithBrickField(BrickField.IF_CONDITION).getRequiredResources(); + public IfLogicBeginBrick(Formula formula) { + addAllowedBrickField(BrickField.IF_CONDITION, R.id.brick_if_begin_edit_text); + setFormulaWithBrickField(BrickField.IF_CONDITION, formula); } public IfLogicElseBrick getIfElseBrick() { @@ -85,6 +75,11 @@ public void setIfEndBrick(IfLogicEndBrick ifEndBrick) { this.ifEndBrick = ifEndBrick; } + @Override + public int getRequiredResources() { + return getFormulaWithBrickField(BrickField.IF_CONDITION).getRequiredResources(); + } + @Override public BrickBaseType clone() throws CloneNotSupportedException { IfLogicBeginBrick clone = (IfLogicBeginBrick) super.clone(); @@ -93,11 +88,6 @@ public BrickBaseType clone() throws CloneNotSupportedException { return clone; } - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.IF_CONDITION); - } - @Override public int getViewResource() { return R.layout.brick_if_begin_if; @@ -106,19 +96,17 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - onViewCreated(view); + onSuperGetViewCalled(context); return view; } - protected void onViewCreated(View view) { - TextView ifBeginTextView = view.findViewById(R.id.brick_if_begin_edit_text); - getFormulaWithBrickField(BrickField.IF_CONDITION).setTextFieldId(R.id.brick_if_begin_edit_text); - getFormulaWithBrickField(BrickField.IF_CONDITION).refreshTextField(view); - ifBeginTextView.setOnClickListener(this); - removePrototypeElseTextViews(view); + protected void onSuperGetViewCalled(Context context) { + //For ridiculous inheritance -> to override from PhiroIfLogicBeginBrick + //Should be removed asap. + hidePrototypeElseAndPunctuation(); } - protected void removePrototypeElseTextViews(View view) { + void hidePrototypeElseAndPunctuation() { TextView prototypeTextPunctuation = view.findViewById(R.id.if_else_prototype_punctuation); TextView prototypeTextElse = view.findViewById(R.id.if_prototype_else); TextView prototypeTextPunctuation2 = view.findViewById(R.id.if_else_prototype_punctuation2); @@ -127,18 +115,6 @@ protected void removePrototypeElseTextViews(View view) { prototypeTextPunctuation2.setVisibility(View.GONE); } - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - onPrototypeViewCreated(prototypeView); - return prototypeView; - } - - protected void onPrototypeViewCreated(View prototypeView) { - TextView textIfBegin = prototypeView.findViewById(R.id.brick_if_begin_edit_text); - textIfBegin.setText(BrickValues.IF_CONDITION); - } - @Override public boolean isInitialized() { return ifElseBrick != null; @@ -147,7 +123,12 @@ public boolean isInitialized() { @Override public void initialize() { ifElseBrick = new IfLogicElseBrick(this); - ifEndBrick = new IfLogicEndBrick(ifElseBrick, this); + ifEndBrick = new IfLogicEndBrick(this, ifElseBrick); + } + + @Override + public boolean isDraggableOver(Brick brick) { + return brick != ifElseBrick; } @Override @@ -159,17 +140,13 @@ public List getAllNestingBrickParts() { return nestingBrickList; } - @Override - public boolean isDraggableOver(Brick brick) { - return brick != ifElseBrick; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { ScriptSequenceAction ifAction = (ScriptSequenceAction) ActionFactory.eventSequence(sequence.getScript()); ScriptSequenceAction elseAction = (ScriptSequenceAction) ActionFactory.eventSequence(sequence.getScript()); - Action action = sprite.getActionFactory().createIfLogicAction(sprite, - getFormulaWithBrickField(BrickField.IF_CONDITION), ifAction, elseAction); + + Action action = sprite.getActionFactory() + .createIfLogicAction(sprite, getFormulaWithBrickField(BrickField.IF_CONDITION), ifAction, elseAction); sequence.addAction(action); LinkedList returnActionList = new LinkedList<>(); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfLogicElseBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfLogicElseBrick.java index 85a09454545..1dca85ff462 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfLogicElseBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfLogicElseBrick.java @@ -41,11 +41,6 @@ public IfLogicElseBrick(IfLogicBeginBrick ifBeginBrick) { this.ifBeginBrick = ifBeginBrick; } - @Override - public int getViewResource() { - return R.layout.brick_if_else; - } - public IfLogicBeginBrick getIfBeginBrick() { return ifBeginBrick; } @@ -63,8 +58,8 @@ public void setIfEndBrick(IfLogicEndBrick ifEndBrick) { } @Override - public boolean isDraggableOver(Brick brick) { - return brick != ifBeginBrick && brick != ifEndBrick; + public int getViewResource() { + return R.layout.brick_if_else; } @Override @@ -76,6 +71,11 @@ public boolean isInitialized() { public void initialize() { } + @Override + public boolean isDraggableOver(Brick brick) { + return brick != ifBeginBrick && brick != ifEndBrick; + } + @Override public List getAllNestingBrickParts() { List nestingBrickList = new ArrayList<>(); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfLogicEndBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfLogicEndBrick.java index 4e46b07e186..23881e32a94 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfLogicEndBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfLogicEndBrick.java @@ -34,19 +34,11 @@ public class IfLogicEndBrick extends BrickBaseType implements NestingBrick, Allo private static final long serialVersionUID = 1L; - private transient IfLogicElseBrick ifElseBrick; private transient IfLogicBeginBrick ifBeginBrick; + private transient IfLogicElseBrick ifElseBrick; - public IfLogicEndBrick(IfLogicElseBrick elseBrick, IfLogicBeginBrick beginBrick) { - this.ifElseBrick = elseBrick; - this.ifBeginBrick = beginBrick; - } - - public IfLogicElseBrick getIfElseBrick() { - return ifElseBrick; - } - - public void setIfElseBrick(IfLogicElseBrick ifElseBrick) { + public IfLogicEndBrick(IfLogicBeginBrick ifLogicBeginBrick, IfLogicElseBrick ifElseBrick) { + this.ifBeginBrick = ifLogicBeginBrick; this.ifElseBrick = ifElseBrick; } @@ -58,14 +50,17 @@ public void setIfBeginBrick(IfLogicBeginBrick ifBeginBrick) { this.ifBeginBrick = ifBeginBrick; } - @Override - public int getViewResource() { - return R.layout.brick_if_end_if; + public IfLogicElseBrick getIfElseBrick() { + return ifElseBrick; + } + + public void setIfElseBrick(IfLogicElseBrick ifElseBrick) { + this.ifElseBrick = ifElseBrick; } @Override - public boolean isDraggableOver(Brick brick) { - return brick != ifElseBrick; + public int getViewResource() { + return R.layout.brick_if_end_if; } @Override @@ -77,6 +72,11 @@ public boolean isInitialized() { public void initialize() { } + @Override + public boolean isDraggableOver(Brick brick) { + return brick != ifElseBrick; + } + @Override public List getAllNestingBrickParts() { List nestingBrickList = new ArrayList<>(); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfThenLogicBeginBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfThenLogicBeginBrick.java index 42aa2b4de50..741038f2d43 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfThenLogicBeginBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfThenLogicBeginBrick.java @@ -24,9 +24,11 @@ import android.content.Context; import android.view.View; +import android.widget.TextView; import com.badlogic.gdx.scenes.scene2d.Action; +import org.catrobat.catroid.R; import org.catrobat.catroid.content.ActionFactory; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; @@ -36,17 +38,23 @@ import java.util.LinkedList; import java.util.List; -public class IfThenLogicBeginBrick extends IfLogicBeginBrick implements NestingBrick { +public class IfThenLogicBeginBrick extends FormulaBrick implements NestingBrick { private static final long serialVersionUID = 1L; + private transient IfThenLogicEndBrick ifEndBrick; public IfThenLogicBeginBrick(int condition) { - initializeBrickFields(new Formula(condition)); + this(new Formula(condition)); } - public IfThenLogicBeginBrick(Formula condition) { - initializeBrickFields(condition); + public IfThenLogicBeginBrick(Formula formula) { + addAllowedBrickField(BrickField.IF_CONDITION, R.id.brick_if_begin_edit_text); + setFormulaWithBrickField(BrickField.IF_CONDITION, formula); + } + + public IfThenLogicEndBrick getIfThenEndBrick() { + return ifEndBrick; } public void setIfThenEndBrick(IfThenLogicEndBrick ifEndBrick) { @@ -54,10 +62,25 @@ public void setIfThenEndBrick(IfThenLogicEndBrick ifEndBrick) { } @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - removePrototypeElseTextViews(prototypeView); - return prototypeView; + public int getViewResource() { + return R.layout.brick_if_then_begin_if; + } + + @Override + public View getView(Context context) { + super.getView(context); + hidePrototypePunctuation(); + return view; + } + + private void hidePrototypePunctuation() { + TextView prototypeTextPunctuation = view.findViewById(R.id.if_prototype_punctuation); + prototypeTextPunctuation.setVisibility(View.GONE); + } + + @Override + public boolean isInitialized() { + return ifEndBrick != null; } @Override @@ -65,6 +88,11 @@ public void initialize() { ifEndBrick = new IfThenLogicEndBrick(this); } + @Override + public boolean isDraggableOver(Brick brick) { + return brick != ifEndBrick; + } + @Override public List getAllNestingBrickParts() { List nestingBrickList = new ArrayList<>(); @@ -73,16 +101,12 @@ public List getAllNestingBrickParts() { return nestingBrickList; } - @Override - public boolean isDraggableOver(Brick brick) { - return brick != ifEndBrick; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { ScriptSequenceAction ifAction = (ScriptSequenceAction) ActionFactory.eventSequence(sequence.getScript()); - Action action = sprite.getActionFactory().createIfLogicAction(sprite, - getFormulaWithBrickField(BrickField.IF_CONDITION), ifAction, null); + + Action action = sprite.getActionFactory() + .createIfLogicAction(sprite, getFormulaWithBrickField(BrickField.IF_CONDITION), ifAction, null); sequence.addAction(action); LinkedList returnActionList = new LinkedList<>(); @@ -90,8 +114,4 @@ public List addActionToSequence(Sprite sprite, ScriptSeque return returnActionList; } - - public IfThenLogicEndBrick getIfThenEndBrick() { - return ifEndBrick; - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfThenLogicEndBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfThenLogicEndBrick.java index 36e7b569ca2..5d659496452 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfThenLogicEndBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/IfThenLogicEndBrick.java @@ -22,8 +22,6 @@ */ package org.catrobat.catroid.content.bricks; -import android.util.Log; - import org.catrobat.catroid.R; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; @@ -35,12 +33,15 @@ public class IfThenLogicEndBrick extends BrickBaseType implements NestingBrick, AllowedAfterDeadEndBrick { private static final long serialVersionUID = 1L; - private static final String TAG = IfThenLogicEndBrick.class.getSimpleName(); private transient IfThenLogicBeginBrick ifBeginBrick; - public IfThenLogicEndBrick(IfThenLogicBeginBrick beginBrick) { - this.ifBeginBrick = beginBrick; + public IfThenLogicEndBrick(IfThenLogicBeginBrick ifBeginBrick) { + this.ifBeginBrick = ifBeginBrick; + } + + public IfThenLogicBeginBrick getIfBeginBrick() { + return ifBeginBrick; } public void setIfThenBeginBrick(IfThenLogicBeginBrick ifBeginBrick) { @@ -64,7 +65,6 @@ public boolean isInitialized() { @Override public void initialize() { - Log.w(TAG, "Cannot create the IfLogic Bricks from here!"); } @Override @@ -81,8 +81,4 @@ public List addActionToSequence(Sprite sprite, ScriptSeque returnActionList.add(sequence); return returnActionList; } - - public IfThenLogicBeginBrick getIfBeginBrick() { - return ifBeginBrick; - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/InsertItemIntoUserListBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/InsertItemIntoUserListBrick.java index 19a5988a27a..9d1ed92df2f 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/InsertItemIntoUserListBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/InsertItemIntoUserListBrick.java @@ -25,18 +25,15 @@ import android.content.Context; import android.view.View; import android.widget.Spinner; -import android.widget.TextView; import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.formulaeditor.UserList; import org.catrobat.catroid.ui.adapter.DataAdapter; import org.catrobat.catroid.ui.adapter.UserListAdapterWrapper; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -45,17 +42,19 @@ public class InsertItemIntoUserListBrick extends UserListBrick { private static final long serialVersionUID = 1L; public InsertItemIntoUserListBrick(Formula userListFormulaValueToInsert, Formula userListFormulaIndexToInsert, UserList userList) { - initializeBrickFields(userListFormulaValueToInsert, userListFormulaIndexToInsert); + this(userListFormulaValueToInsert, userListFormulaIndexToInsert); this.userList = userList; } public InsertItemIntoUserListBrick(double value, Integer indexToInsert) { - initializeBrickFields(new Formula(value), new Formula(indexToInsert)); + this(new Formula(value), new Formula(indexToInsert)); } - private void initializeBrickFields(Formula userListFormulaValueToInsert, Formula userListFormulaIndexToInsert) { - addAllowedBrickField(BrickField.INSERT_ITEM_INTO_USERLIST_VALUE); - addAllowedBrickField(BrickField.INSERT_ITEM_INTO_USERLIST_INDEX); + public InsertItemIntoUserListBrick(Formula userListFormulaValueToInsert, Formula userListFormulaIndexToInsert) { + addAllowedBrickField(BrickField.INSERT_ITEM_INTO_USERLIST_VALUE, + R.id.brick_insert_item_into_userlist_value_edit_text); + addAllowedBrickField(BrickField.INSERT_ITEM_INTO_USERLIST_INDEX, + R.id.brick_insert_item_into_userlist_at_index_edit_text); setFormulaWithBrickField(BrickField.INSERT_ITEM_INTO_USERLIST_VALUE, userListFormulaValueToInsert); setFormulaWithBrickField(BrickField.INSERT_ITEM_INTO_USERLIST_INDEX, userListFormulaIndexToInsert); } @@ -77,18 +76,6 @@ public int getViewResource() { @Override public View getView(final Context context) { super.getView(context); - TextView textFieldValue = view.findViewById(R.id.brick_insert_item_into_userlist_value_edit_text); - - getFormulaWithBrickField(BrickField.INSERT_ITEM_INTO_USERLIST_VALUE).setTextFieldId(R.id.brick_insert_item_into_userlist_value_edit_text); - getFormulaWithBrickField(BrickField.INSERT_ITEM_INTO_USERLIST_VALUE).refreshTextField(view); - textFieldValue.setVisibility(View.VISIBLE); - textFieldValue.setOnClickListener(this); - - TextView textFieldIndex = view.findViewById(R.id.brick_insert_item_into_userlist_at_index_edit_text); - getFormulaWithBrickField(BrickField.INSERT_ITEM_INTO_USERLIST_INDEX).setTextFieldId(R.id.brick_insert_item_into_userlist_at_index_edit_text); - getFormulaWithBrickField(BrickField.INSERT_ITEM_INTO_USERLIST_INDEX).refreshTextField(view); - textFieldIndex.setVisibility(View.VISIBLE); - textFieldIndex.setOnClickListener(this); Spinner userListSpinner = view.findViewById(R.id.insert_item_into_userlist_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyEditedScene().getDataContainer() @@ -107,6 +94,7 @@ public View getView(final Context context) { @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); + Spinner userListSpinner = prototypeView.findViewById(R.id.insert_item_into_userlist_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyEditedScene().getDataContainer() @@ -118,11 +106,6 @@ public View getPrototypeView(Context context) { userListSpinner.setAdapter(userListAdapterWrapper); setSpinnerSelection(userListSpinner, null); - TextView textViewValueToInsert = prototypeView.findViewById(R.id.brick_insert_item_into_userlist_value_edit_text); - textViewValueToInsert.setText(formatNumberForPrototypeView(BrickValues.INSERT_ITEM_INTO_USERLIST_VALUE)); - TextView textViewInsertIndex = prototypeView.findViewById(R.id.brick_insert_item_into_userlist_at_index_edit_text); - textViewInsertIndex.setText(formatNumberForPrototypeView(BrickValues.INSERT_ITEM_INTO_USERLIST_INDEX)); - return prototypeView; } @@ -131,18 +114,4 @@ public void onNewList(UserList userList) { Spinner spinner = view.findViewById(R.id.insert_item_into_userlist_spinner); setSpinnerSelection(spinner, userList); } - - @Override - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_insert_item_into_userlist_value_edit_text: - FormulaEditorFragment.showFragment(view, this, BrickField.INSERT_ITEM_INTO_USERLIST_VALUE); - break; - - case R.id.brick_insert_item_into_userlist_at_index_edit_text: - default: - FormulaEditorFragment.showFragment(view, this, BrickField.INSERT_ITEM_INTO_USERLIST_INDEX); - break; - } - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoAnimationsBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoAnimationsBrick.java index 5ef4a1299cc..9e85baf62af 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoAnimationsBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoAnimationsBrick.java @@ -39,7 +39,6 @@ public class JumpingSumoAnimationsBrick extends BrickBaseType { private static final long serialVersionUID = 1L; - private transient View prototypeView; private String animationName; private transient Animation animation; @@ -66,9 +65,9 @@ public int getRequiredResources() { @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); + View prototypeView = super.getPrototypeView(context); - Spinner jsAnimationSpinner = (Spinner) prototypeView.findViewById(R.id.brick_jumping_sumo_animation_spinner); + Spinner jsAnimationSpinner = prototypeView.findViewById(R.id.brick_jumping_sumo_animation_spinner); jsAnimationSpinner.setFocusableInTouchMode(false); jsAnimationSpinner.setFocusable(false); jsAnimationSpinner.setEnabled(false); @@ -94,7 +93,7 @@ public View getView(Context context) { ArrayAdapter animationAdapter = ArrayAdapter.createFromResource(context, R.array.brick_jumping_sumo_select_animation_spinner, android.R.layout.simple_spinner_item); animationAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - Spinner animationSpinner = (Spinner) view.findViewById(R.id.brick_jumping_sumo_animation_spinner); + Spinner animationSpinner = view.findViewById(R.id.brick_jumping_sumo_animation_spinner); animationSpinner.setAdapter(animationAdapter); animationSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoJumpHighBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoJumpHighBrick.java index b4e83daa17e..6aeb1a1ddbc 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoJumpHighBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoJumpHighBrick.java @@ -22,9 +22,6 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; - import org.catrobat.catroid.R; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; @@ -32,6 +29,7 @@ import java.util.List; public class JumpingSumoJumpHighBrick extends BrickBaseType { + private static final long serialVersionUID = 1L; @Override @@ -40,16 +38,8 @@ public int getViewResource() { } @Override - public View getView(Context context) { - super.getView(context); - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - - return prototypeView; + public int getRequiredResources() { + return super.getRequiredResources() | Brick.JUMPING_SUMO; } @Override @@ -57,9 +47,4 @@ public List addActionToSequence(Sprite sprite, ScriptSeque sequence.addAction(sprite.getActionFactory().createJumpingSumoJumpHighAction()); return null; } - - @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.JUMPING_SUMO; - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoJumpLongBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoJumpLongBrick.java index 35783e3f952..3062ef60178 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoJumpLongBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoJumpLongBrick.java @@ -22,9 +22,6 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; - import org.catrobat.catroid.R; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; @@ -32,6 +29,7 @@ import java.util.List; public class JumpingSumoJumpLongBrick extends BrickBaseType { + private static final long serialVersionUID = 1L; @Override @@ -40,16 +38,8 @@ public int getViewResource() { } @Override - public View getView(Context context) { - super.getView(context); - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - - return prototypeView; + public int getRequiredResources() { + return super.getRequiredResources() | Brick.JUMPING_SUMO; } @Override @@ -57,9 +47,4 @@ public List addActionToSequence(Sprite sprite, ScriptSeque sequence.addAction(sprite.getActionFactory().createJumpingSumoJumpLongAction()); return null; } - - @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.JUMPING_SUMO; - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoMoveBackwardBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoMoveBackwardBrick.java index f43728eb4de..8dd63d35eae 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoMoveBackwardBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoMoveBackwardBrick.java @@ -22,16 +22,10 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -40,77 +34,32 @@ public class JumpingSumoMoveBackwardBrick extends FormulaBrick { private static final long serialVersionUID = 1L; public JumpingSumoMoveBackwardBrick(int durationInMilliseconds, int powerInPercent) { - initializeBrickFields(new Formula(durationInMilliseconds / 1000.0), new Formula(powerInPercent)); + this(new Formula(durationInMilliseconds / 1000.0), new Formula(powerInPercent)); } - private void initializeBrickFields(Formula durationInSeconds, Formula powerInPercent) { - addAllowedBrickField(BrickField.JUMPING_SUMO_TIME_TO_DRIVE_IN_SECONDS); - addAllowedBrickField(BrickField.JUMPING_SUMO_SPEED); + public JumpingSumoMoveBackwardBrick(Formula durationInSeconds, Formula powerInPercent) { + addAllowedBrickField(BrickField.JUMPING_SUMO_TIME_TO_DRIVE_IN_SECONDS, + R.id.brick_jumping_sumo_move_backward_edit_text_second); + addAllowedBrickField(BrickField.JUMPING_SUMO_SPEED, R.id.brick_jumping_sumo_move_backward_edit_text_power); setFormulaWithBrickField(BrickField.JUMPING_SUMO_TIME_TO_DRIVE_IN_SECONDS, durationInSeconds); setFormulaWithBrickField(BrickField.JUMPING_SUMO_SPEED, powerInPercent); } - @Override - public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createJumpingSumoMoveBackwardAction(sprite, - getFormulaWithBrickField(BrickField.JUMPING_SUMO_TIME_TO_DRIVE_IN_SECONDS), - getFormulaWithBrickField(BrickField.JUMPING_SUMO_SPEED))); - return null; - } - - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_jumping_sumo_move_backward_edit_text_second: - FormulaEditorFragment.showFragment(view, this, BrickField.JUMPING_SUMO_TIME_TO_DRIVE_IN_SECONDS); - break; - case R.id.brick_jumping_sumo_move_backward_edit_text_power: - FormulaEditorFragment.showFragment(view, this, BrickField.JUMPING_SUMO_SPEED); - break; - } - } - @Override public int getViewResource() { return R.layout.brick_jumping_sumo_move_backward; } @Override - public View getView(Context context) { - super.getView(context); - setSecondText(view, R.id.brick_jumping_sumo_move_backward_text_second, R.id.brick_jumping_sumo_move_backward_edit_text_second, BrickField.JUMPING_SUMO_TIME_TO_DRIVE_IN_SECONDS); - - TextView editTime = (TextView) view.findViewById(R.id.brick_jumping_sumo_move_backward_edit_text_second); - getFormulaWithBrickField(BrickField.JUMPING_SUMO_TIME_TO_DRIVE_IN_SECONDS) - .setTextFieldId(R.id.brick_jumping_sumo_move_backward_edit_text_second); - getFormulaWithBrickField(BrickField.JUMPING_SUMO_TIME_TO_DRIVE_IN_SECONDS).refreshTextField(view); - editTime.setOnClickListener(this); - - TextView editPower = (TextView) view.findViewById(R.id.brick_jumping_sumo_move_backward_edit_text_power); - getFormulaWithBrickField(BrickField.JUMPING_SUMO_SPEED) - .setTextFieldId(R.id.brick_jumping_sumo_move_backward_edit_text_power); - getFormulaWithBrickField(BrickField.JUMPING_SUMO_SPEED).refreshTextField(view); - editPower.setOnClickListener(this); - - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textTime = (TextView) prototypeView.findViewById(R.id - .brick_jumping_sumo_move_backward_edit_text_second); - - TextView textPower = (TextView) prototypeView.findViewById(R.id - .brick_jumping_sumo_move_backward_edit_text_power); - textTime.setText(formatNumberForPrototypeView(BrickValues.JUMPING_SUMO_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS / 1000)); - - textPower.setText(formatNumberForPrototypeView(BrickValues.JUMPING_SUMO_MOVE_BRICK_DEFAULT_MOVE_POWER_PERCENT)); - setSecondText(context, prototypeView, R.id.brick_jumping_sumo_move_backward_text_second); - return prototypeView; + public int getRequiredResources() { + return super.getRequiredResources() | Brick.JUMPING_SUMO; } @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.JUMPING_SUMO; + public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { + sequence.addAction(sprite.getActionFactory().createJumpingSumoMoveBackwardAction(sprite, + getFormulaWithBrickField(BrickField.JUMPING_SUMO_TIME_TO_DRIVE_IN_SECONDS), + getFormulaWithBrickField(BrickField.JUMPING_SUMO_SPEED))); + return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoMoveForwardBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoMoveForwardBrick.java index c612aef72d6..82c92d85036 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoMoveForwardBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoMoveForwardBrick.java @@ -22,99 +22,44 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.util.Log; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; public class JumpingSumoMoveForwardBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - private static final String TAG = JumpingSumoMoveForwardBrick.class.getSimpleName(); public JumpingSumoMoveForwardBrick(int durationInMilliseconds, int powerInPercent) { - initializeBrickFields(new Formula(durationInMilliseconds / 1000.0), new Formula(powerInPercent)); + this(new Formula(durationInMilliseconds / 1000.0), new Formula(powerInPercent)); } - private void initializeBrickFields(Formula durationInSeconds, Formula powerInPercent) { - addAllowedBrickField(BrickField.JUMPING_SUMO_TIME_TO_DRIVE_IN_SECONDS); - addAllowedBrickField(BrickField.JUMPING_SUMO_SPEED); + public JumpingSumoMoveForwardBrick(Formula durationInSeconds, Formula powerInPercent) { + addAllowedBrickField(BrickField.JUMPING_SUMO_TIME_TO_DRIVE_IN_SECONDS, + R.id.brick_jumping_sumo_move_forward_edit_text_second); + addAllowedBrickField(BrickField.JUMPING_SUMO_SPEED, R.id.brick_jumping_sumo_move_forward_edit_text_power); setFormulaWithBrickField(BrickField.JUMPING_SUMO_TIME_TO_DRIVE_IN_SECONDS, durationInSeconds); setFormulaWithBrickField(BrickField.JUMPING_SUMO_SPEED, powerInPercent); } - @Override - public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - Log.i(TAG, "add time in ms: " + getFormulaWithBrickField(BrickField.JUMPING_SUMO_TIME_TO_DRIVE_IN_SECONDS) + " power: " + getFormulaWithBrickField(BrickField.JUMPING_SUMO_SPEED)); - sequence.addAction(sprite.getActionFactory().createJumpingSumoMoveForwardAction(sprite, - getFormulaWithBrickField(BrickField.JUMPING_SUMO_TIME_TO_DRIVE_IN_SECONDS), - getFormulaWithBrickField(BrickField.JUMPING_SUMO_SPEED))); - return null; - } - - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_jumping_sumo_move_forward_edit_text_second: - FormulaEditorFragment.showFragment(view, this, BrickField.JUMPING_SUMO_TIME_TO_DRIVE_IN_SECONDS); - break; - case R.id.brick_jumping_sumo_move_forward_edit_text_power: - FormulaEditorFragment.showFragment(view, this, BrickField.JUMPING_SUMO_SPEED); - break; - } - } - @Override public int getViewResource() { return R.layout.brick_jumping_sumo_move_forward; } @Override - public View getView(Context context) { - super.getView(context); - setSecondText(view, R.id.brick_jumping_sumo_move_forward_text_second, R.id - .brick_jumping_sumo_move_forward_edit_text_second, BrickField.JUMPING_SUMO_TIME_TO_DRIVE_IN_SECONDS); - - TextView editTime = (TextView) view.findViewById(R.id.brick_jumping_sumo_move_forward_edit_text_second); - getFormulaWithBrickField(BrickField.JUMPING_SUMO_TIME_TO_DRIVE_IN_SECONDS) - .setTextFieldId(R.id.brick_jumping_sumo_move_forward_edit_text_second); - getFormulaWithBrickField(BrickField.JUMPING_SUMO_TIME_TO_DRIVE_IN_SECONDS).refreshTextField(view); - editTime.setOnClickListener(this); - - TextView editPower = (TextView) view.findViewById(R.id.brick_jumping_sumo_move_forward_edit_text_power); - getFormulaWithBrickField(BrickField.JUMPING_SUMO_SPEED) - .setTextFieldId(R.id.brick_jumping_sumo_move_forward_edit_text_power); - getFormulaWithBrickField(BrickField.JUMPING_SUMO_SPEED).refreshTextField(view); - editPower.setOnClickListener(this); - - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textTime = (TextView) prototypeView.findViewById(R.id - .brick_jumping_sumo_move_forward_edit_text_second); - - TextView textPower = (TextView) prototypeView.findViewById(R.id - .brick_jumping_sumo_move_forward_edit_text_power); - textTime.setText(formatNumberForPrototypeView(BrickValues.JUMPING_SUMO_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS / 1000)); - - textPower.setText(formatNumberForPrototypeView(BrickValues.JUMPING_SUMO_MOVE_BRICK_DEFAULT_MOVE_POWER_PERCENT)); - setSecondText(context, prototypeView, R.id.brick_jumping_sumo_move_forward_text_second); - return prototypeView; + public int getRequiredResources() { + return super.getRequiredResources() | Brick.JUMPING_SUMO; } @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.JUMPING_SUMO; + public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { + sequence.addAction(sprite.getActionFactory().createJumpingSumoMoveForwardAction(sprite, + getFormulaWithBrickField(BrickField.JUMPING_SUMO_TIME_TO_DRIVE_IN_SECONDS), + getFormulaWithBrickField(BrickField.JUMPING_SUMO_SPEED))); + return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoNoSoundBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoNoSoundBrick.java index 9ce5c3178b2..b55722ec01e 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoNoSoundBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoNoSoundBrick.java @@ -22,9 +22,6 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; - import org.catrobat.catroid.R; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; @@ -32,6 +29,7 @@ import java.util.List; public class JumpingSumoNoSoundBrick extends BrickBaseType { + private static final long serialVersionUID = 1L; @Override @@ -39,19 +37,6 @@ public int getViewResource() { return R.layout.brick_jumping_sumo_nosound; } - @Override - public View getView(Context context) { - super.getView(context); - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - - return prototypeView; - } - @Override public int getRequiredResources() { return super.getRequiredResources() | Brick.JUMPING_SUMO; diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoRotateLeftBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoRotateLeftBrick.java index 9ee8cd00f07..04f4ac74b93 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoRotateLeftBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoRotateLeftBrick.java @@ -22,16 +22,10 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -39,24 +33,13 @@ public class JumpingSumoRotateLeftBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - public JumpingSumoRotateLeftBrick(float degree) { - initializeBrickFields(new Formula(degree)); + public JumpingSumoRotateLeftBrick(double degree) { + this(new Formula(degree)); } - private void initializeBrickFields(Formula degree) { - addAllowedBrickField(BrickField.JUMPING_SUMO_ROTATE); - setFormulaWithBrickField(BrickField.JUMPING_SUMO_ROTATE, degree); - } - - @Override - public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createJumpingSumoRotateLeftAction(sprite, - getFormulaWithBrickField(BrickField.JUMPING_SUMO_ROTATE))); - return null; - } - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.JUMPING_SUMO_ROTATE); + public JumpingSumoRotateLeftBrick(Formula formula) { + addAllowedBrickField(BrickField.JUMPING_SUMO_ROTATE, R.id.brick_jumping_sumo_change_left_variable_edit_text); + setFormulaWithBrickField(BrickField.JUMPING_SUMO_ROTATE, formula); } @Override @@ -65,28 +48,14 @@ public int getViewResource() { } @Override - public View getView(Context context) { - super.getView(context); - TextView editDegree = (TextView) view.findViewById(R.id.brick_jumping_sumo_change_left_variable_edit_text); - getFormulaWithBrickField(BrickField.JUMPING_SUMO_ROTATE) - .setTextFieldId(R.id.brick_jumping_sumo_change_left_variable_edit_text); - getFormulaWithBrickField(BrickField.JUMPING_SUMO_ROTATE).refreshTextField(view); - editDegree.setOnClickListener(this); - - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textDegree = (TextView) prototypeView.findViewById(R.id - .brick_jumping_sumo_change_left_variable_edit_text); - textDegree.setText(formatNumberForPrototypeView(BrickValues.JUMPING_SUMO_ROTATE_DEFAULT_DEGREE)); - return prototypeView; + public int getRequiredResources() { + return super.getRequiredResources() | Brick.JUMPING_SUMO; } @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.JUMPING_SUMO; + public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { + sequence.addAction(sprite.getActionFactory() + .createJumpingSumoRotateLeftAction(sprite, getFormulaWithBrickField(BrickField.JUMPING_SUMO_ROTATE))); + return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoRotateRightBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoRotateRightBrick.java index fc40d0ca0e0..637dea422ef 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoRotateRightBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoRotateRightBrick.java @@ -22,16 +22,10 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -39,25 +33,13 @@ public class JumpingSumoRotateRightBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - public JumpingSumoRotateRightBrick(float degree) { - initializeBrickFields(new Formula(degree)); - } - - private void initializeBrickFields(Formula degree) { - addAllowedBrickField(BrickField.JUMPING_SUMO_ROTATE); - setFormulaWithBrickField(BrickField.JUMPING_SUMO_ROTATE, degree); - } - - @Override - public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createJumpingSumoRotateRightAction(sprite, - getFormulaWithBrickField(BrickField.JUMPING_SUMO_ROTATE))); - return null; + public JumpingSumoRotateRightBrick(double degree) { + this(new Formula(degree)); } - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.JUMPING_SUMO_ROTATE); + public JumpingSumoRotateRightBrick(Formula formula) { + addAllowedBrickField(BrickField.JUMPING_SUMO_ROTATE, R.id.brick_jumping_sumo_change_right_variable_edit_text); + setFormulaWithBrickField(BrickField.JUMPING_SUMO_ROTATE, formula); } @Override @@ -66,29 +48,15 @@ public int getViewResource() { } @Override - public View getView(Context context) { - super.getView(context); - TextView editDegree = (TextView) view.findViewById(R.id.brick_jumping_sumo_change_right_variable_edit_text); - getFormulaWithBrickField(BrickField.JUMPING_SUMO_ROTATE) - .setTextFieldId(R.id.brick_jumping_sumo_change_right_variable_edit_text); - getFormulaWithBrickField(BrickField.JUMPING_SUMO_ROTATE).refreshTextField(view); - editDegree.setOnClickListener(this); - - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textDegree = (TextView) prototypeView.findViewById(R.id - .brick_jumping_sumo_change_right_variable_edit_text); - textDegree.setText(formatNumberForPrototypeView(BrickValues.JUMPING_SUMO_ROTATE_DEFAULT_DEGREE)); - return prototypeView; + public int getRequiredResources() { + return super.getRequiredResources() | Brick.JUMPING_SUMO; } @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.JUMPING_SUMO; + public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { + sequence.addAction(sprite.getActionFactory() + .createJumpingSumoRotateRightAction(sprite, getFormulaWithBrickField(BrickField.JUMPING_SUMO_ROTATE))); + return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoSoundBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoSoundBrick.java index b4226787571..062163b94ef 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoSoundBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoSoundBrick.java @@ -28,14 +28,11 @@ import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Spinner; -import android.widget.TextView; import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -43,30 +40,22 @@ public class JumpingSumoSoundBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - private transient View prototypeView; private String soundName; private transient Sounds soundType; - private transient TextView editVolume; public enum Sounds { DEFAULT, ROBOT, INSECT, MONSTER } public JumpingSumoSoundBrick(Sounds sound, int volumeInPercent) { - this.soundType = sound; - this.soundName = soundType.name(); - initializeBrickFields(new Formula(volumeInPercent)); + this(sound, new Formula(volumeInPercent)); } - public JumpingSumoSoundBrick(Sounds sound, Formula volumeInPercent) { + public JumpingSumoSoundBrick(Sounds sound, Formula formula) { this.soundType = sound; this.soundName = soundType.name(); - initializeBrickFields(volumeInPercent); - } - - private void initializeBrickFields(Formula volumeInPercent) { - addAllowedBrickField(BrickField.JUMPING_SUMO_VOLUME); - setFormulaWithBrickField(BrickField.JUMPING_SUMO_VOLUME, volumeInPercent); + addAllowedBrickField(BrickField.JUMPING_SUMO_VOLUME, R.id.brick_jumping_sumo_sound_edit_text); + setFormulaWithBrickField(BrickField.JUMPING_SUMO_VOLUME, formula); } protected Object readResolve() { @@ -77,17 +66,15 @@ protected Object readResolve() { } @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.JUMPING_SUMO; + public int getViewResource() { + return R.layout.brick_jumping_sumo_sound; } @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView editVolume = (TextView) prototypeView.findViewById(R.id.brick_jumping_sumo_sound_edit_text); - editVolume.setText(formatNumberForPrototypeView(BrickValues.JUMPING_SUMO_SOUND_BRICK_DEFAULT_VOLUME_PERCENT)); + View prototypeView = super.getPrototypeView(context); - Spinner soundSpinner = (Spinner) prototypeView.findViewById(R.id.brick_jumping_sumo_sound_spinner); + Spinner soundSpinner = prototypeView.findViewById(R.id.brick_jumping_sumo_sound_spinner); soundSpinner.setFocusableInTouchMode(false); soundSpinner.setFocusable(false); soundSpinner.setEnabled(false); @@ -102,25 +89,16 @@ public View getPrototypeView(Context context) { return prototypeView; } - @Override - public int getViewResource() { - return R.layout.brick_jumping_sumo_sound; - } - @Override public View getView(Context context) { super.getView(context); - editVolume = (TextView) view.findViewById(R.id.brick_jumping_sumo_sound_edit_text); - getFormulaWithBrickField(BrickField.JUMPING_SUMO_VOLUME).setTextFieldId(R.id.brick_jumping_sumo_sound_edit_text); - getFormulaWithBrickField(BrickField.JUMPING_SUMO_VOLUME).refreshTextField(view); - editVolume.setOnClickListener(this); - - ArrayAdapter soundAdapter = ArrayAdapter.createFromResource(context, R.array.brick_jumping_sumo_select_sound_spinner, + ArrayAdapter soundAdapter = ArrayAdapter.createFromResource(context, + R.array.brick_jumping_sumo_select_sound_spinner, android.R.layout.simple_spinner_item); soundAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - Spinner soundSpinner = (Spinner) view.findViewById(R.id.brick_jumping_sumo_sound_spinner); + Spinner soundSpinner = view.findViewById(R.id.brick_jumping_sumo_sound_spinner); soundSpinner.setAdapter(soundAdapter); soundSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @@ -144,8 +122,8 @@ public void onNothingSelected(AdapterView arg0) { } @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.JUMPING_SUMO_VOLUME); + public int getRequiredResources() { + return super.getRequiredResources() | Brick.JUMPING_SUMO; } @Override diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoTakingPictureBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoTakingPictureBrick.java index c5bd8fa0e68..1ddf3127547 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoTakingPictureBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoTakingPictureBrick.java @@ -22,9 +22,6 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; - import org.catrobat.catroid.R; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; @@ -32,24 +29,20 @@ import java.util.List; public class JumpingSumoTakingPictureBrick extends BrickBaseType { + private static final long serialVersionUID = 1L; - @Override - public int getViewResource() { - return R.layout.brick_jumping_sumo_taking_picture; + public JumpingSumoTakingPictureBrick() { } @Override - public View getView(Context context) { - super.getView(context); - return view; + public int getViewResource() { + return R.layout.brick_jumping_sumo_taking_picture; } @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - - return prototypeView; + public int getRequiredResources() { + return super.getRequiredResources() | Brick.JUMPING_SUMO; } @Override @@ -57,9 +50,4 @@ public List addActionToSequence(Sprite sprite, ScriptSeque sequence.addAction(sprite.getActionFactory().createJumpingSumoTakingPictureAction()); return null; } - - @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.JUMPING_SUMO; - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoTurnBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoTurnBrick.java index 512865d5ffa..a9d177ea0d1 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoTurnBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/JumpingSumoTurnBrick.java @@ -22,9 +22,6 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; - import org.catrobat.catroid.R; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; @@ -32,24 +29,20 @@ import java.util.List; public class JumpingSumoTurnBrick extends BrickBaseType { + private static final long serialVersionUID = 1L; - @Override - public int getViewResource() { - return R.layout.brick_jumping_sumo_turn; + public JumpingSumoTurnBrick() { } @Override - public View getView(Context context) { - super.getView(context); - return view; + public int getViewResource() { + return R.layout.brick_jumping_sumo_turn; } @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - - return prototypeView; + public int getRequiredResources() { + return super.getRequiredResources() | Brick.JUMPING_SUMO; } @Override @@ -57,9 +50,4 @@ public List addActionToSequence(Sprite sprite, ScriptSeque sequence.addAction(sprite.getActionFactory().createJumpingSumoTurnAction()); return null; } - - @Override - public int getRequiredResources() { - return super.getRequiredResources() | Brick.JUMPING_SUMO; - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoEv3MotorMoveBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoEv3MotorMoveBrick.java index e360f0e6695..8c48b9b02a1 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoEv3MotorMoveBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoEv3MotorMoveBrick.java @@ -27,44 +27,35 @@ import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Spinner; -import android.widget.TextView; import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; public class LegoEv3MotorMoveBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - private transient View prototypeView; + private static final long serialVersionUID = 1L; private String motor; private transient Motor motorEnum; - private transient TextView editSpeed; public enum Motor { MOTOR_A, MOTOR_B, MOTOR_C, MOTOR_D, MOTOR_B_C } - public LegoEv3MotorMoveBrick() { - addAllowedBrickField(BrickField.LEGO_EV3_SPEED); - } - public LegoEv3MotorMoveBrick(Motor motor, int speedValue) { - this.motorEnum = motor; - this.motor = motorEnum.name(); - initializeBrickFields(new Formula(speedValue)); + + this(motor, new Formula(speedValue)); } - public LegoEv3MotorMoveBrick(Motor motor, Formula speedFormula) { + public LegoEv3MotorMoveBrick(Motor motor, Formula speed) { this.motorEnum = motor; this.motor = motorEnum.name(); - initializeBrickFields(speedFormula); + addAllowedBrickField(BrickField.LEGO_EV3_SPEED, R.id.ev3_motor_move_speed_edit_text); + setFormulaWithBrickField(BrickField.LEGO_EV3_SPEED, speed); } protected Object readResolve() { @@ -74,23 +65,16 @@ protected Object readResolve() { return this; } - private void initializeBrickFields(Formula speed) { - addAllowedBrickField(BrickField.LEGO_EV3_SPEED); - setFormulaWithBrickField(BrickField.LEGO_EV3_SPEED, speed); - } - @Override - public int getRequiredResources() { - return BLUETOOTH_LEGO_EV3 | getFormulaWithBrickField(BrickField.LEGO_EV3_SPEED).getRequiredResources(); + public int getViewResource() { + return R.layout.brick_ev3_motor_move; } @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textSpeed = (TextView) prototypeView.findViewById(R.id.ev3_motor_move_speed_edit_text); - textSpeed.setText(formatNumberForPrototypeView(BrickValues.LEGO_SPEED)); + View prototypeView = super.getPrototypeView(context); - Spinner motorSpinner = (Spinner) prototypeView.findViewById(R.id.brick_ev3_motor_move_spinner); + Spinner motorSpinner = prototypeView.findViewById(R.id.brick_ev3_motor_move_spinner); motorSpinner.setFocusableInTouchMode(false); motorSpinner.setFocusable(false); @@ -103,29 +87,15 @@ public View getPrototypeView(Context context) { return prototypeView; } - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.LEGO_EV3_SPEED); - } - - @Override - public int getViewResource() { - return R.layout.brick_ev3_motor_move; - } - @Override public View getView(Context context) { super.getView(context); - editSpeed = (TextView) view.findViewById(R.id.ev3_motor_move_speed_edit_text); - getFormulaWithBrickField(BrickField.LEGO_EV3_SPEED).setTextFieldId(R.id.ev3_motor_move_speed_edit_text); - getFormulaWithBrickField(BrickField.LEGO_EV3_SPEED).refreshTextField(view); - - editSpeed.setOnClickListener(this); ArrayAdapter motorAdapter = ArrayAdapter.createFromResource(context, R.array.ev3_motor_chooser, android.R.layout.simple_spinner_item); + motorAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - Spinner motorSpinner = (Spinner) view.findViewById(R.id.brick_ev3_motor_move_spinner); + Spinner motorSpinner = view.findViewById(R.id.brick_ev3_motor_move_spinner); motorSpinner.setAdapter(motorAdapter); motorSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @@ -148,6 +118,11 @@ public void onNothingSelected(AdapterView arg0) { return view; } + @Override + public int getRequiredResources() { + return BLUETOOTH_LEGO_EV3 | getFormulaWithBrickField(BrickField.LEGO_EV3_SPEED).getRequiredResources(); + } + @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createLegoEv3SingleMotorMoveAction(sprite, motorEnum, diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoEv3MotorStopBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoEv3MotorStopBrick.java index 9003aae3ec3..1e12ff9d0a2 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoEv3MotorStopBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoEv3MotorStopBrick.java @@ -36,6 +36,7 @@ import java.util.List; public class LegoEv3MotorStopBrick extends BrickBaseType implements OnItemSelectedListener { + private static final long serialVersionUID = 1L; private transient Motor motorEnum; private String motor; @@ -57,14 +58,14 @@ protected Object readResolve() { } @Override - public int getRequiredResources() { - return BLUETOOTH_LEGO_EV3; + public int getViewResource() { + return R.layout.brick_ev3_motor_stop; } @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - Spinner legoSpinner = (Spinner) prototypeView.findViewById(R.id.ev3_stop_motor_spinner); + Spinner legoSpinner = prototypeView.findViewById(R.id.ev3_stop_motor_spinner); legoSpinner.setFocusableInTouchMode(false); legoSpinner.setFocusable(false); @@ -77,11 +78,6 @@ public View getPrototypeView(Context context) { return prototypeView; } - @Override - public int getViewResource() { - return R.layout.brick_ev3_motor_stop; - } - @Override public View getView(Context context) { super.getView(context); @@ -89,7 +85,7 @@ public View getView(Context context) { R.array.ev3_stop_motor_chooser, android.R.layout.simple_spinner_item); motorAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - Spinner motorSpinner = (Spinner) view.findViewById(R.id.ev3_stop_motor_spinner); + Spinner motorSpinner = view.findViewById(R.id.ev3_stop_motor_spinner); motorSpinner.setOnItemSelectedListener(this); if (!(checkbox.getVisibility() == View.VISIBLE)) { @@ -118,6 +114,11 @@ public void onItemSelected(AdapterView parent, View view, int position, long public void onNothingSelected(AdapterView arg0) { } + @Override + public int getRequiredResources() { + return BLUETOOTH_LEGO_EV3; + } + @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createLegoEv3MotorStopAction(motorEnum)); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoEv3MotorTurnAngleBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoEv3MotorTurnAngleBrick.java index 2a973cf29d4..803f2e1af4e 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoEv3MotorTurnAngleBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoEv3MotorTurnAngleBrick.java @@ -27,39 +27,34 @@ import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Spinner; -import android.widget.TextView; import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; public class LegoEv3MotorTurnAngleBrick extends FormulaBrick { + private static final long serialVersionUID = 1L; - private transient View prototypeView; private String motor; private transient Motor motorEnum; - private transient TextView editSpeed; public enum Motor { MOTOR_A, MOTOR_B, MOTOR_C, MOTOR_D, MOTOR_B_C, MOTOR_ALL } public LegoEv3MotorTurnAngleBrick(Motor motor, int degrees) { - this.motorEnum = motor; - this.motor = motorEnum.name(); - initializeBrickFields(new Formula(degrees)); + this(motor, new Formula(degrees)); } public LegoEv3MotorTurnAngleBrick(Motor motor, Formula degreesFormula) { this.motorEnum = motor; this.motor = motorEnum.name(); - initializeBrickFields(degreesFormula); + addAllowedBrickField(BrickField.LEGO_EV3_DEGREES, R.id.ev3_motor_turn_angle_edit_text); + setFormulaWithBrickField(BrickField.LEGO_EV3_DEGREES, degreesFormula); } protected Object readResolve() { @@ -69,23 +64,16 @@ protected Object readResolve() { return this; } - private void initializeBrickFields(Formula degreesFormula) { - addAllowedBrickField(BrickField.LEGO_EV3_DEGREES); - setFormulaWithBrickField(BrickField.LEGO_EV3_DEGREES, degreesFormula); - } - @Override - public int getRequiredResources() { - return BLUETOOTH_LEGO_EV3 | getFormulaWithBrickField(BrickField.LEGO_EV3_DEGREES).getRequiredResources(); + public int getViewResource() { + return R.layout.brick_ev3_motor_turn_angle; } @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textX = (TextView) prototypeView.findViewById(R.id.ev3_motor_turn_angle_edit_text); - textX.setText(formatNumberForPrototypeView(BrickValues.LEGO_ANGLE)); + View prototypeView = super.getPrototypeView(context); - Spinner legoSpinner = (Spinner) prototypeView.findViewById(R.id.lego_ev3_motor_turn_angle_spinner); + Spinner legoSpinner = prototypeView.findViewById(R.id.lego_ev3_motor_turn_angle_spinner); legoSpinner.setFocusableInTouchMode(false); legoSpinner.setFocusable(false); legoSpinner.setEnabled(false); @@ -99,31 +87,15 @@ public View getPrototypeView(Context context) { return prototypeView; } - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.LEGO_EV3_DEGREES); - } - - @Override - public int getViewResource() { - return R.layout.brick_ev3_motor_turn_angle; - } - @Override public View getView(final Context context) { super.getView(context); - editSpeed = (TextView) view.findViewById(R.id.ev3_motor_turn_angle_edit_text); - getFormulaWithBrickField(BrickField.LEGO_EV3_DEGREES).setTextFieldId(R.id.ev3_motor_turn_angle_edit_text); - getFormulaWithBrickField(BrickField.LEGO_EV3_DEGREES).refreshTextField(view); - - editSpeed.setOnClickListener(this); ArrayAdapter motorAdapter = ArrayAdapter.createFromResource(context, R.array.ev3_motor_chooser, android.R.layout.simple_spinner_item); - motorAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - - Spinner motorSpinner = (Spinner) view.findViewById(R.id.lego_ev3_motor_turn_angle_spinner); + motorAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + Spinner motorSpinner = view.findViewById(R.id.lego_ev3_motor_turn_angle_spinner); motorSpinner.setAdapter(motorAdapter); motorSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @@ -137,14 +109,20 @@ public void onItemSelected(AdapterView arg0, View arg1, int position, long ar public void onNothingSelected(AdapterView arg0) { } }); + if (motorEnum == null) { readResolve(); } - motorSpinner.setSelection(motorEnum.ordinal()); + motorSpinner.setSelection(motorEnum.ordinal()); return view; } + @Override + public int getRequiredResources() { + return BLUETOOTH_LEGO_EV3 | getFormulaWithBrickField(BrickField.LEGO_EV3_DEGREES).getRequiredResources(); + } + @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createLegoEv3MotorTurnAngleAction(sprite, motorEnum, diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoEv3PlayToneBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoEv3PlayToneBrick.java index e2014309e24..4adfe1fc934 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoEv3PlayToneBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoEv3PlayToneBrick.java @@ -24,115 +24,55 @@ import android.content.Context; import android.view.View; -import android.widget.TextView; import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; -import org.catrobat.catroid.utils.Utils; -import java.text.NumberFormat; import java.util.List; public class LegoEv3PlayToneBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - - private transient View prototypeView; - public LegoEv3PlayToneBrick() { - addAllowedBrickField(BrickField.LEGO_EV3_FREQUENCY); - addAllowedBrickField(BrickField.LEGO_EV3_DURATION_IN_SECONDS); - addAllowedBrickField(BrickField.LEGO_EV3_VOLUME); - } + private static final long serialVersionUID = 1L; - public LegoEv3PlayToneBrick(int frequencyValue, float durationValue, int volumeValue) { - initializeBrickFields(new Formula(frequencyValue), new Formula(durationValue), new Formula(volumeValue)); + public LegoEv3PlayToneBrick(double frequencyValue, double durationValue, double volumeValue) { + this(new Formula(frequencyValue), new Formula(durationValue), new Formula(volumeValue)); } public LegoEv3PlayToneBrick(Formula frequencyFormula, Formula durationFormula, Formula volumeFormula) { - initializeBrickFields(frequencyFormula, durationFormula, volumeFormula); - } - - private void initializeBrickFields(Formula frequencyFormula, Formula durationFormula, Formula volumeFormula) { - addAllowedBrickField(BrickField.LEGO_EV3_FREQUENCY); - addAllowedBrickField(BrickField.LEGO_EV3_DURATION_IN_SECONDS); - addAllowedBrickField(BrickField.LEGO_EV3_VOLUME); + addAllowedBrickField(BrickField.LEGO_EV3_FREQUENCY, R.id.brick_ev3_tone_freq_edit_text); + addAllowedBrickField(BrickField.LEGO_EV3_DURATION_IN_SECONDS, R.id.brick_ev3_tone_duration_edit_text); + addAllowedBrickField(BrickField.LEGO_EV3_VOLUME, R.id.brick_ev3_tone_volume_edit_text); setFormulaWithBrickField(BrickField.LEGO_EV3_FREQUENCY, frequencyFormula); setFormulaWithBrickField(BrickField.LEGO_EV3_DURATION_IN_SECONDS, durationFormula); setFormulaWithBrickField(BrickField.LEGO_EV3_VOLUME, volumeFormula); } @Override - public int getRequiredResources() { - return BLUETOOTH_LEGO_EV3 | getFormulaWithBrickField(BrickField.LEGO_EV3_FREQUENCY).getRequiredResources() - | getFormulaWithBrickField(BrickField.LEGO_EV3_DURATION_IN_SECONDS).getRequiredResources() - | getFormulaWithBrickField(BrickField.LEGO_EV3_VOLUME).getRequiredResources(); + public int getViewResource() { + return R.layout.brick_ev3_play_tone; } @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - - TextView textDuration = (TextView) prototypeView.findViewById(R.id.brick_ev3_tone_duration_edit_text); - - NumberFormat nf = NumberFormat.getInstance(context.getResources().getConfiguration().locale); - nf.setMinimumFractionDigits(1); - textDuration.setText(nf.format(BrickValues.LEGO_DURATION)); - TextView times = (TextView) prototypeView.findViewById(R.id.brick_ev3_tone_seconds); - times.setText(context.getResources().getQuantityString(R.plurals.second_plural, - Utils.convertDoubleToPluralInteger(BrickValues.LEGO_DURATION))); - - TextView textFreq = (TextView) prototypeView.findViewById(R.id.brick_ev3_tone_freq_edit_text); - textFreq.setText(formatNumberForPrototypeView(BrickValues.LEGO_FREQUENCY)); - - TextView textVol = (TextView) prototypeView.findViewById(R.id.brick_ev3_tone_volume_edit_text); - textVol.setText(formatNumberForPrototypeView(BrickValues.LEGO_VOLUME)); - + View prototypeView = super.getPrototypeView(context); + setSecondsLabel(prototypeView, BrickField.LEGO_EV3_DURATION_IN_SECONDS); return prototypeView; } - @Override - public int getViewResource() { - return R.layout.brick_ev3_play_tone; - } - @Override public View getView(Context context) { super.getView(context); - setSecondText(view, R.id.brick_ev3_tone_seconds, R.id.brick_ev3_tone_duration_edit_text, BrickField.LEGO_EV3_DURATION_IN_SECONDS); - - TextView editFreq = (TextView) view.findViewById(R.id.brick_ev3_tone_freq_edit_text); - getFormulaWithBrickField(BrickField.LEGO_EV3_FREQUENCY).setTextFieldId(R.id.brick_ev3_tone_freq_edit_text); - getFormulaWithBrickField(BrickField.LEGO_EV3_FREQUENCY).refreshTextField(view); - - editFreq.setOnClickListener(this); - - TextView editVol = (TextView) view.findViewById(R.id.brick_ev3_tone_volume_edit_text); - getFormulaWithBrickField(BrickField.LEGO_EV3_VOLUME).setTextFieldId(R.id.brick_ev3_tone_volume_edit_text); - getFormulaWithBrickField(BrickField.LEGO_EV3_VOLUME).refreshTextField(view); - - editVol.setOnClickListener(this); - + setSecondsLabel(view, BrickField.LEGO_EV3_DURATION_IN_SECONDS); return view; } @Override - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_ev3_tone_freq_edit_text: - FormulaEditorFragment.showFragment(view, this, BrickField.LEGO_EV3_FREQUENCY); - break; - case R.id.brick_ev3_tone_volume_edit_text: - FormulaEditorFragment.showFragment(view, this, BrickField.LEGO_EV3_VOLUME); - break; - case R.id.brick_ev3_tone_duration_edit_text: - default: - FormulaEditorFragment.showFragment(view, this, BrickField.LEGO_EV3_DURATION_IN_SECONDS); - break; - } + public int getRequiredResources() { + return BLUETOOTH_LEGO_EV3 | getFormulaWithBrickField(BrickField.LEGO_EV3_FREQUENCY).getRequiredResources() + | getFormulaWithBrickField(BrickField.LEGO_EV3_DURATION_IN_SECONDS).getRequiredResources() + | getFormulaWithBrickField(BrickField.LEGO_EV3_VOLUME).getRequiredResources(); } @Override diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoEv3SetLedBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoEv3SetLedBrick.java index b31da2f0ae5..86c7f542607 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoEv3SetLedBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoEv3SetLedBrick.java @@ -36,6 +36,7 @@ import java.util.List; public class LegoEv3SetLedBrick extends BrickBaseType implements OnItemSelectedListener { + private static final long serialVersionUID = 1L; private transient LedStatus ledStatusEnum; private String ledStatus; @@ -67,7 +68,7 @@ public int getRequiredResources() { public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - Spinner ledStatusSpinner = (Spinner) prototypeView.findViewById(R.id.brick_ev3_set_led_spinner); + Spinner ledStatusSpinner = prototypeView.findViewById(R.id.brick_ev3_set_led_spinner); ledStatusSpinner.setFocusableInTouchMode(false); ledStatusSpinner.setFocusable(false); @@ -92,7 +93,7 @@ public View getView(Context context) { R.array.ev3_led_status_chooser, android.R.layout.simple_spinner_item); ledStatusAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - Spinner ledStatusSpinner = (Spinner) view.findViewById(R.id.brick_ev3_set_led_spinner); + Spinner ledStatusSpinner = view.findViewById(R.id.brick_ev3_set_led_spinner); ledStatusSpinner.setOnItemSelectedListener(this); if (!(checkbox.getVisibility() == View.VISIBLE)) { diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoNxtMotorMoveBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoNxtMotorMoveBrick.java index df7156d368d..ff56a997a48 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoNxtMotorMoveBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoNxtMotorMoveBrick.java @@ -28,44 +28,34 @@ import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; -import android.widget.TextView; import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; public class LegoNxtMotorMoveBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - private transient View prototypeView; + private static final long serialVersionUID = 1L; private String motor; private transient Motor motorEnum; - private transient TextView editSpeed; public enum Motor { MOTOR_A, MOTOR_B, MOTOR_C, MOTOR_B_C } - public LegoNxtMotorMoveBrick() { - addAllowedBrickField(BrickField.LEGO_NXT_SPEED); - } - public LegoNxtMotorMoveBrick(Motor motor, int speedValue) { - this.motorEnum = motor; - this.motor = motorEnum.name(); - initializeBrickFields(new Formula(speedValue)); + this(motor, new Formula(speedValue)); } - public LegoNxtMotorMoveBrick(Motor motor, Formula speedFormula) { + public LegoNxtMotorMoveBrick(Motor motor, Formula formula) { this.motorEnum = motor; this.motor = motorEnum.name(); - initializeBrickFields(speedFormula); + addAllowedBrickField(BrickField.LEGO_NXT_SPEED, R.id.motor_action_speed_edit_text); + setFormulaWithBrickField(BrickField.LEGO_NXT_SPEED, formula); } protected Object readResolve() { @@ -75,57 +65,31 @@ protected Object readResolve() { return this; } - private void initializeBrickFields(Formula speed) { - addAllowedBrickField(BrickField.LEGO_NXT_SPEED); - setFormulaWithBrickField(BrickField.LEGO_NXT_SPEED, speed); - } - @Override - public int getRequiredResources() { - return BLUETOOTH_LEGO_NXT | getFormulaWithBrickField(BrickField.LEGO_NXT_SPEED).getRequiredResources(); + public int getViewResource() { + return R.layout.brick_nxt_motor_action; } @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textSpeed = (TextView) prototypeView.findViewById(R.id.motor_action_speed_edit_text); - textSpeed.setText(formatNumberForPrototypeView(BrickValues.LEGO_SPEED)); - - Spinner legoSpinner = (Spinner) prototypeView.findViewById(R.id.lego_motor_action_spinner); - + View prototypeView = super.getPrototypeView(context); + Spinner spinner = prototypeView.findViewById(R.id.lego_motor_action_spinner); ArrayAdapter motorAdapter = ArrayAdapter.createFromResource(context, R.array.nxt_motor_chooser, android.R.layout.simple_spinner_item); motorAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - - legoSpinner.setAdapter(motorAdapter); - legoSpinner.setSelection(motorEnum.ordinal()); + spinner.setAdapter(motorAdapter); + spinner.setSelection(motorEnum.ordinal()); return prototypeView; } - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.LEGO_NXT_SPEED); - } - - @Override - public int getViewResource() { - return R.layout.brick_nxt_motor_action; - } - @Override public View getView(Context context) { super.getView(context); - editSpeed = (TextView) view.findViewById(R.id.motor_action_speed_edit_text); - getFormulaWithBrickField(BrickField.LEGO_NXT_SPEED).setTextFieldId(R.id.motor_action_speed_edit_text); - getFormulaWithBrickField(BrickField.LEGO_NXT_SPEED).refreshTextField(view); - - editSpeed.setOnClickListener(this); ArrayAdapter motorAdapter = ArrayAdapter.createFromResource(context, R.array.nxt_motor_chooser, android.R.layout.simple_spinner_item); motorAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - Spinner motorSpinner = (Spinner) view.findViewById(R.id.lego_motor_action_spinner); - + Spinner motorSpinner = view.findViewById(R.id.lego_motor_action_spinner); motorSpinner.setAdapter(motorAdapter); motorSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { @@ -137,7 +101,6 @@ public void onItemSelected(AdapterView arg0, View arg1, int position, long ar @Override public void onNothingSelected(AdapterView arg0) { - // TODO Auto-generated method stub } }); if (motorEnum == null) { @@ -148,6 +111,11 @@ public void onNothingSelected(AdapterView arg0) { return view; } + @Override + public int getRequiredResources() { + return BLUETOOTH_LEGO_NXT | getFormulaWithBrickField(BrickField.LEGO_NXT_SPEED).getRequiredResources(); + } + @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createLegoNxtMotorMoveAction(sprite, motorEnum, diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoNxtMotorStopBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoNxtMotorStopBrick.java index 47200ae2129..1d244d36bac 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoNxtMotorStopBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoNxtMotorStopBrick.java @@ -36,6 +36,7 @@ import java.util.List; public class LegoNxtMotorStopBrick extends BrickBaseType implements OnItemSelectedListener { + private static final long serialVersionUID = 1L; private transient Motor motorEnum; private String motor; diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoNxtMotorTurnAngleBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoNxtMotorTurnAngleBrick.java index 17fa60fc235..92b210c80ac 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoNxtMotorTurnAngleBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoNxtMotorTurnAngleBrick.java @@ -28,43 +28,34 @@ import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; -import android.widget.TextView; import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; public class LegoNxtMotorTurnAngleBrick extends FormulaBrick { + private static final long serialVersionUID = 1L; - private transient View prototypeView; private String motor; private transient Motor motorEnum; - private transient TextView editSpeed; public enum Motor { MOTOR_A, MOTOR_B, MOTOR_C, MOTOR_B_C } - public LegoNxtMotorTurnAngleBrick() { - addAllowedBrickField(BrickField.LEGO_NXT_DEGREES); - } - public LegoNxtMotorTurnAngleBrick(Motor motor, int degrees) { - this.motorEnum = motor; - this.motor = motorEnum.name(); - initializeBrickFields(new Formula(degrees)); + this(motor, new Formula(degrees)); } public LegoNxtMotorTurnAngleBrick(Motor motor, Formula degreesFormula) { this.motorEnum = motor; this.motor = motorEnum.name(); - initializeBrickFields(degreesFormula); + addAllowedBrickField(BrickField.LEGO_NXT_DEGREES, R.id.motor_turn_angle_edit_text); + setFormulaWithBrickField(BrickField.LEGO_NXT_DEGREES, degreesFormula); } protected Object readResolve() { @@ -74,23 +65,16 @@ protected Object readResolve() { return this; } - private void initializeBrickFields(Formula degreesFormula) { - addAllowedBrickField(BrickField.LEGO_NXT_DEGREES); - setFormulaWithBrickField(BrickField.LEGO_NXT_DEGREES, degreesFormula); - } - @Override - public int getRequiredResources() { - return BLUETOOTH_LEGO_NXT | getFormulaWithBrickField(BrickField.LEGO_NXT_DEGREES).getRequiredResources(); + public int getViewResource() { + return R.layout.brick_nxt_motor_turn_angle; } @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textX = (TextView) prototypeView.findViewById(R.id.motor_turn_angle_edit_text); - textX.setText(formatNumberForPrototypeView(BrickValues.LEGO_ANGLE)); + View prototypeView = super.getPrototypeView(context); - Spinner legoSpinner = (Spinner) prototypeView.findViewById(R.id.lego_motor_turn_angle_spinner); + Spinner legoSpinner = prototypeView.findViewById(R.id.lego_motor_turn_angle_spinner); ArrayAdapter motorAdapter = ArrayAdapter.createFromResource(context, R.array.nxt_motor_chooser, android.R.layout.simple_spinner_item); @@ -101,31 +85,15 @@ public View getPrototypeView(Context context) { return prototypeView; } - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.LEGO_NXT_DEGREES); - } - - @Override - public int getViewResource() { - return R.layout.brick_nxt_motor_turn_angle; - } - @Override public View getView(final Context context) { super.getView(context); - editSpeed = (TextView) view.findViewById(R.id.motor_turn_angle_edit_text); - getFormulaWithBrickField(BrickField.LEGO_NXT_DEGREES).setTextFieldId(R.id.motor_turn_angle_edit_text); - getFormulaWithBrickField(BrickField.LEGO_NXT_DEGREES).refreshTextField(view); - editSpeed.setOnClickListener(this); - - ArrayAdapter motorAdapter = ArrayAdapter.createFromResource(context, R.array.nxt_motor_chooser, - android.R.layout.simple_spinner_item); + ArrayAdapter motorAdapter = ArrayAdapter + .createFromResource(context, R.array.nxt_motor_chooser, android.R.layout.simple_spinner_item); motorAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - Spinner motorSpinner = (Spinner) view.findViewById(R.id.lego_motor_turn_angle_spinner); - + Spinner motorSpinner = view.findViewById(R.id.lego_motor_turn_angle_spinner); motorSpinner.setAdapter(motorAdapter); motorSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { @@ -139,18 +107,24 @@ public void onItemSelected(AdapterView arg0, View arg1, int position, long ar public void onNothingSelected(AdapterView arg0) { } }); + if (motorEnum == null) { readResolve(); } - motorSpinner.setSelection(motorEnum.ordinal()); + motorSpinner.setSelection(motorEnum.ordinal()); return view; } + @Override + public int getRequiredResources() { + return BLUETOOTH_LEGO_NXT | getFormulaWithBrickField(BrickField.LEGO_NXT_DEGREES).getRequiredResources(); + } + @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createLegoNxtMotorTurnAngleAction(sprite, motorEnum, - getFormulaWithBrickField(BrickField.LEGO_NXT_DEGREES))); + sequence.addAction(sprite.getActionFactory() + .createLegoNxtMotorTurnAngleAction(sprite, motorEnum, getFormulaWithBrickField(BrickField.LEGO_NXT_DEGREES))); return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoNxtPlayToneBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoNxtPlayToneBrick.java index 8440e06b5dc..6ba0d342e76 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoNxtPlayToneBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/LegoNxtPlayToneBrick.java @@ -24,98 +24,58 @@ import android.content.Context; import android.view.View; -import android.widget.TextView; import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; -import org.catrobat.catroid.utils.Utils; -import java.text.NumberFormat; import java.util.List; public class LegoNxtPlayToneBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - - private transient View prototypeView; - private transient TextView editFreq; + private static final long serialVersionUID = 1L; public LegoNxtPlayToneBrick() { - addAllowedBrickField(BrickField.LEGO_NXT_FREQUENCY); - addAllowedBrickField(BrickField.LEGO_NXT_DURATION_IN_SECONDS); + this(new Formula(BrickValues.LEGO_FREQUENCY), new Formula(BrickValues.LEGO_DURATION)); } - public LegoNxtPlayToneBrick(int frequencyValue, float durationValue) { - initializeBrickFields(new Formula(frequencyValue), new Formula(durationValue)); + public LegoNxtPlayToneBrick(double frequencyValue, double durationValue) { + this(new Formula(frequencyValue), new Formula(durationValue)); } public LegoNxtPlayToneBrick(Formula frequencyFormula, Formula durationFormula) { - initializeBrickFields(frequencyFormula, durationFormula); - } - - private void initializeBrickFields(Formula frequencyFormula, Formula durationFormula) { - addAllowedBrickField(BrickField.LEGO_NXT_FREQUENCY); - addAllowedBrickField(BrickField.LEGO_NXT_DURATION_IN_SECONDS); + addAllowedBrickField(BrickField.LEGO_NXT_FREQUENCY, R.id.nxt_tone_freq_edit_text); + addAllowedBrickField(BrickField.LEGO_NXT_DURATION_IN_SECONDS, R.id.nxt_tone_duration_edit_text); setFormulaWithBrickField(BrickField.LEGO_NXT_FREQUENCY, frequencyFormula); setFormulaWithBrickField(BrickField.LEGO_NXT_DURATION_IN_SECONDS, durationFormula); } @Override - public int getRequiredResources() { - return BLUETOOTH_LEGO_NXT | getFormulaWithBrickField(BrickField.LEGO_NXT_FREQUENCY).getRequiredResources() | getFormulaWithBrickField(BrickField.LEGO_NXT_DURATION_IN_SECONDS).getRequiredResources(); + public int getViewResource() { + return R.layout.brick_nxt_play_tone; } @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textDuration = (TextView) prototypeView.findViewById(R.id.nxt_tone_duration_edit_text); - - NumberFormat nf = NumberFormat.getInstance(context.getResources().getConfiguration().locale); - nf.setMinimumFractionDigits(1); - textDuration.setText(nf.format(BrickValues.LEGO_DURATION)); - TextView times = (TextView) prototypeView.findViewById(R.id.brick_nxt_play_tone_seconds); - times.setText(context.getResources().getQuantityString(R.plurals.second_plural, - Utils.convertDoubleToPluralInteger(BrickValues.LEGO_DURATION))); - TextView textFreq = (TextView) prototypeView.findViewById(R.id.nxt_tone_freq_edit_text); - - textFreq.setText(formatNumberForPrototypeView(BrickValues.LEGO_FREQUENCY)); + View prototypeView = super.getPrototypeView(context); + setSecondsLabel(prototypeView, BrickField.LEGO_NXT_DURATION_IN_SECONDS); return prototypeView; } - @Override - public int getViewResource() { - return R.layout.brick_nxt_play_tone; - } - @Override public View getView(Context context) { super.getView(context); - setSecondText(view, R.id.brick_nxt_play_tone_seconds, R.id.nxt_tone_duration_edit_text, BrickField.LEGO_NXT_DURATION_IN_SECONDS); - - editFreq = (TextView) view.findViewById(R.id.nxt_tone_freq_edit_text); - getFormulaWithBrickField(BrickField.LEGO_NXT_FREQUENCY).setTextFieldId(R.id.nxt_tone_freq_edit_text); - getFormulaWithBrickField(BrickField.LEGO_NXT_FREQUENCY).refreshTextField(view); - - editFreq.setOnClickListener(this); - + setSecondsLabel(view, BrickField.LEGO_NXT_DURATION_IN_SECONDS); return view; } @Override - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.nxt_tone_freq_edit_text: - FormulaEditorFragment.showFragment(view, this, BrickField.LEGO_NXT_FREQUENCY); - break; - case R.id.nxt_tone_duration_edit_text: - default: - FormulaEditorFragment.showFragment(view, this, BrickField.LEGO_NXT_DURATION_IN_SECONDS); - break; - } + public int getRequiredResources() { + return BLUETOOTH_LEGO_NXT + | getFormulaWithBrickField(BrickField.LEGO_NXT_FREQUENCY).getRequiredResources() + | getFormulaWithBrickField(BrickField.LEGO_NXT_DURATION_IN_SECONDS).getRequiredResources(); } @Override diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/MoveNStepsBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/MoveNStepsBrick.java index 6fc5231ef36..7fd449ef4a4 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/MoveNStepsBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/MoveNStepsBrick.java @@ -34,7 +34,6 @@ import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.formulaeditor.InterpretationException; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import org.catrobat.catroid.utils.Utils; import java.util.List; @@ -43,48 +42,41 @@ public class MoveNStepsBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - private transient View prototypeView; - public MoveNStepsBrick() { - addAllowedBrickField(BrickField.STEPS); - } - - public MoveNStepsBrick(double stepsValue) { - initializeBrickFields(new Formula(stepsValue)); + this(new Formula(BrickValues.MOVE_STEPS)); } - public MoveNStepsBrick(Formula steps) { - initializeBrickFields(steps); + public MoveNStepsBrick(double steps) { + this(new Formula(steps)); } - private void initializeBrickFields(Formula steps) { - addAllowedBrickField(BrickField.STEPS); - setFormulaWithBrickField(BrickField.STEPS, steps); + public MoveNStepsBrick(Formula formula) { + addAllowedBrickField(BrickField.STEPS, R.id.brick_move_n_steps_edit_text); + setFormulaWithBrickField(BrickField.STEPS, formula); } @Override - public int getRequiredResources() { - return getFormulaWithBrickField(BrickField.STEPS).getRequiredResources(); + public int getViewResource() { + return R.layout.brick_move_n_steps; } @Override - public int getViewResource() { - return R.layout.brick_move_n_steps; + public View getPrototypeView(Context context) { + View prototypeView = super.getPrototypeView(context); + TextView label = prototypeView.findViewById(R.id.brick_move_n_steps_step_text_view); + label.setText(context.getResources().getQuantityString(R.plurals.brick_move_n_step_plural, + Utils.convertDoubleToPluralInteger(BrickValues.MOVE_STEPS))); + return prototypeView; } @Override public View getView(Context context) { super.getView(context); - TextView edit = (TextView) view.findViewById(R.id.brick_move_n_steps_edit_text); - - getFormulaWithBrickField(BrickField.STEPS).setTextFieldId(R.id.brick_move_n_steps_edit_text); - getFormulaWithBrickField(BrickField.STEPS).refreshTextField(view); - - TextView times = (TextView) view.findViewById(R.id.brick_move_n_steps_step_text_view); + TextView label = view.findViewById(R.id.brick_move_n_steps_step_text_view); if (getFormulaWithBrickField(BrickField.STEPS).isSingleNumberFormula()) { try { - times.setText(view.getResources().getQuantityString( + label.setText(view.getResources().getQuantityString( R.plurals.brick_move_n_step_plural, Utils.convertDoubleToPluralInteger(getFormulaWithBrickField(BrickField.STEPS).interpretDouble( ProjectManager.getInstance().getCurrentSprite())) @@ -93,37 +85,22 @@ public View getView(Context context) { Log.d(getClass().getSimpleName(), "Couldn't interpret Formula.", interpretationException); } } else { - - // Random Number to get into the "other" keyword for values like 0.99 or 2.001 seconds or degrees - // in hopefully all possible languages - times.setText(view.getResources().getQuantityString(R.plurals.brick_move_n_step_plural, + label.setText(view.getResources().getQuantityString(R.plurals.brick_move_n_step_plural, Utils.TRANSLATION_PLURAL_OTHER_INTEGER)); } - edit.setOnClickListener(this); return view; } @Override - public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textSteps = (TextView) prototypeView.findViewById(R.id.brick_move_n_steps_edit_text); - textSteps.setText(formatNumberForPrototypeView(BrickValues.MOVE_STEPS)); - TextView times = (TextView) prototypeView.findViewById(R.id.brick_move_n_steps_step_text_view); - times.setText(context.getResources().getQuantityString(R.plurals.brick_move_n_step_plural, - Utils.convertDoubleToPluralInteger(BrickValues.MOVE_STEPS))); - return prototypeView; + public int getRequiredResources() { + return getFormulaWithBrickField(BrickField.STEPS).getRequiredResources(); } @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createMoveNStepsAction(sprite, - getFormulaWithBrickField(BrickField.STEPS))); + sequence.addAction(sprite.getActionFactory() + .createMoveNStepsAction(sprite, getFormulaWithBrickField(BrickField.STEPS))); return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.STEPS); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/NestingBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/NestingBrick.java index 1c44b99dc97..ea01e4a2aa8 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/NestingBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/NestingBrick.java @@ -32,8 +32,5 @@ public interface NestingBrick { boolean isDraggableOver(Brick brick); - /** - * @return List of NestingBricks in order of their appearance - */ List getAllNestingBrickParts(); } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/NoteBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/NoteBrick.java index ca3c279f7a8..f55e031e596 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/NoteBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/NoteBrick.java @@ -22,16 +22,13 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; import android.view.View.OnClickListener; -import android.widget.TextView; import org.catrobat.catroid.R; +import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -40,20 +37,16 @@ public class NoteBrick extends FormulaBrick implements OnClickListener { private static final long serialVersionUID = 1L; public NoteBrick() { - addAllowedBrickField(BrickField.NOTE); + this(new Formula(BrickValues.NOTE)); } public NoteBrick(String note) { - initializeBrickFields(new Formula(note)); + this(new Formula(note)); } - public NoteBrick(Formula note) { - initializeBrickFields(note); - } - - private void initializeBrickFields(Formula note) { - addAllowedBrickField(BrickField.NOTE); - setFormulaWithBrickField(BrickField.NOTE, note); + public NoteBrick(Formula formula) { + addAllowedBrickField(BrickField.NOTE, R.id.brick_note_edit_text); + setFormulaWithBrickField(BrickField.NOTE, formula); } @Override @@ -61,31 +54,8 @@ public int getViewResource() { return R.layout.brick_note; } - @Override - public View getView(final Context context) { - super.getView(context); - TextView textField = view.findViewById(R.id.brick_note_edit_text); - getFormulaWithBrickField(BrickField.NOTE).setTextFieldId(R.id.brick_note_edit_text); - getFormulaWithBrickField(BrickField.NOTE).refreshTextField(view); - textField.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textSpeak = prototypeView.findViewById(R.id.brick_note_edit_text); - textSpeak.setText(context.getString(R.string.brick_note_default_value)); - return prototypeView; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.NOTE); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroIfLogicBeginBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroIfLogicBeginBrick.java index 4b085fc2d0c..e5b871294aa 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroIfLogicBeginBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroIfLogicBeginBrick.java @@ -22,6 +22,7 @@ */ package org.catrobat.catroid.content.bricks; +import android.content.Context; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; @@ -45,7 +46,6 @@ public class PhiroIfLogicBeginBrick extends IfLogicBeginBrick implements OnItemS private int sensorSpinnerPosition = 0; public PhiroIfLogicBeginBrick() { - addAllowedBrickField(BrickField.IF_PHIRO_SENSOR_CONDITION); } @Override @@ -53,22 +53,6 @@ public int getRequiredResources() { return BLUETOOTH_PHIRO; } - public IfLogicElseBrick getIfElseBrick() { - return ifElseBrick; - } - - public void setIfElseBrick(IfLogicElseBrick elseBrick) { - this.ifElseBrick = elseBrick; - } - - public IfLogicEndBrick getIfEndBrick() { - return ifEndBrick; - } - - public void setIfEndBrick(IfLogicEndBrick ifEndBrick) { - this.ifEndBrick = ifEndBrick; - } - @Override public void showFormulaEditorToEditFormula(View view) { } @@ -79,7 +63,23 @@ public int getViewResource() { } @Override - protected void onViewCreated(View view) { + public View getPrototypeView(Context context) { + View prototypeView = super.getPrototypeView(context); + Spinner phiroProSensorSpinner = prototypeView.findViewById(R.id.brick_phiro_sensor_action_spinner); + + ArrayAdapter phiroProSensorSpinnerAdapter = ArrayAdapter + .createFromResource(prototypeView.getContext(), + R.array.brick_phiro_select_sensor_spinner, + android.R.layout.simple_spinner_item); + + phiroProSensorSpinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + phiroProSensorSpinner.setAdapter(phiroProSensorSpinnerAdapter); + phiroProSensorSpinner.setSelection(sensorSpinnerPosition); + return prototypeView; + } + + @Override + protected void onSuperGetViewCalled(Context context) { Spinner phiroProSensorSpinner = view.findViewById(R.id.brick_phiro_sensor_action_spinner); ArrayAdapter phiroProSensorAdapter = ArrayAdapter.createFromResource(view.getContext(), @@ -112,36 +112,6 @@ public void onItemSelected(AdapterView parent, View view, int position, long public void onNothingSelected(AdapterView arg0) { } - @Override - protected void onPrototypeViewCreated(View prototypeView) { - Spinner phiroProSensorSpinner = prototypeView.findViewById(R.id.brick_phiro_sensor_action_spinner); - - ArrayAdapter phiroProSensorSpinnerAdapter = ArrayAdapter - .createFromResource(prototypeView.getContext(), - R.array.brick_phiro_select_sensor_spinner, - android.R.layout.simple_spinner_item); - - phiroProSensorSpinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - phiroProSensorSpinner.setAdapter(phiroProSensorSpinnerAdapter); - phiroProSensorSpinner.setSelection(sensorSpinnerPosition); - } - - @Override - public boolean isInitialized() { - return ifElseBrick != null; - } - - @Override - public void initialize() { - ifElseBrick = new IfLogicElseBrick(this); - ifEndBrick = new IfLogicEndBrick(ifElseBrick, this); - } - - @Override - public boolean isDraggableOver(Brick brick) { - return ifElseBrick != null; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { ScriptSequenceAction ifAction = (ScriptSequenceAction) ActionFactory.eventSequence(sequence.getScript()); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroMotorMoveBackwardBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroMotorMoveBackwardBrick.java index 81a2b8c0977..7c2b75a7d99 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroMotorMoveBackwardBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroMotorMoveBackwardBrick.java @@ -27,9 +27,7 @@ import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; -import android.widget.BaseAdapter; import android.widget.Spinner; -import android.widget.TextView; import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; @@ -38,7 +36,7 @@ import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.formulaeditor.FormulaElement; import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; -import org.catrobat.catroid.ui.fragment.SingleSeekbar; +import org.catrobat.catroid.ui.fragment.SingleSeekBar; import java.util.List; @@ -49,40 +47,27 @@ public class PhiroMotorMoveBackwardBrick extends FormulaBrick { private String motor; private transient Motor motorEnum; - private transient SingleSeekbar speedSeekbar = new SingleSeekbar(this, BrickField.PHIRO_SPEED, R.string.phiro_motor_speed); - public enum Motor { MOTOR_LEFT, MOTOR_RIGHT, MOTOR_BOTH } public PhiroMotorMoveBackwardBrick() { - addAllowedBrickField(BrickField.PHIRO_SPEED); + this(Motor.MOTOR_LEFT, new Formula(BrickValues.PHIRO_SPEED)); } - public PhiroMotorMoveBackwardBrick(Motor motor, int speedValue) { - this.motorEnum = motor; - this.motor = motorEnum.name(); - initializeBrickFields(new Formula(speedValue)); + public PhiroMotorMoveBackwardBrick(Motor motorEnum, int speed) { + this(motorEnum, new Formula(speed)); } - public PhiroMotorMoveBackwardBrick(String motor, Formula speedFormula) { - if (motor != null) { - this.motor = motor; - readResolve(); - } - - initializeBrickFields(speedFormula); - } - - private void initializeBrickFields(Formula speed) { - addAllowedBrickField(BrickField.PHIRO_SPEED); - setFormulaWithBrickField(BrickField.PHIRO_SPEED, speed); + public PhiroMotorMoveBackwardBrick(Motor motorEnum, Formula formula) { + this.motorEnum = motorEnum; + this.motor = motorEnum.name(); + addAllowedBrickField(BrickField.PHIRO_SPEED, R.id.brick_phiro_motor_backward_action_speed_edit_text); + setFormulaWithBrickField(BrickField.PHIRO_SPEED, formula); } - protected Object readResolve() { - if (motor != null) { - motorEnum = Motor.valueOf(motor); - } + public Object readResolve() { + motorEnum = Motor.valueOf(motor); return this; } @@ -94,13 +79,10 @@ public int getRequiredResources() { @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - TextView textSpeed = prototypeView.findViewById(R.id.brick_phiro_motor_backward_action_speed_edit_text); - textSpeed.setText(formatNumberForPrototypeView(BrickValues.PHIRO_SPEED)); Spinner phiroProMotorSpinner = prototypeView.findViewById(R.id.brick_phiro_motor_backward_action_spinner); - - ArrayAdapter motorAdapter = ArrayAdapter.createFromResource(context, R.array.brick_phiro_select_motor_spinner, - android.R.layout.simple_spinner_item); + ArrayAdapter motorAdapter = ArrayAdapter + .createFromResource(context, R.array.brick_phiro_select_motor_spinner, android.R.layout.simple_spinner_item); motorAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); phiroProMotorSpinner.setAdapter(motorAdapter); @@ -110,14 +92,8 @@ public View getPrototypeView(Context context) { } @Override - public BrickBaseType clone() { - return new PhiroMotorMoveBackwardBrick(motor, - getFormulaWithBrickField(BrickField.PHIRO_SPEED).clone()); - } - - @Override - public View getCustomView(Context context, int brickId, BaseAdapter baseAdapter) { - return speedSeekbar.getView(context); + public View getCustomView(Context context) { + return new SingleSeekBar(this, BrickField.PHIRO_SPEED, R.string.phiro_motor_speed).getView(context); } @Override @@ -128,14 +104,8 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - TextView editSpeed = view.findViewById(R.id.brick_phiro_motor_backward_action_speed_edit_text); - getFormulaWithBrickField(BrickField.PHIRO_SPEED).setTextFieldId(R.id.brick_phiro_motor_backward_action_speed_edit_text); - getFormulaWithBrickField(BrickField.PHIRO_SPEED).refreshTextField(view); - - editSpeed.setOnClickListener(this); - - ArrayAdapter motorAdapter = ArrayAdapter.createFromResource(context, R.array.brick_phiro_select_motor_spinner, - android.R.layout.simple_spinner_item); + ArrayAdapter motorAdapter = ArrayAdapter + .createFromResource(context, R.array.brick_phiro_select_motor_spinner, android.R.layout.simple_spinner_item); motorAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); Spinner motorSpinner = view.findViewById(R.id.brick_phiro_motor_backward_action_spinner); @@ -152,31 +122,29 @@ public void onItemSelected(AdapterView arg0, View arg1, int position, long ar public void onNothingSelected(AdapterView arg0) { } }); - if (motorEnum == null) { - readResolve(); - } - motorSpinner.setSelection(motorEnum.ordinal()); + motorSpinner.setSelection(motorEnum.ordinal()); return view; } @Override public void showFormulaEditorToEditFormula(View view) { if (isSpeedOnlyANumber()) { - FormulaEditorFragment.showCustomFragment(view, this, BrickField.PHIRO_SPEED); + FormulaEditorFragment.showCustomFragment(view.getContext(), this, BrickField.PHIRO_SPEED); } else { - FormulaEditorFragment.showFragment(view, this, BrickField.PHIRO_SPEED); + super.showFormulaEditorToEditFormula(view); } } private boolean isSpeedOnlyANumber() { - return getFormulaWithBrickField(BrickField.PHIRO_SPEED).getRoot().getElementType() - == FormulaElement.ElementType.NUMBER; + return getFormulaWithBrickField(BrickField.PHIRO_SPEED).getRoot() + .getElementType() == FormulaElement.ElementType.NUMBER; } @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createPhiroMotorMoveBackwardActionAction(sprite, motorEnum, getFormulaWithBrickField(BrickField.PHIRO_SPEED))); + sequence.addAction(sprite.getActionFactory().createPhiroMotorMoveBackwardActionAction(sprite, motorEnum, + getFormulaWithBrickField(BrickField.PHIRO_SPEED))); return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroMotorMoveForwardBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroMotorMoveForwardBrick.java index d2adcefdd90..758e8c1657d 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroMotorMoveForwardBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroMotorMoveForwardBrick.java @@ -27,9 +27,7 @@ import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; -import android.widget.BaseAdapter; import android.widget.Spinner; -import android.widget.TextView; import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; @@ -38,7 +36,7 @@ import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.formulaeditor.FormulaElement; import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; -import org.catrobat.catroid.ui.fragment.SingleSeekbar; +import org.catrobat.catroid.ui.fragment.SingleSeekBar; import java.util.List; @@ -49,60 +47,42 @@ public class PhiroMotorMoveForwardBrick extends FormulaBrick { private String motor; private transient Motor motorEnum; - private transient SingleSeekbar speedSeekbar = - new SingleSeekbar(this, BrickField.PHIRO_SPEED, R.string.phiro_motor_speed); - public enum Motor { MOTOR_LEFT, MOTOR_RIGHT, MOTOR_BOTH } public PhiroMotorMoveForwardBrick() { - addAllowedBrickField(BrickField.PHIRO_SPEED); + this(Motor.MOTOR_LEFT, new Formula(BrickValues.PHIRO_SPEED)); } - public PhiroMotorMoveForwardBrick(Motor motor, int speedValue) { - this.motorEnum = motor; - this.motor = motorEnum.name(); - - initializeBrickFields(new Formula(speedValue)); - } - - public PhiroMotorMoveForwardBrick(String motor, Formula speedFormula) { - if (motor != null) { - this.motor = motor; - readResolve(); - } - - initializeBrickFields(speedFormula); + public PhiroMotorMoveForwardBrick(Motor motorEnum, int speed) { + this(motorEnum, new Formula(speed)); } - private void initializeBrickFields(Formula speed) { - addAllowedBrickField(BrickField.PHIRO_SPEED); - setFormulaWithBrickField(BrickField.PHIRO_SPEED, speed); + public PhiroMotorMoveForwardBrick(Motor motorEnum, Formula formula) { + this.motorEnum = motorEnum; + this.motor = motorEnum.name(); + addAllowedBrickField(BrickField.PHIRO_SPEED, R.id.brick_phiro_motor_forward_action_speed_edit_text); + setFormulaWithBrickField(BrickField.PHIRO_SPEED, formula); } - protected Object readResolve() { - if (motor != null) { - motorEnum = Motor.valueOf(motor); - } + public Object readResolve() { + motorEnum = Motor.valueOf(motor); return this; } @Override - public int getRequiredResources() { - return BLUETOOTH_PHIRO | getFormulaWithBrickField(BrickField.PHIRO_SPEED).getRequiredResources(); + public int getViewResource() { + return R.layout.brick_phiro_motor_forward; } @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - TextView textSpeed = (TextView) prototypeView.findViewById(R.id.brick_phiro_motor_forward_action_speed_edit_text); - textSpeed.setText(formatNumberForPrototypeView(BrickValues.PHIRO_SPEED)); - Spinner phiroProMotorSpinner = (Spinner) prototypeView.findViewById(R.id.brick_phiro_motor_forward_action_spinner); - - ArrayAdapter motorAdapter = ArrayAdapter.createFromResource(context, R.array.brick_phiro_select_motor_spinner, - android.R.layout.simple_spinner_item); + Spinner phiroProMotorSpinner = prototypeView.findViewById(R.id.brick_phiro_motor_forward_action_spinner); + ArrayAdapter motorAdapter = ArrayAdapter + .createFromResource(context, R.array.brick_phiro_select_motor_spinner, android.R.layout.simple_spinner_item); motorAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); phiroProMotorSpinner.setAdapter(motorAdapter); @@ -111,44 +91,13 @@ public View getPrototypeView(Context context) { return prototypeView; } - @Override - public BrickBaseType clone() { - return new PhiroMotorMoveForwardBrick(motor, - getFormulaWithBrickField(BrickField.PHIRO_SPEED).clone()); - } - - @Override - public void showFormulaEditorToEditFormula(View view) { - if (isSpeedOnlyANumber()) { - FormulaEditorFragment.showCustomFragment(view, this, BrickField.PHIRO_SPEED); - } else { - FormulaEditorFragment.showFragment(view, this, BrickField.PHIRO_SPEED); - } - } - - private boolean isSpeedOnlyANumber() { - return getFormulaWithBrickField(BrickField.PHIRO_SPEED).getRoot().getElementType() - == FormulaElement.ElementType.NUMBER; - } - - @Override - public int getViewResource() { - return R.layout.brick_phiro_motor_forward; - } - @Override public View getView(Context context) { super.getView(context); - TextView editSpeed = (TextView) view.findViewById(R.id.brick_phiro_motor_forward_action_speed_edit_text); - getFormulaWithBrickField(BrickField.PHIRO_SPEED).setTextFieldId(R.id.brick_phiro_motor_forward_action_speed_edit_text); - getFormulaWithBrickField(BrickField.PHIRO_SPEED).refreshTextField(view); - - editSpeed.setOnClickListener(this); - - ArrayAdapter motorAdapter = ArrayAdapter.createFromResource(context, R.array.brick_phiro_select_motor_spinner, - android.R.layout.simple_spinner_item); + ArrayAdapter motorAdapter = ArrayAdapter + .createFromResource(context, R.array.brick_phiro_select_motor_spinner, android.R.layout.simple_spinner_item); motorAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - Spinner motorSpinner = (Spinner) view.findViewById(R.id.brick_phiro_motor_forward_action_spinner); + Spinner motorSpinner = view.findViewById(R.id.brick_phiro_motor_forward_action_spinner); motorSpinner.setAdapter(motorAdapter); motorSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { @@ -163,17 +112,33 @@ public void onItemSelected(AdapterView arg0, View arg1, int position, long ar public void onNothingSelected(AdapterView arg0) { } }); - if (motorEnum == null) { - readResolve(); - } - motorSpinner.setSelection(motorEnum.ordinal()); + motorSpinner.setSelection(motorEnum.ordinal()); return view; } @Override - public View getCustomView(Context context, int brickId, BaseAdapter baseAdapter) { - return speedSeekbar.getView(context); + public View getCustomView(Context context) { + return new SingleSeekBar(this, BrickField.PHIRO_SPEED, R.string.phiro_motor_speed).getView(context); + } + + @Override + public void showFormulaEditorToEditFormula(View view) { + if (isSpeedOnlyANumber()) { + FormulaEditorFragment.showCustomFragment(view.getContext(), this, BrickField.PHIRO_SPEED); + } else { + super.showFormulaEditorToEditFormula(view); + } + } + + private boolean isSpeedOnlyANumber() { + return getFormulaWithBrickField(BrickField.PHIRO_SPEED) + .getRoot().getElementType() == FormulaElement.ElementType.NUMBER; + } + + @Override + public int getRequiredResources() { + return BLUETOOTH_PHIRO | getFormulaWithBrickField(BrickField.PHIRO_SPEED).getRequiredResources(); } @Override diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroMotorStopBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroMotorStopBrick.java index d890ad14ed3..1a7017eee92 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroMotorStopBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroMotorStopBrick.java @@ -36,7 +36,9 @@ import java.util.List; public class PhiroMotorStopBrick extends BrickBaseType implements OnItemSelectedListener { + private static final long serialVersionUID = 1L; + private transient Motor motorEnum; private String motor; @@ -44,27 +46,24 @@ public enum Motor { MOTOR_LEFT, MOTOR_RIGHT, MOTOR_BOTH } - public PhiroMotorStopBrick(Motor motor) { - this.motorEnum = motor; - this.motor = motorEnum.name(); + public PhiroMotorStopBrick() { + this(Motor.MOTOR_BOTH); } - protected Object readResolve() { - if (motor != null) { - motorEnum = Motor.valueOf(motor); - } - return this; + public PhiroMotorStopBrick(Motor motorEnum) { + this.motorEnum = motorEnum; + this.motor = motorEnum.name(); } - @Override - public int getRequiredResources() { - return BLUETOOTH_PHIRO; + public Object readResolve() { + motorEnum = Motor.valueOf(motor); + return this; } @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - Spinner phiroProSpinner = (Spinner) prototypeView.findViewById(R.id.brick_phiro_stop_motor_spinner); + Spinner phiroProSpinner = prototypeView.findViewById(R.id.brick_phiro_stop_motor_spinner); ArrayAdapter motorAdapter = ArrayAdapter.createFromResource(context, R.array.brick_phiro_stop_motor_spinner, android.R.layout.simple_spinner_item); @@ -87,13 +86,10 @@ public View getView(Context context) { R.array.brick_phiro_stop_motor_spinner, android.R.layout.simple_spinner_item); motorAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - Spinner motorSpinner = (Spinner) view.findViewById(R.id.brick_phiro_stop_motor_spinner); + Spinner motorSpinner = view.findViewById(R.id.brick_phiro_stop_motor_spinner); motorSpinner.setOnItemSelectedListener(this); motorSpinner.setAdapter(motorAdapter); - if (motorEnum == null) { - readResolve(); - } motorSpinner.setSelection(motorEnum.ordinal()); return view; } @@ -108,6 +104,11 @@ public void onItemSelected(AdapterView parent, View view, int position, long public void onNothingSelected(AdapterView arg0) { } + @Override + public int getRequiredResources() { + return BLUETOOTH_PHIRO; + } + @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createPhiroMotorStopActionAction(motorEnum)); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroPlayToneBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroPlayToneBrick.java index 91a81056a14..b574095b20f 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroPlayToneBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroPlayToneBrick.java @@ -28,15 +28,12 @@ import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; -import android.widget.TextView; import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; -import org.catrobat.catroid.utils.Utils; import java.util.List; @@ -44,8 +41,6 @@ public class PhiroPlayToneBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - private transient View prototypeView; - private String tone; private transient Tone toneEnum; @@ -54,73 +49,56 @@ public enum Tone { } public PhiroPlayToneBrick() { - addAllowedBrickField(BrickField.PHIRO_DURATION_IN_SECONDS); + this(Tone.DO, new Formula(BrickValues.PHIRO_DURATION)); } - public PhiroPlayToneBrick(Tone tone, int durationValue) { - this.toneEnum = tone; - this.tone = toneEnum.name(); - initializeBrickFields(new Formula(durationValue)); + public PhiroPlayToneBrick(Tone toneEnum, int duration) { + this(toneEnum, new Formula(duration)); } - public PhiroPlayToneBrick(Tone tone, Formula durationFormula) { - this.toneEnum = tone; + public PhiroPlayToneBrick(Tone toneEnum, Formula formula) { + this.toneEnum = toneEnum; this.tone = toneEnum.name(); - initializeBrickFields(durationFormula); + addAllowedBrickField(BrickField.PHIRO_DURATION_IN_SECONDS, R.id.brick_phiro_play_tone_duration_edit_text); + setFormulaWithBrickField(BrickField.PHIRO_DURATION_IN_SECONDS, formula); } - protected Object readResolve() { - if (tone != null) { - toneEnum = Tone.valueOf(tone); - } + public Object readResolve() { + toneEnum = Tone.valueOf(tone); return this; } - private void initializeBrickFields(Formula duration) { - addAllowedBrickField(BrickField.PHIRO_DURATION_IN_SECONDS); - setFormulaWithBrickField(BrickField.PHIRO_DURATION_IN_SECONDS, duration); - } - @Override - public int getRequiredResources() { - return BLUETOOTH_PHIRO | getFormulaWithBrickField(BrickField.PHIRO_DURATION_IN_SECONDS).getRequiredResources(); + public int getViewResource() { + return R.layout.brick_phiro_play_tone; } @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textDuration = (TextView) prototypeView.findViewById(R.id.brick_phiro_play_tone_duration_edit_text); - textDuration.setText(formatNumberForPrototypeView(BrickValues.PHIRO_DURATION)); - TextView times = (TextView) prototypeView.findViewById(R.id.brick_phiro_play_tone_seconds_text_view); - times.setText(context.getResources().getQuantityString(R.plurals.second_plural, - Utils.convertDoubleToPluralInteger(BrickValues.PHIRO_DURATION))); + View prototypeView = super.getPrototypeView(context); - Spinner phiroProToneSpinner = (Spinner) prototypeView.findViewById(R.id.brick_phiro_select_tone_spinner); + Spinner phiroProToneSpinner = prototypeView.findViewById(R.id.brick_phiro_select_tone_spinner); - ArrayAdapter toneAdapter = ArrayAdapter.createFromResource(context, R.array.brick_phiro_select_tone_spinner, - android.R.layout.simple_spinner_item); - toneAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + ArrayAdapter toneAdapter = ArrayAdapter + .createFromResource(context, R.array.brick_phiro_select_tone_spinner, android.R.layout.simple_spinner_item); + toneAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); phiroProToneSpinner.setAdapter(toneAdapter); phiroProToneSpinner.setSelection(toneEnum.ordinal()); - return prototypeView; - } - @Override - public int getViewResource() { - return R.layout.brick_phiro_play_tone; + setSecondsLabel(prototypeView, BrickField.PHIRO_DURATION_IN_SECONDS); + return prototypeView; } @Override public View getView(Context context) { super.getView(context); - setSecondText(view, R.id.brick_phiro_play_tone_seconds_text_view, R.id.brick_phiro_play_tone_duration_edit_text, BrickField.PHIRO_DURATION_IN_SECONDS); - ArrayAdapter toneAdapter = ArrayAdapter.createFromResource(context, R.array.brick_phiro_select_tone_spinner, - android.R.layout.simple_spinner_item); - toneAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - Spinner toneSpinner = (Spinner) view.findViewById(R.id.brick_phiro_select_tone_spinner); + ArrayAdapter toneAdapter = ArrayAdapter + .createFromResource(context, R.array.brick_phiro_select_tone_spinner, android.R.layout.simple_spinner_item); + toneAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + Spinner toneSpinner = view.findViewById(R.id.brick_phiro_select_tone_spinner); toneSpinner.setAdapter(toneAdapter); toneSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { @@ -134,25 +112,23 @@ public void onItemSelected(AdapterView arg0, View arg1, int position, long ar public void onNothingSelected(AdapterView arg0) { } }); - if (toneEnum == null) { - readResolve(); - } - toneSpinner.setSelection(toneEnum.ordinal()); + toneSpinner.setSelection(toneEnum.ordinal()); + setSecondsLabel(view, BrickField.PHIRO_DURATION_IN_SECONDS); return view; } @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.PHIRO_DURATION_IN_SECONDS); + public int getRequiredResources() { + return BLUETOOTH_PHIRO | getFormulaWithBrickField(BrickField.PHIRO_DURATION_IN_SECONDS).getRequiredResources(); } @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createPhiroPlayToneActionAction(sprite, toneEnum, getFormulaWithBrickField(BrickField.PHIRO_DURATION_IN_SECONDS))); - sequence.addAction(sprite.getActionFactory().createDelayAction(sprite, getFormulaWithBrickField(BrickField - .PHIRO_DURATION_IN_SECONDS))); + sequence.addAction(sprite.getActionFactory() + .createDelayAction(sprite, getFormulaWithBrickField(BrickField.PHIRO_DURATION_IN_SECONDS))); return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroRGBLightBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroRGBLightBrick.java index a5d15bd0797..5620c0e7879 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroRGBLightBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PhiroRGBLightBrick.java @@ -27,9 +27,7 @@ import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; -import android.widget.BaseAdapter; import android.widget.Spinner; -import android.widget.TextView; import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; @@ -43,6 +41,7 @@ import java.util.List; public class PhiroRGBLightBrick extends FormulaBrick { + private static final long serialVersionUID = 1L; public enum Eye { @@ -52,45 +51,31 @@ public enum Eye { private String eye; private transient Eye eyeEnum; - private transient ColorSeekbar colorSeekbar = new ColorSeekbar(this, BrickField.PHIRO_LIGHT_RED, - BrickField.PHIRO_LIGHT_GREEN, BrickField.PHIRO_LIGHT_BLUE); - - protected Object readResolve() { - if (eye != null) { - eyeEnum = Eye.valueOf(eye); - } - return this; - } - public PhiroRGBLightBrick() { - addAllowedBrickField(BrickField.PHIRO_LIGHT_RED); - addAllowedBrickField(BrickField.PHIRO_LIGHT_GREEN); - addAllowedBrickField(BrickField.PHIRO_LIGHT_BLUE); + this(Eye.BOTH, new Formula(BrickValues.PHIRO_VALUE_RED), + new Formula(BrickValues.PHIRO_VALUE_GREEN), + new Formula(BrickValues.PHIRO_VALUE_BLUE)); } - public PhiroRGBLightBrick(Eye eye, int red, int green, int blue) { - this.eyeEnum = eye; - this.eye = eyeEnum.name(); - - initializeBrickFields(new Formula(red), new Formula(green), new Formula(blue)); + public PhiroRGBLightBrick(Eye eyeEnum, int red, int green, int blue) { + this(eyeEnum, new Formula(red), new Formula(green), new Formula(blue)); } - public PhiroRGBLightBrick(String eye, Formula red, Formula green, Formula blue) { - if (eye != null) { - this.eye = eye; - readResolve(); - } + public PhiroRGBLightBrick(Eye eyeEnum, Formula redFormula, Formula greenFormula, Formula blueFormula) { + this.eyeEnum = eyeEnum; + this.eye = eyeEnum.name(); - initializeBrickFields(red, green, blue); + addAllowedBrickField(BrickField.PHIRO_LIGHT_RED, R.id.brick_phiro_rgb_led_action_red_edit_text); + addAllowedBrickField(BrickField.PHIRO_LIGHT_GREEN, R.id.brick_phiro_rgb_led_action_green_edit_text); + addAllowedBrickField(BrickField.PHIRO_LIGHT_BLUE, R.id.brick_phiro_rgb_led_action_blue_edit_text); + setFormulaWithBrickField(BrickField.PHIRO_LIGHT_RED, redFormula); + setFormulaWithBrickField(BrickField.PHIRO_LIGHT_GREEN, greenFormula); + setFormulaWithBrickField(BrickField.PHIRO_LIGHT_BLUE, blueFormula); } - private void initializeBrickFields(Formula red, Formula green, Formula blue) { - addAllowedBrickField(BrickField.PHIRO_LIGHT_RED); - addAllowedBrickField(BrickField.PHIRO_LIGHT_GREEN); - addAllowedBrickField(BrickField.PHIRO_LIGHT_BLUE); - setFormulaWithBrickField(BrickField.PHIRO_LIGHT_RED, red); - setFormulaWithBrickField(BrickField.PHIRO_LIGHT_GREEN, green); - setFormulaWithBrickField(BrickField.PHIRO_LIGHT_BLUE, blue); + public Object readResolve() { + eyeEnum = Eye.valueOf(eye); + return this; } @Override @@ -105,15 +90,6 @@ public int getRequiredResources() { public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - TextView textValueRed = prototypeView.findViewById(R.id.brick_phiro_rgb_led_action_red_edit_text); - textValueRed.setText(formatNumberForPrototypeView(BrickValues.PHIRO_VALUE_RED)); - - TextView textValueGreen = prototypeView.findViewById(R.id.brick_phiro_rgb_led_action_green_edit_text); - textValueGreen.setText(formatNumberForPrototypeView(BrickValues.PHIRO_VALUE_GREEN)); - - TextView textValueBlue = prototypeView.findViewById(R.id.brick_phiro_rgb_led_action_blue_edit_text); - textValueBlue.setText(formatNumberForPrototypeView(BrickValues.PHIRO_VALUE_BLUE)); - Spinner eyeSpinner = prototypeView.findViewById(R.id.brick_phiro_rgb_light_spinner); ArrayAdapter eyeAdapter = ArrayAdapter.createFromResource(context, @@ -126,44 +102,9 @@ public View getPrototypeView(Context context) { return prototypeView; } - @Override - public BrickBaseType clone() { - return new PhiroRGBLightBrick(eye, - getFormulaWithBrickField(BrickField.PHIRO_LIGHT_RED).clone(), - getFormulaWithBrickField(BrickField.PHIRO_LIGHT_GREEN).clone(), - getFormulaWithBrickField(BrickField.PHIRO_LIGHT_BLUE).clone()); - } - - @Override - public View getCustomView(Context context, int brickId, BaseAdapter baseAdapter) { - return colorSeekbar.getView(context); - } - - @Override - public int getViewResource() { - return R.layout.brick_phiro_rgb_light; - } - @Override public View getView(Context context) { super.getView(context); - TextView editRedValue = view.findViewById(R.id.brick_phiro_rgb_led_action_red_edit_text); - getFormulaWithBrickField(BrickField.PHIRO_LIGHT_RED).setTextFieldId(R.id.brick_phiro_rgb_led_action_red_edit_text); - getFormulaWithBrickField(BrickField.PHIRO_LIGHT_RED).refreshTextField(view); - - editRedValue.setOnClickListener(this); - - TextView editGreenValue = view.findViewById(R.id.brick_phiro_rgb_led_action_green_edit_text); - getFormulaWithBrickField(BrickField.PHIRO_LIGHT_GREEN).setTextFieldId(R.id.brick_phiro_rgb_led_action_green_edit_text); - getFormulaWithBrickField(BrickField.PHIRO_LIGHT_GREEN).refreshTextField(view); - - editGreenValue.setOnClickListener(this); - - TextView editBlueValue = view.findViewById(R.id.brick_phiro_rgb_led_action_blue_edit_text); - getFormulaWithBrickField(BrickField.PHIRO_LIGHT_BLUE).setTextFieldId(R.id.brick_phiro_rgb_led_action_blue_edit_text); - getFormulaWithBrickField(BrickField.PHIRO_LIGHT_BLUE).refreshTextField(view); - - editBlueValue.setOnClickListener(this); ArrayAdapter eyeAdapter = ArrayAdapter.createFromResource(context, R.array.brick_phiro_select_light_spinner, android.R.layout.simple_spinner_item); @@ -183,27 +124,33 @@ public void onItemSelected(AdapterView arg0, View arg1, int position, long ar public void onNothingSelected(AdapterView arg0) { } }); - if (eyeEnum == null) { - readResolve(); - } - eyeSpinner.setSelection(eyeEnum.ordinal()); + eyeSpinner.setSelection(eyeEnum.ordinal()); return view; } + @Override + public View getCustomView(Context context) { + return new ColorSeekbar(this, BrickField.PHIRO_LIGHT_RED, + BrickField.PHIRO_LIGHT_GREEN, BrickField.PHIRO_LIGHT_BLUE).getView(context); + } + @Override public void showFormulaEditorToEditFormula(View view) { if (areAllBrickFieldsNumbers()) { - FormulaEditorFragment.showCustomFragment(view, this, getClickedBrickField(view)); + FormulaEditorFragment.showCustomFragment(view.getContext(), this, getClickedBrickField(view)); } else { - FormulaEditorFragment.showFragment(view, this, getClickedBrickField(view)); + super.showFormulaEditorToEditFormula(view); } } private boolean areAllBrickFieldsNumbers() { - return (getFormulaWithBrickField(BrickField.PHIRO_LIGHT_RED).getRoot().getElementType() == FormulaElement.ElementType.NUMBER) - && (getFormulaWithBrickField(BrickField.PHIRO_LIGHT_GREEN).getRoot().getElementType() == FormulaElement.ElementType.NUMBER) - && (getFormulaWithBrickField(BrickField.PHIRO_LIGHT_BLUE).getRoot().getElementType() == FormulaElement.ElementType.NUMBER); + return (getFormulaWithBrickField(BrickField.PHIRO_LIGHT_RED).getRoot().getElementType() + == FormulaElement.ElementType.NUMBER) + && (getFormulaWithBrickField(BrickField.PHIRO_LIGHT_GREEN).getRoot().getElementType() + == FormulaElement.ElementType.NUMBER) + && (getFormulaWithBrickField(BrickField.PHIRO_LIGHT_BLUE).getRoot().getElementType() + == FormulaElement.ElementType.NUMBER); } private BrickField getClickedBrickField(View view) { @@ -218,6 +165,11 @@ private BrickField getClickedBrickField(View view) { } } + @Override + public int getViewResource() { + return R.layout.brick_phiro_rgb_light; + } + @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createPhiroRgbLedEyeActionAction(sprite, eyeEnum, diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PlaceAtBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PlaceAtBrick.java index 67ce5be385a..439e0fb43e3 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PlaceAtBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PlaceAtBrick.java @@ -22,16 +22,11 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -40,21 +35,16 @@ public class PlaceAtBrick extends FormulaBrick { private static final long serialVersionUID = 1L; public PlaceAtBrick() { - addAllowedBrickField(BrickField.X_POSITION); - addAllowedBrickField(BrickField.Y_POSITION); + this(new Formula(BrickValues.X_POSITION), new Formula(BrickValues.Y_POSITION)); } public PlaceAtBrick(int xPositionValue, int yPositionValue) { - initializeBrickFields(new Formula(xPositionValue), new Formula(yPositionValue)); + this(new Formula(xPositionValue), new Formula(yPositionValue)); } public PlaceAtBrick(Formula xPosition, Formula yPosition) { - initializeBrickFields(xPosition, yPosition); - } - - private void initializeBrickFields(Formula xPosition, Formula yPosition) { - addAllowedBrickField(BrickField.X_POSITION); - addAllowedBrickField(BrickField.Y_POSITION); + addAllowedBrickField(BrickField.X_POSITION, R.id.brick_place_at_edit_text_x); + addAllowedBrickField(BrickField.Y_POSITION, R.id.brick_place_at_edit_text_y); setFormulaWithBrickField(BrickField.X_POSITION, xPosition); setFormulaWithBrickField(BrickField.Y_POSITION, yPosition); } @@ -70,32 +60,6 @@ public int getViewResource() { return R.layout.brick_place_at; } - @Override - public View getView(Context context) { - super.getView(context); - TextView editX = view.findViewById(R.id.brick_place_at_edit_text_x); - getFormulaWithBrickField(BrickField.X_POSITION).setTextFieldId(R.id.brick_place_at_edit_text_x); - getFormulaWithBrickField(BrickField.X_POSITION).refreshTextField(view); - - editX.setOnClickListener(this); - - TextView editY = view.findViewById(R.id.brick_place_at_edit_text_y); - getFormulaWithBrickField(BrickField.Y_POSITION).setTextFieldId(R.id.brick_place_at_edit_text_y); - getFormulaWithBrickField(BrickField.Y_POSITION).refreshTextField(view); - editY.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textX = prototypeView.findViewById(R.id.brick_place_at_edit_text_x); - textX.setText(formatNumberForPrototypeView(BrickValues.X_POSITION)); - TextView textY = prototypeView.findViewById(R.id.brick_place_at_edit_text_y); - textY.setText(formatNumberForPrototypeView(BrickValues.Y_POSITION)); - return prototypeView; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createPlaceAtAction(sprite, @@ -103,17 +67,4 @@ public List addActionToSequence(Sprite sprite, ScriptSeque getFormulaWithBrickField(BrickField.Y_POSITION))); return null; } - - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_place_at_edit_text_y: - FormulaEditorFragment.showFragment(view, this, BrickField.Y_POSITION); - break; - - case R.id.brick_place_at_edit_text_x: - default: - FormulaEditorFragment.showFragment(view, this, BrickField.X_POSITION); - break; - } - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PointInDirectionBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PointInDirectionBrick.java index 20e7e1f6e91..9678acee513 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/PointInDirectionBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/PointInDirectionBrick.java @@ -22,16 +22,10 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -39,68 +33,23 @@ public class PointInDirectionBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - public enum Direction { - RIGHT(90), LEFT(-90), UP(0), DOWN(180); - - private double directionDegrees; - - Direction(double degrees) { - directionDegrees = degrees; - } - - public double getDegrees() { - return directionDegrees; - } - } - - public PointInDirectionBrick() { - addAllowedBrickField(BrickField.DEGREES); - } - - public PointInDirectionBrick(Direction direction) { - initializeBrickFields(new Formula(direction.getDegrees())); - } - - public PointInDirectionBrick(Formula direction) { - initializeBrickFields(direction); - } - public PointInDirectionBrick(double direction) { - initializeBrickFields(new Formula(direction)); + this(new Formula(direction)); } - private void initializeBrickFields(Formula direction) { - addAllowedBrickField(BrickField.DEGREES); + public PointInDirectionBrick(Formula direction) { + addAllowedBrickField(BrickField.DEGREES, R.id.brick_point_in_direction_edit_text); setFormulaWithBrickField(BrickField.DEGREES, direction); } - @Override - public int getRequiredResources() { - return getFormulaWithBrickField(BrickField.DEGREES).getRequiredResources(); - } - @Override public int getViewResource() { return R.layout.brick_point_in_direction; } @Override - public View getView(final Context context) { - super.getView(context); - TextView setAngleTextField = view.findViewById(R.id.brick_point_in_direction_edit_text); - getFormulaWithBrickField(BrickField.DEGREES).setTextFieldId(R.id.brick_point_in_direction_edit_text); - getFormulaWithBrickField(BrickField.DEGREES).refreshTextField(view); - setAngleTextField.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView setAngleTextView = prototypeView - .findViewById(R.id.brick_point_in_direction_edit_text); - setAngleTextView.setText(formatNumberForPrototypeView(BrickValues.POINT_IN_DIRECTION)); - return prototypeView; + public int getRequiredResources() { + return getFormulaWithBrickField(BrickField.DEGREES).getRequiredResources(); } @Override @@ -109,9 +58,4 @@ public List addActionToSequence(Sprite sprite, ScriptSeque .createPointInDirectionAction(sprite, getFormulaWithBrickField(BrickField.DEGREES))); return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.DEGREES); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/RaspiIfLogicBeginBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/RaspiIfLogicBeginBrick.java index c30a67b68f0..2f726029558 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/RaspiIfLogicBeginBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/RaspiIfLogicBeginBrick.java @@ -22,9 +22,6 @@ */ package org.catrobat.catroid.content.bricks; -import android.view.View; -import android.widget.TextView; - import com.badlogic.gdx.scenes.scene2d.Action; import org.catrobat.catroid.R; @@ -32,6 +29,7 @@ import org.catrobat.catroid.content.ActionFactory; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; +import org.catrobat.catroid.formulaeditor.Formula; import java.util.LinkedList; import java.util.List; @@ -41,10 +39,16 @@ public class RaspiIfLogicBeginBrick extends IfLogicBeginBrick { private static final long serialVersionUID = 1L; public RaspiIfLogicBeginBrick() { + this(new Formula(BrickValues.RASPI_DIGITAL_INITIAL_PIN_NUMBER)); } public RaspiIfLogicBeginBrick(int condition) { - super(condition); + this(new Formula(condition)); + } + + public RaspiIfLogicBeginBrick(Formula formula) { + addAllowedBrickField(BrickField.IF_CONDITION, R.id.brick_raspi_if_begin_edit_text); + setFormulaWithBrickField(BrickField.IF_CONDITION, formula); } @Override @@ -58,17 +62,7 @@ public int getViewResource() { } @Override - public void onViewCreated(View view) { - TextView ifBeginTextView = view.findViewById(R.id.brick_raspi_if_begin_edit_text); - getFormulaWithBrickField(BrickField.IF_CONDITION).setTextFieldId(R.id.brick_raspi_if_begin_edit_text); - getFormulaWithBrickField(BrickField.IF_CONDITION).refreshTextField(view); - ifBeginTextView.setOnClickListener(this); - } - - @Override - public void onPrototypeViewCreated(View prototypeView) { - TextView textIfBegin = prototypeView.findViewById(R.id.brick_raspi_if_begin_edit_text); - textIfBegin.setText(formatNumberForPrototypeView(BrickValues.RASPI_DIGITAL_INITIAL_PIN_NUMBER)); + void hidePrototypeElseAndPunctuation() { } @Override @@ -76,8 +70,8 @@ public List addActionToSequence(Sprite sprite, ScriptSeque ScriptSequenceAction ifAction = (ScriptSequenceAction) ActionFactory.eventSequence(sequence.getScript()); ScriptSequenceAction elseAction = (ScriptSequenceAction) ActionFactory.eventSequence(sequence.getScript()); - Action action = sprite.getActionFactory().createRaspiIfLogicActionAction(sprite, - getFormulaWithBrickField(BrickField.IF_CONDITION), ifAction, elseAction); + Action action = sprite.getActionFactory() + .createRaspiIfLogicActionAction(sprite, getFormulaWithBrickField(BrickField.IF_CONDITION), ifAction, elseAction); sequence.addAction(action); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/RaspiPwmBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/RaspiPwmBrick.java index ccd0026cb57..c4f552af4d0 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/RaspiPwmBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/RaspiPwmBrick.java @@ -22,91 +22,42 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; public class RaspiPwmBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - private transient View prototypeView; public RaspiPwmBrick(int pinNumber, double pwmFrequency, double pwmPercentage) { - initializeBrickFields(new Formula(pinNumber), new Formula(pwmFrequency), new Formula(pwmPercentage)); + this(new Formula(pinNumber), new Formula(pwmFrequency), new Formula(pwmPercentage)); } - private void initializeBrickFields(Formula pinNumber, Formula pwmFrequency, Formula pwmPercentage) { - addAllowedBrickField(BrickField.RASPI_DIGITAL_PIN_NUMBER); - addAllowedBrickField(BrickField.RASPI_PWM_FREQUENCY); - addAllowedBrickField(BrickField.RASPI_PWM_PERCENTAGE); + public RaspiPwmBrick(Formula pinNumber, Formula pwmFrequency, Formula pwmPercentage) { + addAllowedBrickField(BrickField.RASPI_DIGITAL_PIN_NUMBER, R.id.brick_raspi_pwm_pin_edit_text); + addAllowedBrickField(BrickField.RASPI_PWM_FREQUENCY, R.id.brick_raspi_pwm_frequency_edit_text); + addAllowedBrickField(BrickField.RASPI_PWM_PERCENTAGE, R.id.brick_raspi_pwm_percentage_edit_text); setFormulaWithBrickField(BrickField.RASPI_DIGITAL_PIN_NUMBER, pinNumber); setFormulaWithBrickField(BrickField.RASPI_PWM_FREQUENCY, pwmFrequency); setFormulaWithBrickField(BrickField.RASPI_PWM_PERCENTAGE, pwmPercentage); } - @Override - public int getRequiredResources() { - return SOCKET_RASPI - | getFormulaWithBrickField(BrickField.RASPI_DIGITAL_PIN_NUMBER).getRequiredResources() - | getFormulaWithBrickField(BrickField.RASPI_PWM_FREQUENCY).getRequiredResources() - | getFormulaWithBrickField(BrickField.RASPI_PWM_PERCENTAGE).getRequiredResources(); - } - - @Override - public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - - TextView textPinNumber = (TextView) prototypeView.findViewById(R.id.brick_raspi_pwm_pin_edit_text); - textPinNumber.setText(formatNumberForPrototypeView(BrickValues.RASPI_DIGITAL_INITIAL_PIN_NUMBER)); - - TextView textPwmPercentage = (TextView) prototypeView.findViewById(R.id - .brick_raspi_pwm_percentage_edit_text); - textPwmPercentage.setText(formatNumberForPrototypeView(BrickValues.RASPI_PWM_INITIAL_PERCENTAGE)); - - TextView textPwmFrequency = (TextView) prototypeView.findViewById(R.id - .brick_raspi_pwm_frequency_edit_text); - textPwmFrequency.setText(formatNumberForPrototypeView(BrickValues.RASPI_PWM_INITIAL_FREQUENCY)); - - return prototypeView; - } - @Override public int getViewResource() { return R.layout.brick_raspi_pwm; } @Override - public View getView(Context context) { - super.getView(context); - TextView editPinNumber = (TextView) view.findViewById(R.id.brick_raspi_pwm_pin_edit_text); - getFormulaWithBrickField(BrickField.RASPI_DIGITAL_PIN_NUMBER).setTextFieldId(R.id.brick_raspi_pwm_pin_edit_text); - getFormulaWithBrickField(BrickField.RASPI_DIGITAL_PIN_NUMBER).refreshTextField(view); - - editPinNumber.setOnClickListener(this); - - TextView editPwmFrequency = (TextView) view.findViewById(R.id.brick_raspi_pwm_frequency_edit_text); - getFormulaWithBrickField(BrickField.RASPI_PWM_FREQUENCY).setTextFieldId(R.id.brick_raspi_pwm_frequency_edit_text); - getFormulaWithBrickField(BrickField.RASPI_PWM_FREQUENCY).refreshTextField(view); - - editPwmFrequency.setOnClickListener(this); - - TextView editPwmPercentage = (TextView) view.findViewById(R.id.brick_raspi_pwm_percentage_edit_text); - getFormulaWithBrickField(BrickField.RASPI_PWM_PERCENTAGE).setTextFieldId(R.id.brick_raspi_pwm_percentage_edit_text); - getFormulaWithBrickField(BrickField.RASPI_PWM_PERCENTAGE).refreshTextField(view); - - editPwmPercentage.setOnClickListener(this); - - return view; + public int getRequiredResources() { + return SOCKET_RASPI + | getFormulaWithBrickField(BrickField.RASPI_DIGITAL_PIN_NUMBER).getRequiredResources() + | getFormulaWithBrickField(BrickField.RASPI_PWM_FREQUENCY).getRequiredResources() + | getFormulaWithBrickField(BrickField.RASPI_PWM_PERCENTAGE).getRequiredResources(); } @Override @@ -117,21 +68,4 @@ public List addActionToSequence(Sprite sprite, ScriptSeque getFormulaWithBrickField(BrickField.RASPI_PWM_PERCENTAGE))); return null; } - - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_raspi_pwm_frequency_edit_text: - FormulaEditorFragment.showFragment(view, this, BrickField.RASPI_PWM_FREQUENCY); - break; - - case R.id.brick_raspi_pwm_percentage_edit_text: - FormulaEditorFragment.showFragment(view, this, BrickField.RASPI_PWM_PERCENTAGE); - break; - - case R.id.brick_raspi_pwm_pin_edit_text: - default: - FormulaEditorFragment.showFragment(view, this, BrickField.RASPI_DIGITAL_PIN_NUMBER); - break; - } - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/RaspiSendDigitalValueBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/RaspiSendDigitalValueBrick.java index be33925b93f..375db39bc26 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/RaspiSendDigitalValueBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/RaspiSendDigitalValueBrick.java @@ -22,88 +22,38 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; public class RaspiSendDigitalValueBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - private transient View prototypeView; - - public RaspiSendDigitalValueBrick() { - addAllowedBrickField(BrickField.RASPI_DIGITAL_PIN_NUMBER); - addAllowedBrickField(BrickField.RASPI_DIGITAL_PIN_VALUE); - } public RaspiSendDigitalValueBrick(int pinNumber, int pinValue) { - initializeBrickFields(new Formula(pinNumber), new Formula(pinValue)); + this(new Formula(pinNumber), new Formula(pinValue)); } public RaspiSendDigitalValueBrick(Formula pinNumber, Formula pinValue) { - initializeBrickFields(pinNumber, pinValue); - } - - public RaspiSendDigitalValueBrick(int pinNumber, String pinValue) { - initializeBrickFields(new Formula(pinNumber), new Formula(pinValue)); - } - - private void initializeBrickFields(Formula pinNumber, Formula pinValue) { - addAllowedBrickField(BrickField.RASPI_DIGITAL_PIN_NUMBER); - addAllowedBrickField(BrickField.RASPI_DIGITAL_PIN_VALUE); + addAllowedBrickField(BrickField.RASPI_DIGITAL_PIN_NUMBER, R.id.brick_raspi_set_digital_pin_edit_text); + addAllowedBrickField(BrickField.RASPI_DIGITAL_PIN_VALUE, R.id.brick_raspi_set_digital_value_edit_text); setFormulaWithBrickField(BrickField.RASPI_DIGITAL_PIN_NUMBER, pinNumber); setFormulaWithBrickField(BrickField.RASPI_DIGITAL_PIN_VALUE, pinValue); } - @Override - public int getRequiredResources() { - return SOCKET_RASPI - | getFormulaWithBrickField(BrickField.RASPI_DIGITAL_PIN_NUMBER).getRequiredResources() - | getFormulaWithBrickField(BrickField.RASPI_DIGITAL_PIN_VALUE).getRequiredResources(); - } - - @Override - public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - - TextView textSetPinNumber = (TextView) prototypeView.findViewById(R.id.brick_raspi_set_digital_pin_edit_text); - textSetPinNumber.setText(formatNumberForPrototypeView(BrickValues.RASPI_DIGITAL_INITIAL_PIN_NUMBER)); - TextView textSetPinValue = (TextView) prototypeView.findViewById(R.id.brick_raspi_set_digital_value_edit_text); - textSetPinValue.setText(formatNumberForPrototypeView(BrickValues.RASPI_DIGITAL_INITIAL_PIN_VALUE)); - - return prototypeView; - } - @Override public int getViewResource() { return R.layout.brick_raspi_send_digital; } @Override - public View getView(Context context) { - super.getView(context); - TextView editPinNumber = (TextView) view.findViewById(R.id.brick_raspi_set_digital_pin_edit_text); - getFormulaWithBrickField(BrickField.RASPI_DIGITAL_PIN_NUMBER).setTextFieldId(R.id.brick_raspi_set_digital_pin_edit_text); - getFormulaWithBrickField(BrickField.RASPI_DIGITAL_PIN_NUMBER).refreshTextField(view); - - editPinNumber.setOnClickListener(this); - - TextView editPinValue = (TextView) view.findViewById(R.id.brick_raspi_set_digital_value_edit_text); - getFormulaWithBrickField(BrickField.RASPI_DIGITAL_PIN_VALUE).setTextFieldId(R.id.brick_raspi_set_digital_value_edit_text); - getFormulaWithBrickField(BrickField.RASPI_DIGITAL_PIN_VALUE).refreshTextField(view); - - editPinValue.setOnClickListener(this); - - return view; + public int getRequiredResources() { + return SOCKET_RASPI + | getFormulaWithBrickField(BrickField.RASPI_DIGITAL_PIN_NUMBER).getRequiredResources() + | getFormulaWithBrickField(BrickField.RASPI_DIGITAL_PIN_VALUE).getRequiredResources(); } @Override @@ -113,17 +63,4 @@ public List addActionToSequence(Sprite sprite, ScriptSeque getFormulaWithBrickField(BrickField.RASPI_DIGITAL_PIN_VALUE))); return null; } - - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_raspi_set_digital_value_edit_text: - FormulaEditorFragment.showFragment(view, this, BrickField.RASPI_DIGITAL_PIN_VALUE); - break; - - case R.id.brick_raspi_set_digital_pin_edit_text: - default: - FormulaEditorFragment.showFragment(view, this, BrickField.RASPI_DIGITAL_PIN_NUMBER); - break; - } - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/RepeatBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/RepeatBrick.java index bf8c1659dfb..cf1bbf9cbd5 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/RepeatBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/RepeatBrick.java @@ -32,11 +32,11 @@ import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; +import org.catrobat.catroid.content.ActionFactory; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.formulaeditor.InterpretationException; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import org.catrobat.catroid.utils.Utils; import java.util.ArrayList; @@ -50,35 +50,28 @@ public class RepeatBrick extends FormulaBrick implements LoopBeginBrick { private transient LoopEndBrick loopEndBrick; public RepeatBrick() { - addAllowedBrickField(BrickField.TIMES_TO_REPEAT); + this(new Formula(BrickValues.REPEAT)); } - public RepeatBrick(int timesToRepeatValue) { - initializeBrickFields(new Formula(timesToRepeatValue)); - } - - @Override - public int getRequiredResources() { - return getFormulaWithBrickField(BrickField.TIMES_TO_REPEAT).getRequiredResources(); + public RepeatBrick(int timesToRepeat) { + this(new Formula(timesToRepeat)); } public RepeatBrick(Formula timesToRepeat) { - initializeBrickFields(timesToRepeat); - } - - private void initializeBrickFields(Formula timesToRepeat) { - addAllowedBrickField(BrickField.TIMES_TO_REPEAT); + addAllowedBrickField(BrickField.TIMES_TO_REPEAT, R.id.brick_repeat_edit_text); setFormulaWithBrickField(BrickField.TIMES_TO_REPEAT, timesToRepeat); } @Override - public BrickBaseType clone() { - return new RepeatBrick(getFormulaWithBrickField(BrickField.TIMES_TO_REPEAT).clone()); + public int getRequiredResources() { + return getFormulaWithBrickField(BrickField.TIMES_TO_REPEAT).getRequiredResources(); } @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.TIMES_TO_REPEAT); + public BrickBaseType clone() throws CloneNotSupportedException { + RepeatBrick clone = (RepeatBrick) super.clone(); + clone.loopEndBrick = null; + return clone; } @Override @@ -89,15 +82,11 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); - TextView edit = view.findViewById(R.id.brick_repeat_edit_text); - getFormulaWithBrickField(BrickField.TIMES_TO_REPEAT).setTextFieldId(R.id.brick_repeat_edit_text); - getFormulaWithBrickField(BrickField.TIMES_TO_REPEAT).refreshTextField(view); - - TextView times = view.findViewById(R.id.brick_repeat_time_text_view); + TextView label = view.findViewById(R.id.brick_repeat_time_text_view); if (getFormulaWithBrickField(BrickField.TIMES_TO_REPEAT).isSingleNumberFormula()) { try { - times.setText(view.getResources().getQuantityString( + label.setText(view.getResources().getQuantityString( R.plurals.time_plural, Utils.convertDoubleToPluralInteger(getFormulaWithBrickField(BrickField.TIMES_TO_REPEAT) .interpretDouble(ProjectManager.getInstance().getCurrentSprite())) @@ -106,33 +95,27 @@ public View getView(Context context) { Log.d(getClass().getSimpleName(), "Couldn't interpret Formula", interpretationException); } } else { - - // Random Number to get into the "other" keyword for values like 0.99 or 2.001 seconds or degrees - // in hopefully all possible languages - times.setText(view.getResources().getQuantityString(R.plurals.time_plural, + label.setText(view.getResources().getQuantityString(R.plurals.time_plural, Utils.TRANSLATION_PLURAL_OTHER_INTEGER)); } - edit.setOnClickListener(this); return view; } @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); - TextView textRepeat = prototypeView.findViewById(R.id.brick_repeat_edit_text); - TextView times = prototypeView.findViewById(R.id.brick_repeat_time_text_view); - textRepeat.setText(formatNumberForPrototypeView(BrickValues.REPEAT)); - times.setText(context.getResources().getQuantityString(R.plurals.time_plural, + TextView label = prototypeView.findViewById(R.id.brick_repeat_time_text_view); + label.setText(context.getResources().getQuantityString(R.plurals.time_plural, Utils.convertDoubleToPluralInteger(BrickValues.REPEAT))); return prototypeView; } @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - ScriptSequenceAction repeatSequence = (ScriptSequenceAction) sprite.getActionFactory().eventSequence(sequence.getScript()); - Action action = sprite.getActionFactory().createRepeatAction(sprite, - getFormulaWithBrickField(BrickField.TIMES_TO_REPEAT), repeatSequence); + ScriptSequenceAction repeatSequence = (ScriptSequenceAction) ActionFactory.eventSequence(sequence.getScript()); + Action action = sprite.getActionFactory() + .createRepeatAction(sprite, getFormulaWithBrickField(BrickField.TIMES_TO_REPEAT), repeatSequence); sequence.addAction(action); LinkedList returnActionList = new LinkedList<>(); returnActionList.add(repeatSequence); @@ -166,10 +149,9 @@ public boolean isDraggableOver(Brick brick) { @Override public List getAllNestingBrickParts() { - List nestingBrickList = new ArrayList(); + List nestingBrickList = new ArrayList<>(); nestingBrickList.add(this); nestingBrickList.add(loopEndBrick); - return nestingBrickList; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/RepeatUntilBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/RepeatUntilBrick.java index 50d546b78c1..f00e4c9a534 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/RepeatUntilBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/RepeatUntilBrick.java @@ -30,10 +30,10 @@ import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; +import org.catrobat.catroid.content.ActionFactory; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.ArrayList; import java.util.LinkedList; @@ -46,26 +46,17 @@ public class RepeatUntilBrick extends FormulaBrick implements LoopBeginBrick { private transient LoopEndBrick loopEndBrick; public RepeatUntilBrick(int condition) { - initializeBrickFields(new Formula(condition)); - } - - @Override - public int getRequiredResources() { - return getFormulaWithBrickField(BrickField.REPEAT_UNTIL_CONDITION).getRequiredResources(); + this(new Formula(condition)); } public RepeatUntilBrick(Formula condition) { - initializeBrickFields(condition); - } - - private void initializeBrickFields(Formula condition) { - addAllowedBrickField(BrickField.REPEAT_UNTIL_CONDITION); + addAllowedBrickField(BrickField.REPEAT_UNTIL_CONDITION, R.id.brick_repeat_until_edit_text); setFormulaWithBrickField(BrickField.REPEAT_UNTIL_CONDITION, condition); } @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.REPEAT_UNTIL_CONDITION); + public int getRequiredResources() { + return getFormulaWithBrickField(BrickField.REPEAT_UNTIL_CONDITION).getRequiredResources(); } @Override @@ -73,17 +64,6 @@ public int getViewResource() { return R.layout.brick_repeat_until; } - @Override - public View getView(Context context) { - super.getView(context); - TextView edit = view.findViewById(R.id.brick_repeat_until_edit_text); - getFormulaWithBrickField(BrickField.REPEAT_UNTIL_CONDITION).setTextFieldId(R.id.brick_repeat_until_edit_text); - getFormulaWithBrickField(BrickField.REPEAT_UNTIL_CONDITION).refreshTextField(view); - - edit.setOnClickListener(this); - return view; - } - @Override public View getPrototypeView(Context context) { View prototypeView = super.getPrototypeView(context); @@ -94,10 +74,11 @@ public View getPrototypeView(Context context) { @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - ScriptSequenceAction repeatSequence = (ScriptSequenceAction) sprite.getActionFactory().eventSequence(sequence.getScript()); + ScriptSequenceAction repeatSequence = (ScriptSequenceAction) ActionFactory.eventSequence(sequence.getScript()); + + Action action = sprite.getActionFactory() + .createRepeatUntilAction(sprite, getFormulaWithBrickField(BrickField.REPEAT_UNTIL_CONDITION), repeatSequence); - Action action = sprite.getActionFactory().createRepeatUntilAction(sprite, - getFormulaWithBrickField(BrickField.REPEAT_UNTIL_CONDITION), repeatSequence); sequence.addAction(action); LinkedList returnActionList = new LinkedList<>(); returnActionList.add(repeatSequence); diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ReplaceItemInUserListBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ReplaceItemInUserListBrick.java index 59fd38ceb14..027a54c7cde 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ReplaceItemInUserListBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ReplaceItemInUserListBrick.java @@ -25,18 +25,15 @@ import android.content.Context; import android.view.View; import android.widget.Spinner; -import android.widget.TextView; import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.formulaeditor.UserList; import org.catrobat.catroid.ui.adapter.DataAdapter; import org.catrobat.catroid.ui.adapter.UserListAdapterWrapper; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -44,85 +41,61 @@ public class ReplaceItemInUserListBrick extends UserListBrick { private static final long serialVersionUID = 1L; - public ReplaceItemInUserListBrick(Formula userListFormulaValueToInsert, Formula userListFormulaIndexToReplace, UserList userList) { - initializeBrickFields(userListFormulaValueToInsert, userListFormulaIndexToReplace); - this.userList = userList; + public ReplaceItemInUserListBrick(double value, Integer indexToReplace) { + this(new Formula(value), new Formula(indexToReplace)); } - public ReplaceItemInUserListBrick(double value, Integer indexToReplace) { - initializeBrickFields(new Formula(value), new Formula(indexToReplace)); + public ReplaceItemInUserListBrick(Formula userListFormulaValueToInsert, Formula userListFormulaIndexToReplace, UserList userList) { + this(userListFormulaValueToInsert, userListFormulaIndexToReplace); + this.userList = userList; } - private void initializeBrickFields(Formula userListFormulaValueToInsert, Formula userListFormulaIndexToReplace) { - addAllowedBrickField(BrickField.REPLACE_ITEM_IN_USERLIST_VALUE); - addAllowedBrickField(BrickField.REPLACE_ITEM_IN_USERLIST_INDEX); + public ReplaceItemInUserListBrick(Formula userListFormulaValueToInsert, Formula userListFormulaIndexToReplace) { + addAllowedBrickField(BrickField.REPLACE_ITEM_IN_USERLIST_VALUE, R.id.brick_replace_item_in_userlist_value_edit_text); + addAllowedBrickField(BrickField.REPLACE_ITEM_IN_USERLIST_INDEX, R.id.brick_replace_item_in_userlist_at_index_edit_text); setFormulaWithBrickField(BrickField.REPLACE_ITEM_IN_USERLIST_VALUE, userListFormulaValueToInsert); setFormulaWithBrickField(BrickField.REPLACE_ITEM_IN_USERLIST_INDEX, userListFormulaIndexToReplace); } - @Override - public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createReplaceItemInUserListAction(sprite, - getFormulaWithBrickField(BrickField.REPLACE_ITEM_IN_USERLIST_INDEX), - getFormulaWithBrickField(BrickField.REPLACE_ITEM_IN_USERLIST_VALUE), userList)); - return null; - } - @Override public int getViewResource() { return R.layout.brick_replace_item_in_userlist; } @Override - public View getView(final Context context) { - super.getView(context); - TextView textFieldValue = view.findViewById(R.id.brick_replace_item_in_userlist_value_edit_text); - getFormulaWithBrickField(BrickField.REPLACE_ITEM_IN_USERLIST_VALUE).setTextFieldId(R.id.brick_replace_item_in_userlist_value_edit_text); - getFormulaWithBrickField(BrickField.REPLACE_ITEM_IN_USERLIST_VALUE).refreshTextField(view); - textFieldValue.setOnClickListener(this); - - TextView textFieldIndex = view.findViewById(R.id.brick_replace_item_in_userlist_at_index_edit_text); - getFormulaWithBrickField(BrickField.REPLACE_ITEM_IN_USERLIST_INDEX).setTextFieldId(R.id.brick_replace_item_in_userlist_at_index_edit_text); - getFormulaWithBrickField(BrickField.REPLACE_ITEM_IN_USERLIST_INDEX).refreshTextField(view); - textFieldIndex.setOnClickListener(this); + public View getPrototypeView(Context context) { + View prototypeView = super.getPrototypeView(context); + Spinner userListSpinner = prototypeView.findViewById(R.id.replace_item_in_userlist_spinner); - Spinner userListSpinner = view.findViewById(R.id.replace_item_in_userlist_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyEditedScene().getDataContainer() .createDataAdapter(context, ProjectManager.getInstance().getCurrentSprite()); + UserListAdapterWrapper userListAdapterWrapper = new UserListAdapterWrapper(context, dataAdapter); - userListAdapterWrapper.setItemLayout(android.R.layout.simple_spinner_item, android.R.id.text1); + userListAdapterWrapper.setItemLayout(android.R.layout.simple_spinner_item, android.R.id.text1); userListSpinner.setAdapter(userListAdapterWrapper); - setSpinnerSelection(userListSpinner, null); - userListSpinner.setOnTouchListener(createSpinnerOnTouchListener()); - userListSpinner.setOnItemSelectedListener(createListSpinnerItemSelectedListener()); - return view; + return prototypeView; } @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - Spinner userListSpinner = prototypeView.findViewById(R.id.replace_item_in_userlist_spinner); + public View getView(final Context context) { + super.getView(context); + Spinner userListSpinner = view.findViewById(R.id.replace_item_in_userlist_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyEditedScene().getDataContainer() .createDataAdapter(context, ProjectManager.getInstance().getCurrentSprite()); - UserListAdapterWrapper userListAdapterWrapper = new UserListAdapterWrapper(context, dataAdapter); - userListAdapterWrapper.setItemLayout(android.R.layout.simple_spinner_item, android.R.id.text1); + userListSpinner.setAdapter(userListAdapterWrapper); - setSpinnerSelection(userListSpinner, null); - TextView textViewValueToInsert = prototypeView - .findViewById(R.id.brick_replace_item_in_userlist_value_edit_text); - textViewValueToInsert.setText(formatNumberForPrototypeView(BrickValues.REPLACE_ITEM_IN_USERLIST_VALUE)); - TextView textViewInsertIndex = prototypeView - .findViewById(R.id.brick_replace_item_in_userlist_at_index_edit_text); - textViewInsertIndex.setText(formatNumberForPrototypeView(BrickValues.REPLACE_ITEM_IN_USERLIST_INDEX)); + setSpinnerSelection(userListSpinner, null); - return prototypeView; + userListSpinner.setOnTouchListener(createSpinnerOnTouchListener()); + userListSpinner.setOnItemSelectedListener(createListSpinnerItemSelectedListener()); + return view; } @Override @@ -132,16 +105,10 @@ public void onNewList(UserList userList) { } @Override - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_replace_item_in_userlist_value_edit_text: - FormulaEditorFragment.showFragment(view, this, BrickField.REPLACE_ITEM_IN_USERLIST_VALUE); - break; - - case R.id.brick_replace_item_in_userlist_at_index_edit_text: - default: - FormulaEditorFragment.showFragment(view, this, BrickField.REPLACE_ITEM_IN_USERLIST_INDEX); - break; - } + public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { + sequence.addAction(sprite.getActionFactory().createReplaceItemInUserListAction(sprite, + getFormulaWithBrickField(BrickField.REPLACE_ITEM_IN_USERLIST_INDEX), + getFormulaWithBrickField(BrickField.REPLACE_ITEM_IN_USERLIST_VALUE), userList)); + return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SayBubbleBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SayBubbleBrick.java index a09f65a021e..800c35f09fd 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SayBubbleBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SayBubbleBrick.java @@ -22,18 +22,31 @@ */ package org.catrobat.catroid.content.bricks; -import org.catrobat.catroid.common.Constants; -import org.catrobat.catroid.formulaeditor.Formula; +import org.catrobat.catroid.R; +import org.catrobat.catroid.content.Sprite; +import org.catrobat.catroid.content.actions.ScriptSequenceAction; + +import java.util.List; + +import static org.catrobat.catroid.common.Constants.SAY_BRICK; public class SayBubbleBrick extends ThinkBubbleBrick { - public SayBubbleBrick() { - type = Constants.SAY_BRICK; - addAllowedBrickField(BrickField.STRING); - } + + private static final long serialVersionUID = 1L; public SayBubbleBrick(String text) { - type = Constants.SAY_BRICK; - addAllowedBrickField(BrickField.STRING); - initializeBrickFields(new Formula(text)); + super(text); + } + + @Override + public int getViewResource() { + return R.layout.brick_say_bubble; + } + + @Override + public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { + sequence.addAction(sprite.getActionFactory().createThinkSayBubbleAction(sprite, + getFormulaWithBrickField(BrickField.STRING), SAY_BRICK)); + return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SayForBubbleBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SayForBubbleBrick.java index 49efd0454d7..2fbdf3a1e83 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SayForBubbleBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SayForBubbleBrick.java @@ -22,20 +22,33 @@ */ package org.catrobat.catroid.content.bricks; -import org.catrobat.catroid.common.Constants; -import org.catrobat.catroid.formulaeditor.Formula; +import org.catrobat.catroid.R; +import org.catrobat.catroid.content.Sprite; +import org.catrobat.catroid.content.actions.ScriptSequenceAction; + +import java.util.List; + +import static org.catrobat.catroid.common.Constants.SAY_BRICK; public class SayForBubbleBrick extends ThinkForBubbleBrick { - public SayForBubbleBrick() { - type = Constants.SAY_BRICK; - addAllowedBrickField(BrickField.STRING); - addAllowedBrickField(BrickField.DURATION_IN_SECONDS); - } + + private static final long serialVersionUID = 1L; public SayForBubbleBrick(String text, float duration) { - type = Constants.SAY_BRICK; - addAllowedBrickField(BrickField.STRING); - addAllowedBrickField(BrickField.DURATION_IN_SECONDS); - initializeBrickFields(new Formula(text), new Formula(duration)); + super(text, duration); + } + + @Override + public int getViewResource() { + return R.layout.brick_say_for_bubble; + } + + @Override + public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { + sequence.addAction(sprite.getActionFactory().createThinkSayForBubbleAction(sprite, + getFormulaWithBrickField(BrickField.STRING), SAY_BRICK)); + sequence.addAction(sprite.getActionFactory().createWaitForBubbleBrickAction(sprite, + getFormulaWithBrickField(BrickField.DURATION_IN_SECONDS))); + return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetBackgroundByIndexBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetBackgroundByIndexBrick.java index 34b71ad2a2a..cab7cd229a9 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetBackgroundByIndexBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetBackgroundByIndexBrick.java @@ -25,10 +25,7 @@ import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.content.Sprite; -import org.catrobat.catroid.content.actions.ScriptSequenceAction; - -import java.util.Collections; -import java.util.List; +import org.catrobat.catroid.formulaeditor.Formula; public class SetBackgroundByIndexBrick extends SetLookByIndexBrick { @@ -36,20 +33,15 @@ public SetBackgroundByIndexBrick() { } public SetBackgroundByIndexBrick(int index) { - super(index); + super(new Formula(index)); } - @Override - protected Sprite getSprite() { - return ProjectManager.getInstance().getCurrentlyPlayingScene().getBackgroundSprite(); + public SetBackgroundByIndexBrick(Formula formula) { + super(formula); } @Override - public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - Sprite backgroundSprite = ProjectManager.getInstance().getCurrentlyPlayingScene().getBackgroundSprite(); - sequence.addAction(sprite.getActionFactory().createSetLookByIndexAction(backgroundSprite, - getFormulaWithBrickField(BrickField.LOOK_INDEX), wait)); - - return Collections.emptyList(); + protected Sprite getSprite() { + return ProjectManager.getInstance().getCurrentlyPlayingScene().getBackgroundSprite(); } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetBrightnessBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetBrightnessBrick.java index b204fc812da..6fa7208ae70 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetBrightnessBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetBrightnessBrick.java @@ -22,16 +22,11 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -40,20 +35,16 @@ public class SetBrightnessBrick extends FormulaBrick { private static final long serialVersionUID = 1L; public SetBrightnessBrick() { - addAllowedBrickField(BrickField.BRIGHTNESS); - } - - public SetBrightnessBrick(double brightnessValue) { - initializeBrickFields(new Formula(brightnessValue)); + this(new Formula(BrickValues.SET_BRIGHTNESS_TO)); } - public SetBrightnessBrick(Formula brightness) { - initializeBrickFields(brightness); + public SetBrightnessBrick(double brightness) { + this(new Formula(brightness)); } - private void initializeBrickFields(Formula brightness) { - addAllowedBrickField(BrickField.BRIGHTNESS); - setFormulaWithBrickField(BrickField.BRIGHTNESS, brightness); + public SetBrightnessBrick(Formula formula) { + addAllowedBrickField(BrickField.BRIGHTNESS, R.id.brick_set_brightness_edit_text); + setFormulaWithBrickField(BrickField.BRIGHTNESS, formula); } @Override @@ -66,35 +57,10 @@ public int getViewResource() { return R.layout.brick_set_brightness; } - @Override - public View getView(Context context) { - super.getView(context); - TextView editX = view.findViewById(R.id.brick_set_brightness_edit_text); - getFormulaWithBrickField(BrickField.BRIGHTNESS).setTextFieldId(R.id.brick_set_brightness_edit_text); - getFormulaWithBrickField(BrickField.BRIGHTNESS).refreshTextField(view); - - editX.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textSetBrightness = prototypeView - .findViewById(R.id.brick_set_brightness_edit_text); - textSetBrightness.setText(formatNumberForPrototypeView(BrickValues.SET_BRIGHTNESS_TO)); - return prototypeView; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createSetBrightnessAction(sprite, getFormulaWithBrickField(BrickField.BRIGHTNESS))); return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.BRIGHTNESS); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetColorBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetColorBrick.java index 56ac4449448..cc03c3f1129 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetColorBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetColorBrick.java @@ -23,16 +23,11 @@ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -41,20 +36,16 @@ public class SetColorBrick extends FormulaBrick { private static final long serialVersionUID = 1L; public SetColorBrick() { - addAllowedBrickField(BrickField.COLOR); - } - - public SetColorBrick(Float color) { - initializeBrickField(new Formula(color)); + this(new Formula(BrickValues.SET_COLOR_TO)); } - public SetColorBrick(Formula color) { - initializeBrickField(color); + public SetColorBrick(double color) { + this(new Formula(color)); } - private void initializeBrickField(Formula color) { - addAllowedBrickField(BrickField.COLOR); - setFormulaWithBrickField(BrickField.COLOR, color); + public SetColorBrick(Formula formula) { + addAllowedBrickField(BrickField.COLOR, R.id.brick_set_color_edit_text); + setFormulaWithBrickField(BrickField.COLOR, formula); } @Override @@ -67,34 +58,10 @@ public int getViewResource() { return R.layout.brick_set_color_to; } - @Override - public View getView(Context context) { - super.getView(context); - TextView edit = view.findViewById(R.id.brick_set_color_edit_text); - getFormulaWithBrickField(BrickField.COLOR).setTextFieldId(R.id.brick_set_color_edit_text); - getFormulaWithBrickField(BrickField.COLOR).refreshTextField(view); - - edit.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textSetSizeTo = prototypeView.findViewById(R.id.brick_set_color_edit_text); - textSetSizeTo.setText(formatNumberForPrototypeView(BrickValues.SET_COLOR_TO)); - return prototypeView; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createSetColorAction(sprite, - getFormulaWithBrickField(BrickField.COLOR))); + sequence.addAction(sprite.getActionFactory() + .createSetColorAction(sprite, getFormulaWithBrickField(BrickField.COLOR))); return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.COLOR); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetLookByIndexBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetLookByIndexBrick.java index f16778babb3..f40357f8a79 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetLookByIndexBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetLookByIndexBrick.java @@ -34,7 +34,6 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -47,20 +46,16 @@ public class SetLookByIndexBrick extends FormulaBrick { protected transient int wait = NO_WAIT; public SetLookByIndexBrick() { - addAllowedBrickField(BrickField.LOOK_INDEX); + this(new Formula(BrickValues.SET_LOOK_BY_INDEX)); } public SetLookByIndexBrick(int index) { - initializeBrickFields(new Formula(index)); + this(new Formula(index)); } - public SetLookByIndexBrick(Formula index) { - initializeBrickFields(index); - } - - protected void initializeBrickFields(Formula index) { - addAllowedBrickField(BrickField.LOOK_INDEX); - setFormulaWithBrickField(BrickField.LOOK_INDEX, index); + public SetLookByIndexBrick(Formula formula) { + addAllowedBrickField(BrickField.LOOK_INDEX, R.id.brick_set_look_by_index_edit_text); + setFormulaWithBrickField(BrickField.LOOK_INDEX, formula); } @Override @@ -78,51 +73,34 @@ public int getViewResource() { @Override public View getView(Context context) { super.getView(context); + if (getSprite().getName().equals(context.getString(R.string.background))) { - TextView textField = view.findViewById(R.id.brick_set_look_by_index_label); - textField.setText(R.string.brick_set_background_by_index); + TextView label = view.findViewById(R.id.brick_set_look_by_index_label); + label.setText(R.string.brick_set_background_by_index); } - TextView edit = view.findViewById(R.id.brick_set_look_by_index_edit_text); - getFormulaWithBrickField(BrickField.LOOK_INDEX).setTextFieldId(R.id.brick_set_look_by_index_edit_text); - getFormulaWithBrickField(BrickField.LOOK_INDEX).refreshTextField(view); - edit.setOnClickListener(this); - return view; } @Override public View getPrototypeView(Context context) { - View prototypeView; - if (wait == EventWrapper.WAIT) { - prototypeView = super.getPrototypeView(context); - } else { - prototypeView = super.getPrototypeView(context); - } + View prototypeView = super.getPrototypeView(context); if (getSprite().getName().equals(context.getString(R.string.background))) { - TextView textField = prototypeView.findViewById(R.id.brick_set_look_by_index_label); - textField.setText(R.string.brick_set_background_by_index); + TextView label = prototypeView.findViewById(R.id.brick_set_look_by_index_label); + label.setText(R.string.brick_set_background_by_index); } - TextView textSetLookByIndex = prototypeView.findViewById(R.id.brick_set_look_by_index_edit_text); - textSetLookByIndex.setText(formatNumberForPrototypeView(BrickValues.SET_LOOK_BY_INDEX)); - return prototypeView; } @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createSetLookByIndexAction(sprite, - getFormulaWithBrickField(BrickField.LOOK_INDEX), wait)); + sequence.addAction(sprite.getActionFactory() + .createSetLookByIndexAction(getSprite(), getFormulaWithBrickField(BrickField.LOOK_INDEX), wait)); return null; } - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.LOOK_INDEX); - } - protected Sprite getSprite() { return ProjectManager.getInstance().getCurrentSprite(); } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetNfcTagBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetNfcTagBrick.java index 94a598a923b..79dd51c40c3 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetNfcTagBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetNfcTagBrick.java @@ -31,14 +31,12 @@ import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.SpinnerAdapter; -import android.widget.TextView; import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -46,32 +44,19 @@ public class SetNfcTagBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - private transient View prototypeView; private transient Spinner spinner; private int nfcTagNdefDefaultType = BrickValues.TNF_WELL_KNOWN_HTTPS; private int nfcTagNdefType = nfcTagNdefDefaultType; public SetNfcTagBrick(String messageString) { - initializeBrickFields(new Formula(messageString)); + this(new Formula(messageString)); } - private void initializeBrickFields(Formula message) { - addAllowedBrickField(BrickField.NFC_NDEF_MESSAGE); + public SetNfcTagBrick(Formula message) { + addAllowedBrickField(BrickField.NFC_NDEF_MESSAGE, R.id.brick_set_nfc_tag_edit_text); setFormulaWithBrickField(BrickField.NFC_NDEF_MESSAGE, message); } - @Override - public int getRequiredResources() { - return NFC_ADAPTER; - } - - @Override - public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createSetNfcTagAction(sprite, - getFormulaWithBrickField(BrickField.NFC_NDEF_MESSAGE), nfcTagNdefType)); - return null; - } - @Override public int getViewResource() { return R.layout.brick_set_nfc_tag; @@ -80,7 +65,7 @@ public int getViewResource() { @Override public View getView(final Context context) { super.getView(context); - spinner = (Spinner) view.findViewById(R.id.brick_set_nfc_tag_ndef_record_spinner); + spinner = view.findViewById(R.id.brick_set_nfc_tag_ndef_record_spinner); final ArrayAdapter spinnerAdapter = createArrayAdapter(context); SpinnerAdapterWrapper spinnerAdapterWrapper = new SpinnerAdapterWrapper(context, spinnerAdapter); @@ -115,31 +100,31 @@ public void onNothingSelected(AdapterView parent) { }); spinner.setSelection(nfcTagNdefType, true); - TextView textField = (TextView) view.findViewById(R.id.brick_set_nfc_tag_edit_text); - getFormulaWithBrickField(BrickField.NFC_NDEF_MESSAGE).setTextFieldId(R.id.brick_set_nfc_tag_edit_text); - getFormulaWithBrickField(BrickField.NFC_NDEF_MESSAGE).refreshTextField(view); - textField.setOnClickListener(this); - return view; } @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); + View prototypeView = super.getPrototypeView(context); - spinner = (Spinner) prototypeView.findViewById(R.id.brick_set_nfc_tag_ndef_record_spinner); + spinner = prototypeView.findViewById(R.id.brick_set_nfc_tag_ndef_record_spinner); SpinnerAdapter setLookSpinnerAdapter = createArrayAdapter(context); spinner.setAdapter(setLookSpinnerAdapter); spinner.setSelection(nfcTagNdefType, true); - TextView textSetNfcTag = (TextView) prototypeView.findViewById(R.id.brick_set_nfc_tag_edit_text); - textSetNfcTag.setText(context.getString(R.string.brick_set_nfc_tag_default_value)); return prototypeView; } @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.NFC_NDEF_MESSAGE); + public int getRequiredResources() { + return NFC_ADAPTER; + } + + @Override + public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { + sequence.addAction(sprite.getActionFactory() + .createSetNfcTagAction(sprite, getFormulaWithBrickField(BrickField.NFC_NDEF_MESSAGE), nfcTagNdefType)); + return null; } private ArrayAdapter createArrayAdapter(Context context) { diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetPenColorBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetPenColorBrick.java index 783eedd6620..99a63c09bb8 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetPenColorBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetPenColorBrick.java @@ -24,11 +24,8 @@ import android.content.Context; import android.view.View; -import android.widget.BaseAdapter; -import android.widget.TextView; import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; @@ -46,53 +43,26 @@ public class SetPenColorBrick extends FormulaBrick { BrickField.PEN_COLOR_GREEN, BrickField.PEN_COLOR_BLUE); public SetPenColorBrick() { - addAllowedBrickField(BrickField.PEN_COLOR_RED); - addAllowedBrickField(BrickField.PEN_COLOR_GREEN); - addAllowedBrickField(BrickField.PEN_COLOR_BLUE); + addAllowedBrickField(BrickField.PEN_COLOR_RED, R.id.brick_set_pen_color_action_red_edit_text); + addAllowedBrickField(BrickField.PEN_COLOR_GREEN, R.id.brick_set_pen_color_action_green_edit_text); + addAllowedBrickField(BrickField.PEN_COLOR_BLUE, R.id.brick_set_pen_color_action_blue_edit_text); } public SetPenColorBrick(int red, int green, int blue) { - initializeBrickFields(new Formula(red), new Formula(green), new Formula(blue)); + this(new Formula(red), new Formula(green), new Formula(blue)); } public SetPenColorBrick(Formula red, Formula green, Formula blue) { - initializeBrickFields(red, green, blue); - } - - private void initializeBrickFields(Formula red, Formula green, Formula blue) { - addAllowedBrickField(BrickField.PEN_COLOR_RED); - addAllowedBrickField(BrickField.PEN_COLOR_GREEN); - addAllowedBrickField(BrickField.PEN_COLOR_BLUE); + addAllowedBrickField(BrickField.PEN_COLOR_RED, R.id.brick_set_pen_color_action_red_edit_text); + addAllowedBrickField(BrickField.PEN_COLOR_GREEN, R.id.brick_set_pen_color_action_green_edit_text); + addAllowedBrickField(BrickField.PEN_COLOR_BLUE, R.id.brick_set_pen_color_action_blue_edit_text); setFormulaWithBrickField(BrickField.PEN_COLOR_RED, red); setFormulaWithBrickField(BrickField.PEN_COLOR_GREEN, green); setFormulaWithBrickField(BrickField.PEN_COLOR_BLUE, blue); } @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - - TextView textValueRed = prototypeView.findViewById(R.id.brick_set_pen_color_action_red_edit_text); - textValueRed.setText(formatNumberForPrototypeView(BrickValues.PEN_COLOR.r * 255)); - - TextView textValueGreen = prototypeView.findViewById(R.id.brick_set_pen_color_action_green_edit_text); - textValueGreen.setText(formatNumberForPrototypeView(BrickValues.PEN_COLOR.g * 255)); - - TextView textValueBlue = prototypeView.findViewById(R.id.brick_set_pen_color_action_blue_edit_text); - textValueBlue.setText(formatNumberForPrototypeView(BrickValues.PEN_COLOR.b * 255)); - - return prototypeView; - } - - @Override - public BrickBaseType clone() { - return new SetPenColorBrick(getFormulaWithBrickField(BrickField.PEN_COLOR_RED).clone(), - getFormulaWithBrickField(BrickField.PEN_COLOR_GREEN).clone(), - getFormulaWithBrickField(BrickField.PEN_COLOR_BLUE).clone()); - } - - @Override - public View getCustomView(Context context, int brickId, BaseAdapter baseAdapter) { + public View getCustomView(Context context) { return colorSeekbar.getView(context); } @@ -101,36 +71,12 @@ public int getViewResource() { return R.layout.brick_set_pen_color; } - @Override - public View getView(Context context) { - super.getView(context); - TextView editRedValue = view.findViewById(R.id.brick_set_pen_color_action_red_edit_text); - getFormulaWithBrickField(BrickField.PEN_COLOR_RED).setTextFieldId(R.id.brick_set_pen_color_action_red_edit_text); - getFormulaWithBrickField(BrickField.PEN_COLOR_RED).refreshTextField(view); - - editRedValue.setOnClickListener(this); - - TextView editGreenValue = view.findViewById(R.id.brick_set_pen_color_action_green_edit_text); - getFormulaWithBrickField(BrickField.PEN_COLOR_GREEN).setTextFieldId(R.id.brick_set_pen_color_action_green_edit_text); - getFormulaWithBrickField(BrickField.PEN_COLOR_GREEN).refreshTextField(view); - - editGreenValue.setOnClickListener(this); - - TextView editBlueValue = view.findViewById(R.id.brick_set_pen_color_action_blue_edit_text); - getFormulaWithBrickField(BrickField.PEN_COLOR_BLUE).setTextFieldId(R.id.brick_set_pen_color_action_blue_edit_text); - getFormulaWithBrickField(BrickField.PEN_COLOR_BLUE).refreshTextField(view); - - editBlueValue.setOnClickListener(this); - - return view; - } - @Override public void showFormulaEditorToEditFormula(View view) { if (areAllBrickFieldsNumbers()) { - FormulaEditorFragment.showCustomFragment(view, this, getClickedBrickField(view)); + FormulaEditorFragment.showCustomFragment(view.getContext(), this, getClickedBrickField(view)); } else { - FormulaEditorFragment.showFragment(view, this, getClickedBrickField(view)); + super.showFormulaEditorToEditFormula(view); } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetPenSizeBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetPenSizeBrick.java index 9d2cdb7e4bc..392519cb8f5 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetPenSizeBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetPenSizeBrick.java @@ -22,44 +22,29 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; public class SetPenSizeBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - private transient View prototypeView; + private static final long serialVersionUID = 1L; public SetPenSizeBrick() { - addAllowedBrickField(BrickField.PEN_SIZE); + this(new Formula(BrickValues.PEN_SIZE)); } - public SetPenSizeBrick(int penSize) { - initializeBrickFields(new Formula(penSize)); + public SetPenSizeBrick(double penSize) { + this(new Formula(penSize)); } - public SetPenSizeBrick(Formula penSize) { - initializeBrickFields(penSize); - } - - private void initializeBrickFields(Formula penSize) { - addAllowedBrickField(BrickField.PEN_SIZE); - setFormulaWithBrickField(BrickField.PEN_SIZE, penSize); - } - - @Override - public int getRequiredResources() { - return getFormulaWithBrickField(BrickField.PEN_SIZE).getRequiredResources(); + public SetPenSizeBrick(Formula formula) { + addAllowedBrickField(BrickField.PEN_SIZE, R.id.brick_set_pen_size_edit_text); + setFormulaWithBrickField(BrickField.PEN_SIZE, formula); } @Override @@ -68,35 +53,14 @@ public int getViewResource() { } @Override - public View getView(Context context) { - super.getView(context); - TextView penSizeEdit = (TextView) view.findViewById(R.id.brick_set_pen_size_edit_text); - - getFormulaWithBrickField(BrickField.PEN_SIZE).setTextFieldId(R.id.brick_set_pen_size_edit_text); - getFormulaWithBrickField(BrickField.PEN_SIZE).refreshTextField(view); - - penSizeEdit.setOnClickListener(this); - - return view; - } - - @Override - public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView penSizeText = (TextView) prototypeView.findViewById(R.id.brick_set_pen_size_edit_text); - penSizeText.setText(formatNumberForPrototypeView(BrickValues.PEN_SIZE)); - return prototypeView; + public int getRequiredResources() { + return getFormulaWithBrickField(BrickField.PEN_SIZE).getRequiredResources(); } @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createSetPenSizeAction(sprite, - getFormulaWithBrickField(BrickField.PEN_SIZE))); + sequence.addAction(sprite.getActionFactory() + .createSetPenSizeAction(sprite, getFormulaWithBrickField(BrickField.PEN_SIZE))); return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.PEN_SIZE); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetSizeToBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetSizeToBrick.java index 22941008ee9..7a5a96b5604 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetSizeToBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetSizeToBrick.java @@ -22,39 +22,29 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; public class SetSizeToBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - private transient View prototypeView; + private static final long serialVersionUID = 1L; public SetSizeToBrick() { - addAllowedBrickField(BrickField.SIZE); + this(new Formula(BrickValues.SET_SIZE_TO)); } - public SetSizeToBrick(double sizeValue) { - initializeBrickFields(new Formula(sizeValue)); + public SetSizeToBrick(double size) { + this(new Formula(size)); } - public SetSizeToBrick(Formula size) { - initializeBrickFields(size); - } - - private void initializeBrickFields(Formula size) { - addAllowedBrickField(BrickField.SIZE); - setFormulaWithBrickField(BrickField.SIZE, size); + public SetSizeToBrick(Formula formula) { + addAllowedBrickField(BrickField.SIZE, R.id.brick_set_size_to_edit_text); + setFormulaWithBrickField(BrickField.SIZE, formula); } @Override @@ -67,33 +57,10 @@ public int getViewResource() { return R.layout.brick_set_size_to; } - @Override - public View getView(Context context) { - super.getView(context); - TextView edit = (TextView) view.findViewById(R.id.brick_set_size_to_edit_text); - getFormulaWithBrickField(BrickField.SIZE).setTextFieldId(R.id.brick_set_size_to_edit_text); - getFormulaWithBrickField(BrickField.SIZE).refreshTextField(view); - edit.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textSetSizeTo = (TextView) prototypeView.findViewById(R.id.brick_set_size_to_edit_text); - textSetSizeTo.setText(formatNumberForPrototypeView(BrickValues.SET_SIZE_TO)); - return prototypeView; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createSetSizeToAction(sprite, getFormulaWithBrickField(BrickField.SIZE))); return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.SIZE); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetTextBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetTextBrick.java index d0ca309f71f..6d91845ddf8 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetTextBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetTextBrick.java @@ -23,16 +23,13 @@ package org.catrobat.catroid.content.bricks; -import android.content.Context; import android.view.View; -import android.widget.TextView; import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -41,33 +38,25 @@ public class SetTextBrick extends FormulaBrick implements View.OnClickListener { private static final long serialVersionUID = 1L; public SetTextBrick() { - addAllowedBrickField(BrickField.X_DESTINATION); - addAllowedBrickField(BrickField.Y_DESTINATION); - addAllowedBrickField(BrickField.STRING); + this(new Formula(BrickValues.X_POSITION), + new Formula(BrickValues.Y_POSITION), + new Formula(BrickValues.STRING_VALUE)); } public SetTextBrick(int xDestinationValue, int yDestinationValue, String text) { - initializeBrickFields(new Formula(xDestinationValue), new Formula(yDestinationValue), new Formula(text)); + this(new Formula(xDestinationValue), new Formula(yDestinationValue), new Formula(text)); } public SetTextBrick(Formula xDestination, Formula yDestination, Formula text) { - initializeBrickFields(xDestination, yDestination, text); - } - - private void initializeBrickFields(Formula xDestination, Formula yDestination, Formula text) { - addAllowedBrickField(BrickField.X_DESTINATION); - addAllowedBrickField(BrickField.Y_DESTINATION); - addAllowedBrickField(BrickField.STRING); + addAllowedBrickField(BrickField.X_DESTINATION, R.id.brick_set_text_edit_text_x); + addAllowedBrickField(BrickField.Y_DESTINATION, R.id.brick_set_text_edit_text_y); + addAllowedBrickField(BrickField.STRING, R.id.brick_set_text_edit_text); setFormulaWithBrickField(BrickField.X_DESTINATION, xDestination); setFormulaWithBrickField(BrickField.Y_DESTINATION, yDestination); setFormulaWithBrickField(BrickField.STRING, text); } - public void setText(Formula text) { - setFormulaWithBrickField(BrickField.STRING, text); - } - @Override public int getRequiredResources() { return getFormulaWithBrickField(BrickField.X_DESTINATION).getRequiredResources() @@ -77,73 +66,15 @@ public int getRequiredResources() { @Override public int getViewResource() { - return R.layout.brick_drone_set_text; - } - - @Override - public View getView(Context context) { - super.getView(context); - TextView editX = view.findViewById(R.id.brick_set_text_edit_text_x); - TextView editY = view.findViewById(R.id.brick_set_text_edit_text_y); - - getFormulaWithBrickField(BrickField.X_DESTINATION).setTextFieldId(R.id.brick_set_text_edit_text_x); - getFormulaWithBrickField(BrickField.X_DESTINATION).refreshTextField(view); - editX.setOnClickListener(this); - - getFormulaWithBrickField(BrickField.Y_DESTINATION).setTextFieldId(R.id.brick_set_text_edit_text_y); - getFormulaWithBrickField(BrickField.Y_DESTINATION).refreshTextField(view); - editY.setOnClickListener(this); - - TextView editText = view.findViewById(R.id.brick_set_text_edit_text); - - getFormulaWithBrickField(BrickField.STRING).setTextFieldId(R.id.brick_set_text_edit_text); - getFormulaWithBrickField(BrickField.STRING).refreshTextField(view); - - editText.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - - TextView posX = prototypeView.findViewById(R.id.brick_set_text_edit_text_x); - TextView posY = prototypeView.findViewById(R.id.brick_set_text_edit_text_y); - - TextView text = prototypeView.findViewById(R.id.brick_set_text_edit_text); - TextView secondText = prototypeView.findViewById(R.id.brick_set_text_seconds_text_view); - - posX.setText(formatNumberForPrototypeView(BrickValues.X_POSITION)); - posY.setText(formatNumberForPrototypeView(BrickValues.Y_POSITION)); - text.setText(BrickValues.STRING_VALUE); - secondText.setText(BrickValues.STRING_VALUE); - - return prototypeView; - } - - @Override - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_set_text_edit_text_x: - FormulaEditorFragment.showFragment(view, this, BrickField.X_DESTINATION); - break; - - case R.id.brick_set_text_edit_text_y: - FormulaEditorFragment.showFragment(view, this, BrickField.Y_DESTINATION); - break; - - case R.id.brick_set_text_edit_text: - default: - FormulaEditorFragment.showFragment(view, this, BrickField.STRING); - break; - } + return R.layout.brick_set_text; } @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createSetTextAction(sprite, getFormulaWithBrickField(BrickField.X_DESTINATION), - getFormulaWithBrickField(BrickField.Y_DESTINATION), - getFormulaWithBrickField(BrickField.STRING))); + sequence.addAction(sprite.getActionFactory() + .createSetTextAction(sprite, getFormulaWithBrickField(BrickField.X_DESTINATION), + getFormulaWithBrickField(BrickField.Y_DESTINATION), + getFormulaWithBrickField(BrickField.STRING))); return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetTransparencyBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetTransparencyBrick.java index f505cc58bd0..1599fd2bf04 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetTransparencyBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetTransparencyBrick.java @@ -22,16 +22,11 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -39,23 +34,17 @@ public class SetTransparencyBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - private transient View prototypeView; - public SetTransparencyBrick() { - addAllowedBrickField(BrickField.TRANSPARENCY); - } - - public SetTransparencyBrick(double transparencyEffectValue) { - initializeBrickFields(new Formula(transparencyEffectValue)); + this(new Formula(BrickValues.SET_TRANSPARENCY)); } - public SetTransparencyBrick(Formula transparency) { - initializeBrickFields(transparency); + public SetTransparencyBrick(double transparency) { + this(new Formula(transparency)); } - private void initializeBrickFields(Formula transparency) { - addAllowedBrickField(BrickField.TRANSPARENCY); - setFormulaWithBrickField(BrickField.TRANSPARENCY, transparency); + public SetTransparencyBrick(Formula formula) { + addAllowedBrickField(BrickField.TRANSPARENCY, R.id.brick_set_transparency_to_edit_text); + setFormulaWithBrickField(BrickField.TRANSPARENCY, formula); } @Override @@ -68,35 +57,10 @@ public int getViewResource() { return R.layout.brick_set_transparency; } - @Override - public View getView(Context context) { - super.getView(context); - TextView editX = (TextView) view.findViewById(R.id.brick_set_transparency_to_edit_text); - getFormulaWithBrickField(BrickField.TRANSPARENCY).setTextFieldId(R.id.brick_set_transparency_to_edit_text); - getFormulaWithBrickField(BrickField.TRANSPARENCY).refreshTextField(view); - - editX.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textSetTransparency = (TextView) prototypeView - .findViewById(R.id.brick_set_transparency_to_edit_text); - textSetTransparency.setText(formatNumberForPrototypeView(BrickValues.SET_TRANSPARENCY)); - return prototypeView; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createSetTransparencyAction(sprite, - getFormulaWithBrickField(BrickField.TRANSPARENCY))); + sequence.addAction(sprite.getActionFactory() + .createSetTransparencyAction(sprite, getFormulaWithBrickField(BrickField.TRANSPARENCY))); return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.TRANSPARENCY); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetVariableBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetVariableBrick.java index decd9c33c27..4ecb7c5c322 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetVariableBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetVariableBrick.java @@ -25,7 +25,6 @@ import android.content.Context; import android.view.View; import android.widget.Spinner; -import android.widget.TextView; import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.R; @@ -34,12 +33,10 @@ import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.formulaeditor.FormulaElement; -import org.catrobat.catroid.formulaeditor.InternToExternGenerator; import org.catrobat.catroid.formulaeditor.Sensors; import org.catrobat.catroid.formulaeditor.UserVariable; import org.catrobat.catroid.ui.adapter.DataAdapter; import org.catrobat.catroid.ui.adapter.UserVariableAdapterWrapper; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -47,32 +44,26 @@ public class SetVariableBrick extends UserVariableBrick { private static final long serialVersionUID = 1L; - private transient String defaultPrototypeToken = null; - public SetVariableBrick() { - addAllowedBrickField(BrickField.VARIABLE); + this(new Formula(BrickValues.SET_VARIABLE)); + } + + public SetVariableBrick(double value) { + this(new Formula(value)); } public SetVariableBrick(Formula variableFormula, UserVariable userVariable) { + this(variableFormula); this.userVariable = userVariable; - initializeBrickFields(variableFormula); } public SetVariableBrick(Sensors defaultValue) { - this.userVariable = null; - Formula variableFormula = new Formula(new FormulaElement(FormulaElement.ElementType.SENSOR, defaultValue.name(), null)); - initializeBrickFields(variableFormula); - defaultPrototypeToken = defaultValue.name(); - } - - public SetVariableBrick(double value) { - this.userVariable = null; - initializeBrickFields(new Formula(value)); + this(new Formula(new FormulaElement(FormulaElement.ElementType.SENSOR, defaultValue.name(), null))); } - private void initializeBrickFields(Formula variableFormula) { - addAllowedBrickField(BrickField.VARIABLE); - setFormulaWithBrickField(BrickField.VARIABLE, variableFormula); + private SetVariableBrick(Formula formula) { + addAllowedBrickField(BrickField.VARIABLE, R.id.brick_set_variable_edit_text); + setFormulaWithBrickField(BrickField.VARIABLE, formula); } public void setUserVariable(UserVariable userVariable) { @@ -103,10 +94,6 @@ public int getViewResource() { @Override public View getView(final Context context) { super.getView(context); - TextView textField = view.findViewById(R.id.brick_set_variable_edit_text); - getFormulaWithBrickField(BrickField.VARIABLE).setTextFieldId(R.id.brick_set_variable_edit_text); - getFormulaWithBrickField(BrickField.VARIABLE).refreshTextField(view); - textField.setOnClickListener(this); Spinner variableSpinner = view.findViewById(R.id.set_variable_spinner); @@ -140,14 +127,6 @@ public View getPrototypeView(Context context) { variableSpinner.setAdapter(userVariableAdapterWrapper); setSpinnerSelection(variableSpinner, null); - TextView textSetVariable = prototypeView.findViewById(R.id.brick_set_variable_edit_text); - - if (defaultPrototypeToken != null) { - int defaultValueId = InternToExternGenerator.getMappedString(defaultPrototypeToken); - textSetVariable.setText(context.getText(defaultValueId)); - } else { - textSetVariable.setText(formatNumberForPrototypeView(BrickValues.SET_VARIABLE)); - } return prototypeView; } @@ -156,8 +135,4 @@ public void onNewVariable(UserVariable userVariable) { Spinner spinner = view.findViewById(R.id.set_variable_spinner); setSpinnerSelection(spinner, userVariable); } - - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.VARIABLE); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetVolumeToBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetVolumeToBrick.java index 5516f716072..b11f1d34b62 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetVolumeToBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetVolumeToBrick.java @@ -22,39 +22,29 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; public class SetVolumeToBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - private transient View prototypeView; + private static final long serialVersionUID = 1L; public SetVolumeToBrick() { - addAllowedBrickField(BrickField.VOLUME); - } - - public SetVolumeToBrick(float volumeValue) { - initializeBrickFields(new Formula(volumeValue)); + this(new Formula(BrickValues.SET_VOLUME_TO)); } - public SetVolumeToBrick(Formula volume) { - initializeBrickFields(volume); + public SetVolumeToBrick(double volume) { + this(new Formula(volume)); } - private void initializeBrickFields(Formula volume) { - addAllowedBrickField(BrickField.VOLUME); - setFormulaWithBrickField(BrickField.VOLUME, volume); + public SetVolumeToBrick(Formula formula) { + addAllowedBrickField(BrickField.VOLUME, R.id.brick_set_volume_to_edit_text); + setFormulaWithBrickField(BrickField.VOLUME, formula); } @Override @@ -67,34 +57,10 @@ public int getViewResource() { return R.layout.brick_set_volume_to; } - @Override - public View getView(Context context) { - super.getView(context); - TextView edit = (TextView) view.findViewById(R.id.brick_set_volume_to_edit_text); - getFormulaWithBrickField(BrickField.VOLUME).setTextFieldId(R.id.brick_set_volume_to_edit_text); - getFormulaWithBrickField(BrickField.VOLUME).refreshTextField(view); - - edit.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textSetVolumeTo = (TextView) prototypeView.findViewById(R.id.brick_set_volume_to_edit_text); - textSetVolumeTo.setText(formatNumberForPrototypeView(BrickValues.SET_VOLUME_TO)); - return prototypeView; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createSetVolumeToAction(sprite, - getFormulaWithBrickField(BrickField.VOLUME))); + sequence.addAction(sprite.getActionFactory() + .createSetVolumeToAction(sprite, getFormulaWithBrickField(BrickField.VOLUME))); return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.VOLUME); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetXBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetXBrick.java index f1c90982f73..81f0ef2d4fa 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetXBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetXBrick.java @@ -22,16 +22,11 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -40,19 +35,15 @@ public class SetXBrick extends FormulaBrick { private static final long serialVersionUID = 1L; public SetXBrick() { - addAllowedBrickField(BrickField.X_POSITION); + this(new Formula(BrickValues.X_POSITION)); } public SetXBrick(int xPositionValue) { - initializeBrickFields(new Formula(xPositionValue)); + this(new Formula(xPositionValue)); } public SetXBrick(Formula xPosition) { - initializeBrickFields(xPosition); - } - - private void initializeBrickFields(Formula xPosition) { - addAllowedBrickField(BrickField.X_POSITION); + addAllowedBrickField(BrickField.X_POSITION, R.id.brick_set_x_edit_text); setFormulaWithBrickField(BrickField.X_POSITION, xPosition); } @@ -66,36 +57,10 @@ public int getViewResource() { return R.layout.brick_set_x; } - @Override - public View getView(Context context) { - super.getView(context); - TextView editX = view.findViewById(R.id.brick_set_x_edit_text); - - getFormulaWithBrickField(BrickField.X_POSITION).setTextFieldId(R.id.brick_set_x_edit_text); - getFormulaWithBrickField(BrickField.X_POSITION).refreshTextField(view); - - editX.setOnClickListener(this); - - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textXPosition = prototypeView.findViewById(R.id.brick_set_x_edit_text); - textXPosition.setText(formatNumberForPrototypeView(BrickValues.X_POSITION)); - return prototypeView; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createSetXAction(sprite, - getFormulaWithBrickField(BrickField.X_POSITION))); + sequence.addAction(sprite.getActionFactory() + .createSetXAction(sprite, getFormulaWithBrickField(BrickField.X_POSITION))); return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.X_POSITION); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetYBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetYBrick.java index 3aa6c9208e1..e026e711f29 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetYBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SetYBrick.java @@ -22,16 +22,11 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -40,19 +35,15 @@ public class SetYBrick extends FormulaBrick { private static final long serialVersionUID = 1L; public SetYBrick() { - addAllowedBrickField(BrickField.Y_POSITION); + this(new Formula(BrickValues.Y_POSITION)); } public SetYBrick(int yPositionValue) { - initializeBrickFields(new Formula(yPositionValue)); + this(new Formula(yPositionValue)); } public SetYBrick(Formula yPosition) { - initializeBrickFields(yPosition); - } - - private void initializeBrickFields(Formula yPosition) { - addAllowedBrickField(BrickField.Y_POSITION); + addAllowedBrickField(BrickField.Y_POSITION, R.id.brick_set_y_edit_text); setFormulaWithBrickField(BrickField.Y_POSITION, yPosition); } @@ -66,33 +57,10 @@ public int getViewResource() { return R.layout.brick_set_y; } - @Override - public View getView(Context context) { - super.getView(context); - TextView editY = view.findViewById(R.id.brick_set_y_edit_text); - getFormulaWithBrickField(BrickField.Y_POSITION).setTextFieldId(R.id.brick_set_y_edit_text); - getFormulaWithBrickField(BrickField.Y_POSITION).refreshTextField(view); - editY.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textYPosition = prototypeView.findViewById(R.id.brick_set_y_edit_text); - textYPosition.setText(formatNumberForPrototypeView(BrickValues.Y_POSITION)); - return prototypeView; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createSetYAction(sprite, - getFormulaWithBrickField(BrickField.Y_POSITION))); + sequence.addAction(sprite.getActionFactory() + .createSetYAction(sprite, getFormulaWithBrickField(BrickField.Y_POSITION))); return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.Y_POSITION); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ShowTextBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ShowTextBrick.java index 4ea78044457..010923dc0be 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ShowTextBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ShowTextBrick.java @@ -26,7 +26,6 @@ import android.content.Context; import android.view.View; import android.widget.Spinner; -import android.widget.TextView; import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.R; @@ -38,7 +37,6 @@ import org.catrobat.catroid.formulaeditor.UserVariable; import org.catrobat.catroid.ui.adapter.DataAdapter; import org.catrobat.catroid.ui.adapter.UserVariableAdapterWrapper; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -46,52 +44,23 @@ public class ShowTextBrick extends UserVariableBrick { private static final long serialVersionUID = 1L; - private transient View prototypeView; - public static final String TAG = ShowTextBrick.class.getSimpleName(); public ShowTextBrick() { - addAllowedBrickField(BrickField.X_POSITION); - addAllowedBrickField(BrickField.Y_POSITION); + this(new Formula(BrickValues.X_POSITION), new Formula(BrickValues.Y_POSITION)); } public ShowTextBrick(int xPosition, int yPosition) { - initializeBrickFields(new Formula(xPosition), new Formula(yPosition)); + this(new Formula(xPosition), new Formula(yPosition)); } public ShowTextBrick(Formula xPosition, Formula yPosition) { - initializeBrickFields(xPosition, yPosition); - } - - private void initializeBrickFields(Formula xPosition, Formula yPosition) { - addAllowedBrickField(BrickField.X_POSITION); - addAllowedBrickField(BrickField.Y_POSITION); + addAllowedBrickField(BrickField.X_POSITION, R.id.brick_show_variable_edit_text_x); + addAllowedBrickField(BrickField.Y_POSITION, R.id.brick_show_variable_edit_text_y); setFormulaWithBrickField(BrickField.X_POSITION, xPosition); setFormulaWithBrickField(BrickField.Y_POSITION, yPosition); } - public void setXPosition(Formula xPosition) { - setFormulaWithBrickField(BrickField.X_POSITION, xPosition); - } - - public void setYPosition(Formula yPosition) { - setFormulaWithBrickField(BrickField.Y_POSITION, yPosition); - } - - @Override - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_show_variable_edit_text_y: - FormulaEditorFragment.showFragment(view, this, BrickField.Y_POSITION); - break; - - case R.id.brick_show_variable_edit_text_x: - default: - FormulaEditorFragment.showFragment(view, this, BrickField.X_POSITION); - break; - } - } - @Override public int getRequiredResources() { return getFormulaWithBrickField(BrickField.Y_POSITION).getRequiredResources() | getFormulaWithBrickField( @@ -106,19 +75,8 @@ public int getViewResource() { @Override public View getView(final Context context) { super.getView(context); - TextView editTextX = (TextView) view.findViewById(R.id.brick_show_variable_edit_text_x); - getFormulaWithBrickField(BrickField.X_POSITION).setTextFieldId(R.id.brick_show_variable_edit_text_x); - getFormulaWithBrickField(BrickField.X_POSITION).refreshTextField(view); - editTextX.setOnClickListener(this); - - TextView editTextY = (TextView) view.findViewById(R.id.brick_show_variable_edit_text_y); - getFormulaWithBrickField(BrickField.Y_POSITION).setTextFieldId(R.id.brick_show_variable_edit_text_y); - getFormulaWithBrickField(BrickField.Y_POSITION).refreshTextField(view); - - editTextY.setOnClickListener(this); - - Spinner variableSpinner = (Spinner) view.findViewById(R.id.show_variable_spinner); + Spinner variableSpinner = view.findViewById(R.id.show_variable_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyEditedScene().getDataContainer() .createDataAdapter(context, ProjectManager.getInstance().getCurrentSprite()); @@ -137,9 +95,9 @@ public View getView(final Context context) { @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); + View prototypeView = super.getPrototypeView(context); - Spinner variableSpinner = (Spinner) prototypeView.findViewById(R.id.show_variable_spinner); + Spinner variableSpinner = prototypeView.findViewById(R.id.show_variable_spinner); DataAdapter dataAdapter = ProjectManager.getInstance().getCurrentlyEditedScene().getDataContainer() .createDataAdapter(context, ProjectManager.getInstance().getCurrentSprite()); @@ -151,11 +109,6 @@ public View getPrototypeView(Context context) { variableSpinner.setAdapter(userVariableAdapterWrapper); setSpinnerSelection(variableSpinner, null); - TextView textViewPositionX = (TextView) prototypeView.findViewById(R.id.brick_show_variable_edit_text_x); - textViewPositionX.setText(formatNumberForPrototypeView(BrickValues.X_POSITION)); - TextView textViewPositionY = (TextView) prototypeView.findViewById(R.id.brick_show_variable_edit_text_y); - textViewPositionY.setText(formatNumberForPrototypeView(BrickValues.Y_POSITION)); - return prototypeView; } @@ -171,7 +124,8 @@ public List addActionToSequence(Sprite sprite, ScriptSeque userVariable = new UserVariable("NoVariableSet", Constants.NO_VARIABLE_SELECTED); userVariable.setDummy(true); } - sequence.addAction(sprite.getActionFactory().createShowVariableAction(sprite, getFormulaWithBrickField(BrickField.X_POSITION), + sequence.addAction(sprite.getActionFactory().createShowVariableAction(sprite, + getFormulaWithBrickField(BrickField.X_POSITION), getFormulaWithBrickField(BrickField.Y_POSITION), userVariable)); return null; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SpeakAndWaitBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SpeakAndWaitBrick.java index e8eee8e0301..e2cafdc7efc 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SpeakAndWaitBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SpeakAndWaitBrick.java @@ -23,48 +23,29 @@ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.content.actions.SpeakAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; -import java.io.File; import java.util.List; public class SpeakAndWaitBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - private transient View prototypeView; - - File speechFile; - private float duration; public SpeakAndWaitBrick() { - addAllowedBrickField(BrickField.SPEAK); - } - - public SpeakAndWaitBrick(String speak) { - initializeBrickFields(new Formula(speak)); + addAllowedBrickField(BrickField.SPEAK, R.id.brick_speak_and_wait_edit_text); } - public SpeakAndWaitBrick(Formula speak) { - initializeBrickFields(speak); + public SpeakAndWaitBrick(String text) { + this(new Formula(text)); } - private void initializeBrickFields(Formula speak) { - addAllowedBrickField(BrickField.SPEAK); - setFormulaWithBrickField(BrickField.SPEAK, speak); - } - - @Override - public int getRequiredResources() { - return TEXT_TO_SPEECH; + public SpeakAndWaitBrick(Formula formula) { + addAllowedBrickField(BrickField.SPEAK, R.id.brick_speak_and_wait_edit_text); + setFormulaWithBrickField(BrickField.SPEAK, formula); } @Override @@ -73,50 +54,30 @@ public int getViewResource() { } @Override - public View getView(final Context context) { - super.getView(context); - TextView textField = (TextView) view.findViewById(R.id.brick_speak_and_wait_edit_text); - getFormulaWithBrickField(BrickField.SPEAK).setTextFieldId(R.id.brick_speak_and_wait_edit_text); - getFormulaWithBrickField(BrickField.SPEAK).refreshTextField(view); - - textField.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textSpeak = (TextView) prototypeView.findViewById(R.id.brick_speak_and_wait_edit_text); - textSpeak.setText(context.getString(R.string.brick_speak_default_value)); - - return prototypeView; + public int getRequiredResources() { + return TEXT_TO_SPEECH; } @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createSpeakAction(sprite, - getFormulaWithBrickField(BrickField.SPEAK))); - sequence.addAction(sprite.getActionFactory().createWaitAction(sprite, - new Formula(getDurationOfSpokenText(sprite, getFormulaWithBrickField(BrickField.SPEAK))))); + sequence.addAction(sprite.getActionFactory() + .createSpeakAction(sprite, getFormulaWithBrickField(BrickField.SPEAK))); + sequence.addAction(sprite.getActionFactory() + .createWaitAction(sprite, + new Formula(getDurationOfSpokenText(sprite, getFormulaWithBrickField(BrickField.SPEAK))))); return null; } - public float getDurationOfSpokenText(Sprite sprite, Formula text) { - SpeakAction action = (SpeakAction) sprite.getActionFactory().createSpeakAction(sprite, - getFormulaWithBrickField(BrickField.SPEAK)); + private float getDurationOfSpokenText(Sprite sprite, Formula text) { + SpeakAction action = (SpeakAction) sprite.getActionFactory() + .createSpeakAction(sprite, getFormulaWithBrickField(BrickField.SPEAK)); + action.setSprite(sprite); action.setText(text); action.setDetermineLength(true); action.act(1.0f); - duration = action.getLengthOfText() / 1000; - - return duration; - } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.SPEAK); + return action.getLengthOfText() / 1000; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SpeakBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SpeakBrick.java index 3e3da23d56e..87f9622850a 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/SpeakBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/SpeakBrick.java @@ -30,30 +30,24 @@ import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; public class SpeakBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - private transient View prototypeView; public SpeakBrick() { - addAllowedBrickField(BrickField.SPEAK); + addAllowedBrickField(BrickField.SPEAK, R.id.brick_speak_edit_text); } - public SpeakBrick(String speak) { - initializeBrickFields(new Formula(speak)); + public SpeakBrick(String text) { + this(new Formula(text)); } - public SpeakBrick(Formula speak) { - initializeBrickFields(speak); - } - - private void initializeBrickFields(Formula speak) { - addAllowedBrickField(BrickField.SPEAK); - setFormulaWithBrickField(BrickField.SPEAK, speak); + public SpeakBrick(Formula formula) { + addAllowedBrickField(BrickField.SPEAK, R.id.brick_speak_edit_text); + setFormulaWithBrickField(BrickField.SPEAK, formula); } @Override @@ -66,34 +60,18 @@ public int getViewResource() { return R.layout.brick_speak; } - @Override - public View getView(final Context context) { - super.getView(context); - TextView textField = (TextView) view.findViewById(R.id.brick_speak_edit_text); - getFormulaWithBrickField(BrickField.SPEAK).setTextFieldId(R.id.brick_speak_edit_text); - getFormulaWithBrickField(BrickField.SPEAK).refreshTextField(view); - - textField.setOnClickListener(this); - return view; - } - @Override public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textSpeak = (TextView) prototypeView.findViewById(R.id.brick_speak_edit_text); + View prototypeView = super.getPrototypeView(context); + TextView textSpeak = prototypeView.findViewById(R.id.brick_speak_edit_text); textSpeak.setText(context.getString(R.string.brick_speak_default_value)); return prototypeView; } @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createSpeakAction(sprite, - getFormulaWithBrickField(BrickField.SPEAK))); + sequence.addAction(sprite.getActionFactory() + .createSpeakAction(sprite, getFormulaWithBrickField(BrickField.SPEAK))); return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.SPEAK); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ThinkBubbleBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ThinkBubbleBrick.java index 9ce23b828d7..e1a6c6f1593 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ThinkBubbleBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ThinkBubbleBrick.java @@ -22,82 +22,39 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; import android.view.View.OnClickListener; -import android.widget.TextView; import org.catrobat.catroid.R; -import org.catrobat.catroid.common.Constants; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; +import static org.catrobat.catroid.common.Constants.THINK_BRICK; + public class ThinkBubbleBrick extends FormulaBrick implements OnClickListener { private static final long serialVersionUID = 1L; - protected int type = Constants.THINK_BRICK; - - public ThinkBubbleBrick() { - addAllowedBrickField(BrickField.STRING); - } public ThinkBubbleBrick(String text) { - addAllowedBrickField(BrickField.STRING); - initializeBrickFields(new Formula(text)); + this(new Formula(text)); } - protected void initializeBrickFields(Formula text) { - addAllowedBrickField(BrickField.STRING); - setFormulaWithBrickField(BrickField.STRING, text); + public ThinkBubbleBrick(Formula formula) { + addAllowedBrickField(BrickField.STRING, R.id.brick_bubble_edit_text); + setFormulaWithBrickField(BrickField.STRING, formula); } @Override public int getViewResource() { - return type == Constants.SAY_BRICK - ? R.layout.brick_say_bubble - : R.layout.brick_think_bubble; - } - - @Override - public View getView(Context context) { - super.getView(context); - - int editTextId = type == Constants.SAY_BRICK ? R.id.brick_say_bubble_edit_text : R.id.brick_think_bubble_edit_text; - - TextView textField = (TextView) view.findViewById(editTextId); - getFormulaWithBrickField(BrickField.STRING).setTextFieldId(editTextId); - getFormulaWithBrickField(BrickField.STRING).refreshTextField(view); - - textField.setOnClickListener(this); - - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - int stringId = type == Constants.SAY_BRICK ? R.string.brick_say_bubble_default_value : R.string.brick_think_bubble_default_value; - int prototypeTextViewId = type == Constants.SAY_BRICK - ? R.id.brick_say_bubble_edit_text : R.id.brick_think_bubble_edit_text; - - TextView textSpeak = (TextView) prototypeView.findViewById(prototypeTextViewId); - textSpeak.setText(context.getString(stringId)); - return prototypeView; + return R.layout.brick_think_bubble; } @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createThinkSayBubbleAction(sprite, - getFormulaWithBrickField(BrickField.STRING), type)); + getFormulaWithBrickField(BrickField.STRING), THINK_BRICK)); return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.STRING); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ThinkForBubbleBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ThinkForBubbleBrick.java index 6b0092fa0a3..9723c0b0ba1 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/ThinkForBubbleBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/ThinkForBubbleBrick.java @@ -23,149 +23,63 @@ package org.catrobat.catroid.content.bricks; import android.content.Context; -import android.util.Log; import android.view.View; -import android.widget.TextView; -import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; -import org.catrobat.catroid.common.Constants; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.formulaeditor.InterpretationException; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; -import org.catrobat.catroid.utils.Utils; import java.util.List; +import static org.catrobat.catroid.common.Constants.THINK_BRICK; + public class ThinkForBubbleBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - protected int type = Constants.THINK_BRICK; - - public ThinkForBubbleBrick() { - addAllowedBrickField(BrickField.STRING); - initializeBrickFields(new Formula(2)); - } public ThinkForBubbleBrick(String text, float durationInSecondsValue) { - initializeBrickFields(new Formula(text), new Formula(durationInSecondsValue)); - } - - public ThinkForBubbleBrick(Formula text, Formula durationInSeconds) { - initializeBrickFields(text, durationInSeconds); + this(new Formula(text), new Formula(durationInSecondsValue)); } - protected void initializeBrickFields(Formula text, Formula durationInSeconds) { - addAllowedBrickField(BrickField.STRING); - addAllowedBrickField(BrickField.DURATION_IN_SECONDS); + public ThinkForBubbleBrick(Formula text, Formula formula) { + addAllowedBrickField(BrickField.STRING, R.id.brick_for_bubble_edit_text_text); + addAllowedBrickField(BrickField.DURATION_IN_SECONDS, R.id.brick_for_bubble_edit_text_duration); setFormulaWithBrickField(BrickField.STRING, text); - setFormulaWithBrickField(BrickField.DURATION_IN_SECONDS, durationInSeconds); - } - - protected void initializeBrickFields(Formula durationInSeconds) { - addAllowedBrickField(BrickField.STRING); - addAllowedBrickField(BrickField.DURATION_IN_SECONDS); - setFormulaWithBrickField(BrickField.DURATION_IN_SECONDS, durationInSeconds); + setFormulaWithBrickField(BrickField.DURATION_IN_SECONDS, formula); } @Override - public int getRequiredResources() { - return getFormulaWithBrickField(BrickField.STRING).getRequiredResources() - | getFormulaWithBrickField(BrickField.DURATION_IN_SECONDS).getRequiredResources(); + public int getViewResource() { + return R.layout.brick_think_for_bubble; } @Override - public int getViewResource() { - return type == Constants.SAY_BRICK - ? R.layout.brick_say_for_bubble - : R.layout.brick_think_for_bubble; + public View getPrototypeView(Context context) { + View prototypeView = super.getPrototypeView(context); + setSecondsLabel(prototypeView, BrickField.DURATION_IN_SECONDS); + return prototypeView; } @Override public View getView(Context context) { super.getView(context); - - int editTextId = type == Constants.SAY_BRICK - ? R.id.brick_say_for_bubble_edit_text_text : R.id.brick_think_for_bubble_edit_text_text; - int editDurationId = type == Constants.SAY_BRICK - ? R.id.brick_say_for_bubble_edit_text_duration : R.id.brick_think_for_bubble_edit_text_duration; - int thinkSaySecondsLabelId = type == Constants.SAY_BRICK ? R.id.brick_say_for_bubble_seconds_label - : R.id.brick_think_for_bubble_seconds_label; - - TextView editText = (TextView) view.findViewById(editTextId); - getFormulaWithBrickField(BrickField.STRING).setTextFieldId(editTextId); - getFormulaWithBrickField(BrickField.STRING).refreshTextField(view); - editText.setOnClickListener(this); - - TextView editDuration = (TextView) view.findViewById(editDurationId); - getFormulaWithBrickField(BrickField.DURATION_IN_SECONDS).setTextFieldId(editDurationId); - getFormulaWithBrickField(BrickField.DURATION_IN_SECONDS).refreshTextField(view); - - TextView seconds = (TextView) view.findViewById(thinkSaySecondsLabelId); - - if (getFormulaWithBrickField(BrickField.DURATION_IN_SECONDS).isSingleNumberFormula()) { - try { - seconds.setText(view.getResources().getQuantityString( - R.plurals.second_plural, - Utils.convertDoubleToPluralInteger(getFormulaWithBrickField(BrickField.DURATION_IN_SECONDS) - .interpretDouble(ProjectManager.getInstance().getCurrentSprite())))); - } catch (InterpretationException interpretationException) { - Log.d(getClass().getSimpleName(), "Couldn't interpret Formula.", interpretationException); - } - } else { - // Random Number to get into the "other" keyword for values like 0.99 or 2.001 seconds or degrees - // in hopefully all possible languages - seconds.setText(view.getResources().getQuantityString(R.plurals.second_plural, - Utils.TRANSLATION_PLURAL_OTHER_INTEGER)); - } - - editDuration.setOnClickListener(this); + setSecondsLabel(view, BrickField.DURATION_IN_SECONDS); return view; } @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - - int textTextId = type == Constants.SAY_BRICK ? R.id.brick_say_for_bubble_edit_text_text - : R.id.brick_think_for_bubble_edit_text_text; - int textDurationId = type == Constants.SAY_BRICK ? R.id.brick_say_for_bubble_edit_text_duration - : R.id.brick_think_for_bubble_edit_text_duration; - int defaultStringId = type == Constants.SAY_BRICK ? R.string.brick_say_bubble_default_value : R.string - .brick_think_bubble_default_value; - int thinkSaySecondsLabelId = type == Constants.SAY_BRICK ? R.id.brick_say_for_bubble_seconds_label - : R.id.brick_think_for_bubble_seconds_label; - - TextView textText = (TextView) prototypeView.findViewById(textTextId); - TextView textDuration = (TextView) prototypeView.findViewById(textDurationId); - TextView seconds = (TextView) prototypeView.findViewById(thinkSaySecondsLabelId); - textText.setText(context.getString(defaultStringId)); - textDuration.setText(formatNumberForPrototypeView(BrickValues.DURATION)); - seconds.setText(context.getResources().getQuantityString(R.plurals.second_plural, - Utils.convertDoubleToPluralInteger(BrickValues.DURATION))); - return prototypeView; + public int getRequiredResources() { + return getFormulaWithBrickField(BrickField.STRING).getRequiredResources() + | getFormulaWithBrickField(BrickField.DURATION_IN_SECONDS).getRequiredResources(); } @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createThinkSayForBubbleAction(sprite, - getFormulaWithBrickField(BrickField.STRING), type)); + getFormulaWithBrickField(BrickField.STRING), THINK_BRICK)); sequence.addAction(sprite.getActionFactory().createWaitForBubbleBrickAction(sprite, getFormulaWithBrickField(BrickField.DURATION_IN_SECONDS))); return null; } - - public void showFormulaEditorToEditFormula(View view) { - int editTextId = type == Constants.SAY_BRICK ? R.id.brick_say_for_bubble_edit_text_text - : R.id.brick_think_for_bubble_edit_text_text; - - if (view.getId() == editTextId) { - FormulaEditorFragment.showFragment(view, this, BrickField.STRING); - } else { - FormulaEditorFragment.showFragment(view, this, BrickField.DURATION_IN_SECONDS); - } - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/TurnLeftBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/TurnLeftBrick.java index 174c8e40014..adc51d45d65 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/TurnLeftBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/TurnLeftBrick.java @@ -22,16 +22,11 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -39,23 +34,17 @@ public class TurnLeftBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - private transient View prototypeView; - public TurnLeftBrick() { - addAllowedBrickField(BrickField.TURN_LEFT_DEGREES); + this(new Formula(BrickValues.TURN_DEGREES)); } public TurnLeftBrick(double degreesValue) { - initializeBrickFields(new Formula(degreesValue)); - } - - public TurnLeftBrick(Formula degrees) { - initializeBrickFields(degrees); + this(new Formula(degreesValue)); } - private void initializeBrickFields(Formula degrees) { - addAllowedBrickField(BrickField.TURN_LEFT_DEGREES); - setFormulaWithBrickField(BrickField.TURN_LEFT_DEGREES, degrees); + public TurnLeftBrick(Formula formula) { + addAllowedBrickField(BrickField.TURN_LEFT_DEGREES, R.id.brick_turn_left_edit_text); + setFormulaWithBrickField(BrickField.TURN_LEFT_DEGREES, formula); } @Override @@ -68,34 +57,10 @@ public int getViewResource() { return R.layout.brick_turn_left; } - @Override - public View getView(Context context) { - super.getView(context); - TextView editDegrees = (TextView) view.findViewById(R.id.brick_turn_left_edit_text); - getFormulaWithBrickField(BrickField.TURN_LEFT_DEGREES).setTextFieldId(R.id.brick_turn_left_edit_text); - getFormulaWithBrickField(BrickField.TURN_LEFT_DEGREES).refreshTextField(view); - - editDegrees.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textDegrees = (TextView) prototypeView.findViewById(R.id.brick_turn_left_edit_text); - textDegrees.setText(formatNumberForPrototypeView(BrickValues.TURN_DEGREES)); - return prototypeView; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createTurnLeftAction(sprite, - getFormulaWithBrickField(BrickField.TURN_LEFT_DEGREES))); + sequence.addAction(sprite.getActionFactory() + .createTurnLeftAction(sprite, getFormulaWithBrickField(BrickField.TURN_LEFT_DEGREES))); return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.TURN_LEFT_DEGREES); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/TurnRightBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/TurnRightBrick.java index 1545e04131b..9fd1a201bb1 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/TurnRightBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/TurnRightBrick.java @@ -22,39 +22,29 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; public class TurnRightBrick extends FormulaBrick { private static final long serialVersionUID = 1L; - private transient View prototypeView; public TurnRightBrick() { - addAllowedBrickField(BrickField.TURN_RIGHT_DEGREES); + this(new Formula(BrickValues.TURN_DEGREES)); } public TurnRightBrick(double degreesValue) { - initializeBrickFields(new Formula(degreesValue)); - } - - public TurnRightBrick(Formula degreesFormula) { - initializeBrickFields(degreesFormula); + this(new Formula(degreesValue)); } - private void initializeBrickFields(Formula degrees) { - addAllowedBrickField(BrickField.TURN_RIGHT_DEGREES); - setFormulaWithBrickField(BrickField.TURN_RIGHT_DEGREES, degrees); + public TurnRightBrick(Formula formula) { + addAllowedBrickField(BrickField.TURN_RIGHT_DEGREES, R.id.brick_turn_right_edit_text); + setFormulaWithBrickField(BrickField.TURN_RIGHT_DEGREES, formula); } @Override @@ -67,34 +57,10 @@ public int getViewResource() { return R.layout.brick_turn_right; } - @Override - public View getView(Context context) { - super.getView(context); - TextView editDegrees = (TextView) view.findViewById(R.id.brick_turn_right_edit_text); - getFormulaWithBrickField(BrickField.TURN_RIGHT_DEGREES).setTextFieldId(R.id.brick_turn_right_edit_text); - getFormulaWithBrickField(BrickField.TURN_RIGHT_DEGREES).refreshTextField(view); - - editDegrees.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textDegrees = (TextView) prototypeView.findViewById(R.id.brick_turn_right_edit_text); - textDegrees.setText(formatNumberForPrototypeView(BrickValues.TURN_DEGREES)); - return prototypeView; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createTurnRightAction(sprite, - getFormulaWithBrickField(BrickField.TURN_RIGHT_DEGREES))); + sequence.addAction(sprite.getActionFactory() + .createTurnRightAction(sprite, getFormulaWithBrickField(BrickField.TURN_RIGHT_DEGREES))); return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.TURN_RIGHT_DEGREES); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/UserBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/UserBrick.java index 35a2ebee943..ff2c9eceb60 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/UserBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/UserBrick.java @@ -22,12 +22,9 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; -import android.widget.EditText; -import android.widget.TextView; import com.thoughtworks.xstream.annotations.XStreamAlias; @@ -40,7 +37,6 @@ import org.catrobat.catroid.formulaeditor.InterpretationException; import org.catrobat.catroid.formulaeditor.UserVariable; import org.catrobat.catroid.formulaeditor.datacontainer.DataContainer; -import org.catrobat.catroid.ui.BrickLayout; import java.util.ArrayList; import java.util.LinkedList; @@ -52,7 +48,6 @@ public class UserBrick extends BrickBaseType implements OnClickListener { @XStreamAlias("definitionBrick") private UserScriptDefinitionBrick definitionBrick; - private transient View prototypeView; @XStreamAlias("userBrickParameters") private List userBrickParameters = new ArrayList<>(); @@ -70,80 +65,14 @@ public int getRequiredResources() { return definitionBrick.getRequiredResources(); } - @Override - public BrickBaseType clone() { - UserBrick clonedUserBrick = new UserBrick(definitionBrick); - clonedUserBrick.userBrickParameters = new ArrayList<>(); - if (userBrickParameters != null) { - for (int position = 0; position < userBrickParameters.size(); position++) { - UserBrickParameter userBrickParameter = userBrickParameters.get(position); - clonedUserBrick.userBrickParameters.add(userBrickParameter.clone()); - } - } - return clonedUserBrick; - } - public List getUserBrickParameters() { return userBrickParameters; } - private UserBrickParameter getUserBrickParameterByUserBrickElement(UserScriptDefinitionBrickElement element) { - if (userBrickParameters == null) { - return null; - } - for (UserBrickParameter parameter : userBrickParameters) { - if (parameter.getElement().equals(element)) { - return parameter; - } - } - return null; - } - public void updateUserBrickParametersAndVariables() { - updateUserBrickParameters(); updateUserVariableValues(); } - public void updateUserBrickParameters() { - List newParameters = new ArrayList<>(); - List elements = getUserScriptDefinitionBrickElements(); - - for (UserScriptDefinitionBrickElement element : elements) { - if (!element.isVariable()) { - continue; - } - UserBrickParameter parameter = getUserBrickParameterByUserBrickElement(element); - if (parameter == null) { - parameter = new UserBrickParameter(this, element); - parameter.setFormulaWithBrickField(BrickField.USER_BRICK, new Formula(0)); - } - newParameters.add(parameter); - } - - if (userBrickParameters != null) { - copyFormulasMatchingNames(userBrickParameters, newParameters); - } - - userBrickParameters = newParameters; - } - - public void copyFormulasMatchingNames(List originalParameters, List copiedParameters) { - for (UserBrickParameter originalParameter : originalParameters) { - UserScriptDefinitionBrickElement originalElement = originalParameter.getElement(); - if (!originalElement.isVariable()) { - return; - } - - for (UserBrickParameter copiedParameter : copiedParameters) { - UserScriptDefinitionBrickElement copiedElement = copiedParameter.getElement(); - if (originalElement.equals(copiedElement)) { - Formula formula = originalParameter.getFormulaWithBrickField(BrickField.USER_BRICK); - copiedParameter.setFormulaWithBrickField(BrickField.USER_BRICK, formula.clone()); - } - } - } - } - private void updateUserVariableValues() { DataContainer dataContainer = ProjectManager.getInstance().getCurrentlyEditedScene().getDataContainer(); List variables = new ArrayList<>(); @@ -191,109 +120,8 @@ public int getViewResource() { return R.layout.brick_user; } - @Override - public View getView(Context context) { - super.getView(context); - setUserBrickParametersParent(); - onLayoutChanged(view); - return view; - } - - private void setUserBrickParametersParent() { - if (userBrickParameters != null) { - for (UserBrickParameter parameter : userBrickParameters) { - parameter.setParent(this); - } - } - } - - @Override - public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - onLayoutChanged(prototypeView); - return prototypeView; - } - - public void onLayoutChanged(View currentView) { - boolean prototype = (currentView == prototypeView); - - Context context = currentView.getContext(); - - BrickLayout layout = (BrickLayout) currentView.findViewById(R.id.brick_user_flow_layout); - if (layout.getChildCount() > 0) { - layout.removeAllViews(); - } - - int id = 0; - for (UserScriptDefinitionBrickElement element : getUserScriptDefinitionBrickElements()) { - TextView currentEditText; - if (element.isLineBreak()) { - continue; - } else if (element.isVariable()) { - UserBrickParameter parameter = getUserBrickParameterByUserBrickElement(element); - currentEditText = new EditText(context); - - currentEditText.setId(id); - currentEditText.setTextAppearance(context, R.style.BrickEditText); - - if (parameter != null) { - parameter.getFormulaWithBrickField(BrickField.USER_BRICK).setTextFieldId(currentEditText.getId()); - String formulaString = parameter.getFormulaWithBrickField(BrickField.USER_BRICK).getDisplayString(currentEditText.getContext()); - parameter.getFormulaWithBrickField(BrickField.USER_BRICK).refreshTextField(currentEditText, formulaString); - } - - // This stuff isn't being included by the style when I use setTextAppearance. - currentEditText.setFocusable(false); - currentEditText.setFocusableInTouchMode(false); - - currentEditText.setOnClickListener(this); - - currentEditText.setVisibility(View.VISIBLE); - if (parameter != null) { - if (prototype) { - parameter.setPrototypeView(currentEditText); - } else { - parameter.setTextView(currentEditText); - } - } - } else { - currentEditText = new TextView(context); - currentEditText.setTextAppearance(context, R.style.BrickText_Multiple); - - currentEditText.setText(element.getText()); - } - - // This stuff isn't being included by the style when I use setTextAppearance. - if (prototype) { - currentEditText.setFocusable(false); - currentEditText.setFocusableInTouchMode(false); - currentEditText.setClickable(false); - } - - layout.addView(currentEditText); - - if (element.isNewLineHint()) { - BrickLayout.LayoutParams params = (BrickLayout.LayoutParams) currentEditText.getLayoutParams(); - params.setNewLine(true); - currentEditText.setLayoutParams(params); - } - id++; - } - } - @Override public void onClick(View eventOrigin) { - if (checkbox.getVisibility() == View.VISIBLE) { - return; - } - - for (UserBrickParameter userBrickParameter : userBrickParameters) { - int currentUserBrickParameterIndex = userBrickParameter.getTextView().getId(); - int clickedUserBrickParameterIndex = eventOrigin.getId(); - if (currentUserBrickParameterIndex == clickedUserBrickParameterIndex) { - userBrickParameter.showFormulaEditorToEditFormula(view); - } - } } @Override @@ -302,7 +130,7 @@ public List addActionToSequence(Sprite sprite, ScriptSeque List returnActionList = new ArrayList<>(); ActionFactory actionFactory = sprite.getActionFactory(); - ScriptSequenceAction userSequence = (ScriptSequenceAction) actionFactory.eventSequence(definitionBrick.getScript()); + ScriptSequenceAction userSequence = (ScriptSequenceAction) ActionFactory.eventSequence(definitionBrick.getScript()); definitionBrick.getScript().run(sprite, userSequence); returnActionList.add(userSequence); sequence.addAction(actionFactory.createUserBrickAction(userSequence, this)); @@ -322,8 +150,4 @@ public UserScriptDefinitionBrick getDefinitionBrick() { public void setDefinitionBrick(UserScriptDefinitionBrick definitionBrick) { this.definitionBrick = definitionBrick; } - - public List getUserScriptDefinitionBrickElements() { - return definitionBrick.getUserScriptDefinitionBrickElements(); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/UserBrickParameter.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/UserBrickParameter.java index 2cec30cc644..2394bb851a0 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/UserBrickParameter.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/UserBrickParameter.java @@ -29,9 +29,7 @@ import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; -import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.formulaeditor.datacontainer.DataContainer; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -41,37 +39,10 @@ public class UserBrickParameter extends FormulaBrick { private UserScriptDefinitionBrickElement element; - private transient TextView textView; private transient TextView prototypeView; private transient UserBrick parent; - public UserBrickParameter(UserBrick parent, UserScriptDefinitionBrickElement element) { - this.parent = parent; - this.element = element; - addAllowedBrickField(BrickField.USER_BRICK); - setFormulaWithBrickField(BrickField.USER_BRICK, new Formula(0)); - } - - public UserBrickParameter(Formula parameter) { - addAllowedBrickField(BrickField.USER_BRICK); - setFormulaWithBrickField(BrickField.USER_BRICK, parameter); - } - - @Override - public UserBrickParameter clone() { - UserBrickParameter clonedBrick = new UserBrickParameter(getFormulaWithBrickField( - BrickField.USER_BRICK).clone()); - if (textView != null) { - clonedBrick.getFormulaWithBrickField(BrickField.USER_BRICK).setTextFieldId(textView.getId()); - } - clonedBrick.parent = parent; - clonedBrick.element = element; - clonedBrick.textView = textView; - clonedBrick.prototypeView = prototypeView; - return clonedBrick; - } - @Override public int getViewResource() { return parent.getViewResource(); @@ -88,24 +59,12 @@ public List addActionToSequence(Sprite sprite, ScriptSeque DataContainer dataContainer = ProjectManager.getInstance().getCurrentlyEditedScene().getDataContainer(); String variableName = element.getText(); - sequence.addAction(sprite.getActionFactory().createSetVariableAction(sprite, - getFormulaWithBrickField(BrickField.VARIABLE), dataContainer.getUserVariable(sprite, parent, variableName))); + sequence.addAction(sprite.getActionFactory() + .createSetVariableAction(sprite, getFormulaWithBrickField(BrickField.VARIABLE), + dataContainer.getUserVariable(sprite, parent, variableName))); return null; } - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.USER_BRICK); - } - - public TextView getTextView() { - return textView; - } - - public void setTextView(TextView textView) { - this.textView = textView; - } - public TextView getPrototypeView() { return prototypeView; } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/UserVariableBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/UserVariableBrick.java index 0dd40704c44..c210aeb806c 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/UserVariableBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/UserVariableBrick.java @@ -80,7 +80,7 @@ public boolean onTouch(View view, MotionEvent event) { }; } - protected AdapterView.OnItemSelectedListener createVariableSpinnerItemSelectedListener() { + AdapterView.OnItemSelectedListener createVariableSpinnerItemSelectedListener() { return new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/VibrationBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/VibrationBrick.java index 0d1ed146895..32a0171e26e 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/VibrationBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/VibrationBrick.java @@ -23,102 +23,61 @@ package org.catrobat.catroid.content.bricks; import android.content.Context; -import android.util.Log; import android.view.View; -import android.widget.TextView; -import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.formulaeditor.InterpretationException; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; -import org.catrobat.catroid.utils.Utils; import java.util.List; public class VibrationBrick extends FormulaBrick { - private static final long serialVersionUID = 1L; - private transient View prototypeView; + private static final long serialVersionUID = 1L; public VibrationBrick() { - addAllowedBrickField(BrickField.VIBRATE_DURATION_IN_SECONDS); + this(new Formula(BrickValues.VIBRATE_SECONDS)); } - public VibrationBrick(float vibrateDurationInSeconds) { - initializeBrickFields(new Formula(vibrateDurationInSeconds)); + public VibrationBrick(double vibrateDurationInSeconds) { + this(new Formula(vibrateDurationInSeconds)); } public VibrationBrick(Formula vibrateDurationInSecondsFormula) { - initializeBrickFields(vibrateDurationInSecondsFormula); - } - - private void initializeBrickFields(Formula vibrateDurationInSecondsFormula) { - addAllowedBrickField(BrickField.VIBRATE_DURATION_IN_SECONDS); + addAllowedBrickField(BrickField.VIBRATE_DURATION_IN_SECONDS, R.id.brick_vibration_edit_text); setFormulaWithBrickField(BrickField.VIBRATE_DURATION_IN_SECONDS, vibrateDurationInSecondsFormula); } @Override - public int getRequiredResources() { - return VIBRATOR; + public int getViewResource() { + return R.layout.brick_vibration; } @Override - public int getViewResource() { - return R.layout.brick_vibration; + public View getPrototypeView(Context context) { + View prototypeView = super.getPrototypeView(context); + setSecondsLabel(prototypeView, BrickField.VIBRATE_DURATION_IN_SECONDS); + return prototypeView; } @Override public View getView(Context context) { super.getView(context); - TextView editVibrate = (TextView) view.findViewById(R.id.brick_vibration_edit_text); - TextView secondTextVibrate = (TextView) view.findViewById(R.id.brick_vibration_second_label); - - getFormulaWithBrickField(BrickField.VIBRATE_DURATION_IN_SECONDS) - .setTextFieldId(R.id.brick_vibration_edit_text); - getFormulaWithBrickField(BrickField.VIBRATE_DURATION_IN_SECONDS).refreshTextField(view); - - if (getFormulaWithBrickField(BrickField.VIBRATE_DURATION_IN_SECONDS).isSingleNumberFormula()) { - try { - secondTextVibrate.setText(view.getResources().getQuantityString(R.plurals.second_plural, - Utils.convertDoubleToPluralInteger(getFormulaWithBrickField(BrickField.VIBRATE_DURATION_IN_SECONDS) - .interpretDouble(ProjectManager.getInstance().getCurrentSprite())))); - } catch (InterpretationException interpretationException) { - Log.d(getClass().getSimpleName(), "Formula interpretation for this specific Brick failed.", interpretationException); - } - } else { - secondTextVibrate.setText(view.getResources().getQuantityString(R.plurals.second_plural, - Utils.TRANSLATION_PLURAL_OTHER_INTEGER)); - } - - editVibrate.setOnClickListener(this); - + setSecondsLabel(view, BrickField.VIBRATE_DURATION_IN_SECONDS); return view; } @Override - public View getPrototypeView(Context context) { - prototypeView = super.getPrototypeView(context); - TextView textVibrate = (TextView) prototypeView.findViewById(R.id.brick_vibration_edit_text); - textVibrate.setText(formatNumberForPrototypeView(BrickValues.VIBRATE_SECONDS)); - TextView secondTextVibrate = (TextView) prototypeView.findViewById(R.id.brick_vibration_second_label); - secondTextVibrate.setText(context.getResources().getQuantityString(R.plurals.second_plural, - Utils.convertDoubleToPluralInteger(BrickValues.VIBRATE_SECONDS))); - return prototypeView; + public int getRequiredResources() { + return VIBRATOR; } @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createVibrateAction(sprite, - getFormulaWithBrickField(BrickField.VIBRATE_DURATION_IN_SECONDS))); + sequence.addAction(sprite.getActionFactory() + .createVibrateAction(sprite, getFormulaWithBrickField(BrickField.VIBRATE_DURATION_IN_SECONDS))); return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.VIBRATE_DURATION_IN_SECONDS); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WaitBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WaitBrick.java index 16ea54b97cb..b7e44df64c4 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WaitBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WaitBrick.java @@ -23,19 +23,13 @@ package org.catrobat.catroid.content.bricks; import android.content.Context; -import android.util.Log; import android.view.View; -import android.widget.TextView; -import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.formulaeditor.InterpretationException; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; -import org.catrobat.catroid.utils.Utils; import java.util.List; @@ -44,99 +38,46 @@ public class WaitBrick extends FormulaBrick { private static final long serialVersionUID = 1L; public WaitBrick() { - addAllowedBrickField(BrickField.TIME_TO_WAIT_IN_SECONDS); + this(new Formula(BrickValues.WAIT)); } public WaitBrick(int timeToWaitInMillisecondsValue) { - initializeBrickFields(new Formula(timeToWaitInMillisecondsValue / 1000.0)); + this(new Formula(timeToWaitInMillisecondsValue / 1000.0)); } - public WaitBrick(Formula timeToWaitInSecondsFormula) { - initializeBrickFields(timeToWaitInSecondsFormula); - } - - private void initializeBrickFields(Formula timeToWaitInSeconds) { - addAllowedBrickField(BrickField.TIME_TO_WAIT_IN_SECONDS); - setFormulaWithBrickField(BrickField.TIME_TO_WAIT_IN_SECONDS, timeToWaitInSeconds); + public WaitBrick(Formula formula) { + addAllowedBrickField(BrickField.TIME_TO_WAIT_IN_SECONDS, R.id.brick_wait_edit_text); + setFormulaWithBrickField(BrickField.TIME_TO_WAIT_IN_SECONDS, formula); } @Override - public int getRequiredResources() { - return getFormulaWithBrickField(BrickField.TIME_TO_WAIT_IN_SECONDS).getRequiredResources(); - } - - public Formula getTimeToWait() { - return getFormulaWithBrickField(BrickField.TIME_TO_WAIT_IN_SECONDS); - } - - public void setTimeToWait(Formula timeToWaitInSeconds) { - setFormulaWithBrickField(BrickField.TIME_TO_WAIT_IN_SECONDS, timeToWaitInSeconds); + public int getViewResource() { + return R.layout.brick_wait; } @Override - public int getViewResource() { - return R.layout.brick_wait; + public View getPrototypeView(Context context) { + View prototypeView = super.getPrototypeView(context); + setSecondsLabel(prototypeView, BrickField.TIME_TO_WAIT_IN_SECONDS); + return prototypeView; } @Override public View getView(Context context) { super.getView(context); - onViewCreated(view); + setSecondsLabel(view, BrickField.TIME_TO_WAIT_IN_SECONDS); return view; } - protected void onViewCreated(View view) { - TextView edit = view.findViewById(R.id.brick_wait_edit_text); - getFormulaWithBrickField(BrickField.TIME_TO_WAIT_IN_SECONDS).setTextFieldId(R.id.brick_wait_edit_text); - getFormulaWithBrickField(BrickField.TIME_TO_WAIT_IN_SECONDS).refreshTextField(view); - - TextView times = view.findViewById(R.id.brick_wait_second_text_view); - - if (getFormulaWithBrickField(BrickField.TIME_TO_WAIT_IN_SECONDS).isSingleNumberFormula()) { - try { - times.setText(view.getResources().getQuantityString( - R.plurals.second_plural, - Utils.convertDoubleToPluralInteger(getFormulaWithBrickField(BrickField.TIME_TO_WAIT_IN_SECONDS) - .interpretDouble(ProjectManager.getInstance().getCurrentSprite())) - )); - } catch (InterpretationException interpretationException) { - Log.d(getClass().getSimpleName(), "Couldn't interpret Formula.", interpretationException); - } - } else { - - // Random Number to get into the "other" keyword for values like 0.99 or 2.001 seconds or degrees - // in hopefully all possible languages - times.setText(view.getResources().getQuantityString(R.plurals.second_plural, - Utils.TRANSLATION_PLURAL_OTHER_INTEGER)); - } - - edit.setOnClickListener(this); - } - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - onPrototypeViewCreated(prototypeView); - return prototypeView; - } - - protected void onPrototypeViewCreated(View prototypeView) { - TextView textWait = prototypeView.findViewById(R.id.brick_wait_edit_text); - textWait.setText(formatNumberForPrototypeView(BrickValues.WAIT / 1000)); - TextView times = prototypeView.findViewById(R.id.brick_wait_second_text_view); - times.setText(prototypeView.getContext().getResources().getQuantityString(R.plurals.second_plural, - Utils.convertDoubleToPluralInteger(BrickValues.WAIT / 1000))); + public int getRequiredResources() { + return getFormulaWithBrickField(BrickField.TIME_TO_WAIT_IN_SECONDS).getRequiredResources(); } @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createWaitAction(sprite, - getFormulaWithBrickField(BrickField.TIME_TO_WAIT_IN_SECONDS))); + sequence.addAction(sprite.getActionFactory() + .createWaitAction(sprite, getFormulaWithBrickField(BrickField.TIME_TO_WAIT_IN_SECONDS))); return null; } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.TIME_TO_WAIT_IN_SECONDS); - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WaitUntilBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WaitUntilBrick.java index 74e788319c5..2a7791cb745 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WaitUntilBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WaitUntilBrick.java @@ -22,29 +22,18 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; public class WaitUntilBrick extends FormulaBrick { - public WaitUntilBrick(Formula condition) { - addAllowedBrickField(BrickField.IF_CONDITION); - setFormulaWithBrickField(BrickField.IF_CONDITION, condition); - } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.IF_CONDITION); + public WaitUntilBrick(Formula formula) { + addAllowedBrickField(BrickField.IF_CONDITION, R.id.brick_wait_until_edit_text); + setFormulaWithBrickField(BrickField.IF_CONDITION, formula); } @Override @@ -52,30 +41,10 @@ public int getViewResource() { return R.layout.brick_wait_until; } - @Override - public View getView(Context context) { - super.getView(context); - TextView ifBeginTextView = view.findViewById(R.id.brick_wait_until_edit_text); - - getFormulaWithBrickField(BrickField.IF_CONDITION).setTextFieldId(R.id.brick_wait_until_edit_text); - getFormulaWithBrickField(BrickField.IF_CONDITION).refreshTextField(view); - - ifBeginTextView.setOnClickListener(this); - - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textIfBegin = prototypeView.findViewById(R.id.brick_wait_until_edit_text); - textIfBegin.setText(BrickValues.IF_CONDITION); - return prototypeView; - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - sequence.addAction(sprite.getActionFactory().createWaitUntilAction(sprite, getFormulaWithBrickField(BrickField.IF_CONDITION))); + sequence.addAction(sprite.getActionFactory() + .createWaitUntilAction(sprite, getFormulaWithBrickField(BrickField.IF_CONDITION))); return null; } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenConditionBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenConditionBrick.java index 663255e3638..3b94d58ff12 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenConditionBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenConditionBrick.java @@ -22,10 +22,6 @@ */ package org.catrobat.catroid.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Script; @@ -33,7 +29,6 @@ import org.catrobat.catroid.content.WhenConditionScript; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -41,18 +36,22 @@ public class WhenConditionBrick extends FormulaBrick implements ScriptBrick { private WhenConditionScript script; - public WhenConditionBrick(Formula condition) { - this(new WhenConditionScript()); - setFormulaWithBrickField(BrickField.IF_CONDITION, condition); + public WhenConditionBrick(Formula formula) { + this(formula, new WhenConditionScript()); } public WhenConditionBrick(WhenConditionScript script) { + this(new Formula(BrickValues.IF_CONDITION), script); + } + + public WhenConditionBrick(Formula formula, WhenConditionScript script) { script.setScriptBrick(this); commentedOut = script.isCommentedOut(); this.script = script; formulaMap = script.getFormulaMap(); - addAllowedBrickField(BrickField.IF_CONDITION); + addAllowedBrickField(BrickField.IF_CONDITION, R.id.brick_when_condition_edit_text); + setFormulaWithBrickField(BrickField.IF_CONDITION, formula); } @Override @@ -65,49 +64,32 @@ public BrickBaseType clone() throws CloneNotSupportedException { } @Override - public int getRequiredResources() { - return getConditionFormula().getRequiredResources(); + public int getViewResource() { + return R.layout.brick_when_condition_true; } - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.IF_CONDITION); + public Formula getConditionFormula() { + return getFormulaWithBrickField(BrickField.IF_CONDITION); } @Override - public int getViewResource() { - return R.layout.brick_when_condition_true; + public Script getScript() { + return script; } @Override - public View getView(Context context) { - super.getView(context); - TextView conditionEditText = view.findViewById(R.id.brick_when_condition_edit_text); - getFormulaWithBrickField(BrickField.IF_CONDITION).setTextFieldId(R.id.brick_when_condition_edit_text); - getFormulaWithBrickField(BrickField.IF_CONDITION).refreshTextField(view); - conditionEditText.setOnClickListener(this); - return view; - } - - public Formula getConditionFormula() { - return getFormulaWithBrickField(BrickField.IF_CONDITION); + public void setCommentedOut(boolean commentedOut) { + super.setCommentedOut(commentedOut); + getScript().setCommentedOut(commentedOut); } @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textView = prototypeView.findViewById(R.id.brick_when_condition_edit_text); - textView.setText(BrickValues.IF_CONDITION); - return prototypeView; + public int getRequiredResources() { + return getConditionFormula().getRequiredResources(); } @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { return null; } - - @Override - public Script getScript() { - return script; - } } diff --git a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenStartedBrick.java b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenStartedBrick.java index ce70a4cf94c..1be0488628d 100644 --- a/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenStartedBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/content/bricks/WhenStartedBrick.java @@ -30,8 +30,6 @@ import java.util.List; -import javax.annotation.Nonnull; - public class WhenStartedBrick extends BrickBaseType implements ScriptBrick { private static final long serialVersionUID = 1L; @@ -42,7 +40,7 @@ public WhenStartedBrick() { this(new StartScript()); } - public WhenStartedBrick(@Nonnull StartScript script) { + public WhenStartedBrick(StartScript script) { script.setScriptBrick(this); commentedOut = script.isCommentedOut(); this.script = script; @@ -66,14 +64,14 @@ public Script getScript() { return script; } - @Override - public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { - return null; - } - @Override public void setCommentedOut(boolean commentedOut) { super.setCommentedOut(commentedOut); getScript().setCommentedOut(commentedOut); } + + @Override + public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { + return null; + } } diff --git a/catroid/src/main/java/org/catrobat/catroid/formulaeditor/Formula.java b/catroid/src/main/java/org/catrobat/catroid/formulaeditor/Formula.java index 5b9e4a69978..f9de8eb6831 100644 --- a/catroid/src/main/java/org/catrobat/catroid/formulaeditor/Formula.java +++ b/catroid/src/main/java/org/catrobat/catroid/formulaeditor/Formula.java @@ -23,9 +23,6 @@ package org.catrobat.catroid.formulaeditor; import android.content.Context; -import android.graphics.drawable.Drawable; -import android.view.View; -import android.widget.TextView; import org.catrobat.catroid.CatroidApplication; import org.catrobat.catroid.ProjectManager; @@ -35,15 +32,13 @@ import org.catrobat.catroid.formulaeditor.datacontainer.DataContainer; import java.io.Serializable; -import java.util.List; public class Formula implements Serializable { private static final long serialVersionUID = 1L; private FormulaElement formulaTree; - private transient Integer formulaTextFieldId = null; + private transient InternFormula internFormula = null; - private transient String displayText = null; public Object readResolve() { @@ -92,24 +87,16 @@ public Formula(Double value) { public void updateVariableReferences(String oldName, String newName, Context context) { internFormula.updateVariableReferences(oldName, newName, context); formulaTree.updateVariableReferences(oldName, newName); - displayText = null; - } - - public void getVariableAndListNames(List variables, List lists) { - internFormula.getVariableAndListNames(variables, lists); - formulaTree.getVariableAndListNames(variables, lists); } public void updateCollisionFormulas(String oldName, String newName, Context context) { internFormula.updateCollisionFormula(oldName, newName, context); formulaTree.updateCollisionFormula(oldName, newName); - displayText = null; } public void updateCollisionFormulasToVersion(float catroidLanguageVersion) { internFormula.updateCollisionFormulaToVersion(CatroidApplication.getAppContext(), catroidLanguageVersion); formulaTree.updateCollisionFormulaToVersion(catroidLanguageVersion); - displayText = null; } public boolean containsSpriteInCollision(String name) { @@ -127,10 +114,6 @@ public Formula(String value) { } } - public void setDisplayText(String text) { - displayText = text; - } - public Boolean interpretBoolean(Sprite sprite) throws InterpretationException { int result = interpretDouble(sprite).intValue(); return result != 0; @@ -185,7 +168,6 @@ public Object interpretObject(Sprite sprite) { } public void setRoot(FormulaElement formula) { - displayText = null; formulaTree = formula; internFormula = new InternFormula(formula.getInternTokenList()); } @@ -194,54 +176,10 @@ public FormulaElement getRoot() { return formulaTree; } - public void setTextFieldId(int id) { - formulaTextFieldId = id; - } - - public String getDisplayString(Context context) { - if (displayText != null) { - return displayText; - } - - if (context != null) { - internFormula.generateExternFormulaStringAndInternExternMapping(context); - } - return internFormula.getExternFormulaString(); - } - - public void refreshTextField(View view) { - refreshTextField(view, getTrimmedFormulaString(view.getContext())); - } - - public void refreshTextField(View view, String formulaString) { - if (formulaTextFieldId != null && formulaTree != null && view != null) { - TextView formulaTextField = (TextView) view.findViewById(formulaTextFieldId); - if (formulaTextField != null) { - formulaTextField.setText(formulaString); - } - } - } - - @SuppressWarnings("deprecation") - public void highlightTextField(View brickView) { - Drawable highlightBackground; - highlightBackground = brickView.getResources().getDrawable(R.drawable.textfield_pressed_android4); - - TextView formulaTextField = (TextView) brickView.findViewById(formulaTextFieldId); - - if (formulaTextField != null) { - formulaTextField.setBackgroundDrawable(highlightBackground); - } - } - public String getTrimmedFormulaString(Context context) { return internFormula.trimExternFormulaString(context); } - public void prepareToRemove() { - formulaTextFieldId = null; - } - public InternFormulaState getInternFormulaState() { return internFormula.getInternFormulaState(); } diff --git a/catroid/src/main/java/org/catrobat/catroid/formulaeditor/FormulaEditorEditText.java b/catroid/src/main/java/org/catrobat/catroid/formulaeditor/FormulaEditorEditText.java index 503e1efc656..1a0d52c9a33 100644 --- a/catroid/src/main/java/org/catrobat/catroid/formulaeditor/FormulaEditorEditText.java +++ b/catroid/src/main/java/org/catrobat/catroid/formulaeditor/FormulaEditorEditText.java @@ -121,12 +121,13 @@ public boolean onSingleTapUp(MotionEvent motion) { history.updateCurrentSelection(internFormula.getSelection()); history.updateCurrentCursor(absoluteCursorPosition); - formulaEditorFragment.refreshFormulaPreviewString(); + formulaEditorFragment.refreshFormulaPreviewString(internFormula.getExternFormulaString()); formulaEditorFragment.updateButtonsOnKeyboardAndInvalidateOptionsMenu(); } return true; } }); + private boolean doNotMoveCursorOnTab = false; public FormulaEditorEditText(Context context) { @@ -164,21 +165,6 @@ public void enterNewFormula(InternFormulaState internFormulaState) { } } - public void overwriteCurrentFormula(InternFormulaState internFormulaState) { - internFormula = internFormulaState.createInternFormulaFromState(); - internFormula.generateExternFormulaStringAndInternExternMapping(context); - - updateTextAndCursorFromInternFormula(); - - internFormula.selectWholeFormula(); - highlightSelection(); - - history.push(internFormula.getInternFormulaState()); - String resultingText = updateTextAndCursorFromInternFormula(); - setSelection(absoluteCursorPosition); - formulaEditorFragment.refreshFormulaPreviewString(resultingText); - } - public void updateVariableReferences(String oldName, String newName) { if (internFormula == null) { return; @@ -312,7 +298,7 @@ public boolean undo() { updateTextAndCursorFromInternFormula(); } - formulaEditorFragment.refreshFormulaPreviewString(); + formulaEditorFragment.refreshFormulaPreviewString(internFormula.getExternFormulaString()); return true; } @@ -328,7 +314,7 @@ public boolean redo() { internFormula.updateInternCursorPosition(); updateTextAndCursorFromInternFormula(); } - formulaEditorFragment.refreshFormulaPreviewString(); + formulaEditorFragment.refreshFormulaPreviewString(internFormula.getExternFormulaString()); return true; } @@ -363,10 +349,6 @@ public boolean isDoNotMoveCursorOnTab() { return doNotMoveCursorOnTab; } - public void setDoNotMoveCursorOnTab(boolean doNotMoveCursorOnTab) { - this.doNotMoveCursorOnTab = doNotMoveCursorOnTab; - } - public FormulaEditorHistory getHistory() { return history; } diff --git a/catroid/src/main/java/org/catrobat/catroid/io/BackwardCompatibleCatrobatLanguageXStream.java b/catroid/src/main/java/org/catrobat/catroid/io/BackwardCompatibleCatrobatLanguageXStream.java index c50080bbce0..e090c1ad93c 100644 --- a/catroid/src/main/java/org/catrobat/catroid/io/BackwardCompatibleCatrobatLanguageXStream.java +++ b/catroid/src/main/java/org/catrobat/catroid/io/BackwardCompatibleCatrobatLanguageXStream.java @@ -349,7 +349,6 @@ private void initializeBrickInfoMap() { brickInfoMap.put("phiroRGBLightBrick", brickInfo); brickInfo = new BrickInfo(PhiroIfLogicBeginBrick.class.getSimpleName()); - brickInfo.addBrickFieldToMap("ifPhiroSensorCondition", BrickField.IF_PHIRO_SENSOR_CONDITION); brickInfoMap.put("phiroSensorBrick", brickInfo); brickInfo = new BrickInfo(IfLogicElseBrick.class.getSimpleName()); diff --git a/catroid/src/main/java/org/catrobat/catroid/io/XstreamSerializer.java b/catroid/src/main/java/org/catrobat/catroid/io/XstreamSerializer.java index ef53d01555e..20b75dc1923 100644 --- a/catroid/src/main/java/org/catrobat/catroid/io/XstreamSerializer.java +++ b/catroid/src/main/java/org/catrobat/catroid/io/XstreamSerializer.java @@ -289,14 +289,19 @@ private void prepareXstream(Class projectClass, Class dataContainerClass) { xstream.omitField(CameraBrick.class, "spinnerValues"); xstream.omitField(ChooseCameraBrick.class, "spinnerValues"); xstream.omitField(FlashBrick.class, "spinnerValues"); + + xstream.omitField(SpeakAndWaitBrick.class, "speechFile"); + xstream.omitField(SpeakAndWaitBrick.class, "duration"); + xstream.omitField(StopScriptBrick.class, "spinnerValue"); xstream.omitField(ShowTextBrick.class, "userVariableName"); xstream.omitField(HideTextBrick.class, "userVariableName"); - xstream.omitField(RaspiInterruptScript.class, "receivedMessage"); - xstream.omitField(WhenScript.class, "action"); xstream.omitField(StartScript.class, "isUserScript"); + xstream.omitField(WhenScript.class, "action"); + + xstream.omitField(RaspiInterruptScript.class, "receivedMessage"); xstream.alias("look", LookData.class); xstream.alias("droneLook", DroneVideoLookData.class); diff --git a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetBounceBrick.java b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetBounceBrick.java index 81d7535359a..643f3946820 100644 --- a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetBounceBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetBounceBrick.java @@ -22,17 +22,12 @@ */ package org.catrobat.catroid.physics.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.content.bricks.FormulaBrick; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -41,20 +36,16 @@ public class SetBounceBrick extends FormulaBrick { private static final long serialVersionUID = 1L; public SetBounceBrick() { - addAllowedBrickField(BrickField.PHYSICS_BOUNCE_FACTOR); - } - - public SetBounceBrick(float bounceFactor) { - initializeBrickFields(new Formula(bounceFactor)); + this(new Formula(BrickValues.PHYSIC_BOUNCE_FACTOR)); } - public SetBounceBrick(Formula bounceFactor) { - initializeBrickFields(bounceFactor); + public SetBounceBrick(double bounceFactor) { + this(new Formula(bounceFactor)); } - private void initializeBrickFields(Formula bounceFactor) { - addAllowedBrickField(BrickField.PHYSICS_BOUNCE_FACTOR); - setFormulaWithBrickField(BrickField.PHYSICS_BOUNCE_FACTOR, bounceFactor); + public SetBounceBrick(Formula formula) { + addAllowedBrickField(BrickField.PHYSICS_BOUNCE_FACTOR, R.id.brick_set_bounce_factor_edit_text); + setFormulaWithBrickField(BrickField.PHYSICS_BOUNCE_FACTOR, formula); } @Override @@ -67,33 +58,6 @@ public int getViewResource() { return R.layout.brick_physics_set_bounce_factor; } - @Override - public View getView(Context context) { - super.getView(context); - - TextView edit = view.findViewById(R.id.brick_set_bounce_factor_edit_text); - - getFormulaWithBrickField(BrickField.PHYSICS_BOUNCE_FACTOR).setTextFieldId(R.id.brick_set_bounce_factor_edit_text); - getFormulaWithBrickField(BrickField.PHYSICS_BOUNCE_FACTOR).refreshTextField(view); - - edit.setOnClickListener(this); - - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textBounceFactor = prototypeView.findViewById(R.id.brick_set_bounce_factor_edit_text); - textBounceFactor.setText(formatNumberForPrototypeView(BrickValues.PHYSIC_BOUNCE_FACTOR * 100)); - return prototypeView; - } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.PHYSICS_BOUNCE_FACTOR); - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createSetBounceFactorAction(sprite, diff --git a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetFrictionBrick.java b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetFrictionBrick.java index e92a5781eaa..837bd6ccb70 100644 --- a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetFrictionBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetFrictionBrick.java @@ -22,17 +22,12 @@ */ package org.catrobat.catroid.physics.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.content.bricks.FormulaBrick; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -41,20 +36,16 @@ public class SetFrictionBrick extends FormulaBrick { private static final long serialVersionUID = 1L; public SetFrictionBrick() { - addAllowedBrickField(BrickField.PHYSICS_FRICTION); - } - - public SetFrictionBrick(float friction) { - initializeBrickFields(new Formula(friction)); + this(new Formula(BrickValues.PHYSIC_FRICTION)); } - public SetFrictionBrick(Formula friction) { - initializeBrickFields(friction); + public SetFrictionBrick(double friction) { + this(new Formula(friction)); } - private void initializeBrickFields(Formula friction) { - addAllowedBrickField(BrickField.PHYSICS_FRICTION); - setFormulaWithBrickField(BrickField.PHYSICS_FRICTION, friction); + public SetFrictionBrick(Formula formula) { + addAllowedBrickField(BrickField.PHYSICS_FRICTION, R.id.brick_set_friction_edit_text); + setFormulaWithBrickField(BrickField.PHYSICS_FRICTION, formula); } @Override @@ -67,29 +58,6 @@ public int getViewResource() { return R.layout.brick_physics_set_friction; } - @Override - public View getView(Context context) { - super.getView(context); - TextView edit = view.findViewById(R.id.brick_set_friction_edit_text); - getFormulaWithBrickField(BrickField.PHYSICS_FRICTION).setTextFieldId(R.id.brick_set_friction_edit_text); - getFormulaWithBrickField(BrickField.PHYSICS_FRICTION).refreshTextField(view); - edit.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textFriction = prototypeView.findViewById(R.id.brick_set_friction_edit_text); - textFriction.setText(formatNumberForPrototypeView(BrickValues.PHYSIC_FRICTION * 100)); - return prototypeView; - } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.PHYSICS_FRICTION); - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory() diff --git a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetGravityBrick.java b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetGravityBrick.java index 8923b6c8e51..dd8503156a7 100644 --- a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetGravityBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetGravityBrick.java @@ -22,10 +22,6 @@ */ package org.catrobat.catroid.physics.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import com.badlogic.gdx.math.Vector2; import org.catrobat.catroid.R; @@ -34,7 +30,6 @@ import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.content.bricks.FormulaBrick; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -43,21 +38,16 @@ public class SetGravityBrick extends FormulaBrick { private static final long serialVersionUID = 1L; public SetGravityBrick() { - addAllowedBrickField(BrickField.PHYSICS_GRAVITY_X); - addAllowedBrickField(BrickField.PHYSICS_GRAVITY_Y); + this(new Formula(BrickValues.PHYSIC_GRAVITY.x), new Formula(BrickValues.PHYSIC_GRAVITY.y)); } public SetGravityBrick(Vector2 gravity) { - initializeBrickFields(new Formula(gravity.x), new Formula(gravity.y)); + this(new Formula(gravity.x), new Formula(gravity.y)); } public SetGravityBrick(Formula gravityX, Formula gravityY) { - initializeBrickFields(gravityX, gravityY); - } - - private void initializeBrickFields(Formula gravityX, Formula gravityY) { - addAllowedBrickField(BrickField.PHYSICS_GRAVITY_X); - addAllowedBrickField(BrickField.PHYSICS_GRAVITY_Y); + addAllowedBrickField(BrickField.PHYSICS_GRAVITY_X, R.id.brick_set_gravity_edit_text_x); + addAllowedBrickField(BrickField.PHYSICS_GRAVITY_Y, R.id.brick_set_gravity_edit_text_y); setFormulaWithBrickField(BrickField.PHYSICS_GRAVITY_X, gravityX); setFormulaWithBrickField(BrickField.PHYSICS_GRAVITY_Y, gravityY); } @@ -72,47 +62,6 @@ public int getViewResource() { return R.layout.brick_physics_set_gravity; } - @Override - public View getView(Context context) { - super.getView(context); - - TextView editX = view.findViewById(R.id.brick_set_gravity_edit_text_x); - getFormulaWithBrickField(BrickField.PHYSICS_GRAVITY_X).setTextFieldId(R.id.brick_set_gravity_edit_text_x); - getFormulaWithBrickField(BrickField.PHYSICS_GRAVITY_X).refreshTextField(view); - - editX.setOnClickListener(this); - - TextView editY = view.findViewById(R.id.brick_set_gravity_edit_text_y); - getFormulaWithBrickField(BrickField.PHYSICS_GRAVITY_Y).setTextFieldId(R.id.brick_set_gravity_edit_text_y); - getFormulaWithBrickField(BrickField.PHYSICS_GRAVITY_Y).refreshTextField(view); - - editY.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textGravityX = prototypeView.findViewById(R.id.brick_set_gravity_edit_text_x); - textGravityX.setText(formatNumberForPrototypeView(BrickValues.PHYSIC_GRAVITY.x)); - TextView textGravityY = prototypeView.findViewById(R.id.brick_set_gravity_edit_text_y); - textGravityY.setText(formatNumberForPrototypeView(BrickValues.PHYSIC_GRAVITY.y)); - return prototypeView; - } - - @Override - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_set_gravity_edit_text_y: - FormulaEditorFragment.showFragment(view, this, BrickField.PHYSICS_GRAVITY_Y); - break; - case R.id.brick_set_gravity_edit_text_x: - default: - FormulaEditorFragment.showFragment(view, this, BrickField.PHYSICS_GRAVITY_X); - break; - } - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createSetGravityAction(sprite, diff --git a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetMassBrick.java b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetMassBrick.java index 258f413ebc8..6c95f42d903 100644 --- a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetMassBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetMassBrick.java @@ -22,17 +22,12 @@ */ package org.catrobat.catroid.physics.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.content.bricks.FormulaBrick; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -41,20 +36,16 @@ public class SetMassBrick extends FormulaBrick { private static final long serialVersionUID = 1L; public SetMassBrick() { - addAllowedBrickField(BrickField.PHYSICS_MASS); - } - - public SetMassBrick(float mass) { - initializeBrickFields(new Formula(mass)); + this(new Formula(BrickValues.PHYSIC_MASS)); } - public SetMassBrick(Formula mass) { - initializeBrickFields(mass); + public SetMassBrick(double mass) { + this(new Formula(mass)); } - private void initializeBrickFields(Formula mass) { - addAllowedBrickField(BrickField.PHYSICS_MASS); - setFormulaWithBrickField(BrickField.PHYSICS_MASS, mass); + public SetMassBrick(Formula formula) { + addAllowedBrickField(BrickField.PHYSICS_MASS, R.id.brick_set_mass_edit_text); + setFormulaWithBrickField(BrickField.PHYSICS_MASS, formula); } @Override @@ -67,29 +58,6 @@ public int getViewResource() { return R.layout.brick_physics_set_mass; } - @Override - public View getView(Context context) { - super.getView(context); - TextView edit = view.findViewById(R.id.brick_set_mass_edit_text); - getFormulaWithBrickField(BrickField.PHYSICS_MASS).setTextFieldId(R.id.brick_set_mass_edit_text); - getFormulaWithBrickField(BrickField.PHYSICS_MASS).refreshTextField(view); - edit.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textMass = prototypeView.findViewById(R.id.brick_set_mass_edit_text); - textMass.setText(formatNumberForPrototypeView(BrickValues.PHYSIC_MASS)); - return prototypeView; - } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.PHYSICS_MASS); - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory() diff --git a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetVelocityBrick.java b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetVelocityBrick.java index d9de77a011a..ad4375148f8 100644 --- a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetVelocityBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/SetVelocityBrick.java @@ -22,10 +22,6 @@ */ package org.catrobat.catroid.physics.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import com.badlogic.gdx.math.Vector2; import org.catrobat.catroid.R; @@ -34,7 +30,6 @@ import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.content.bricks.FormulaBrick; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -43,21 +38,16 @@ public class SetVelocityBrick extends FormulaBrick { private static final long serialVersionUID = 1L; public SetVelocityBrick() { - addAllowedBrickField(BrickField.PHYSICS_VELOCITY_X); - addAllowedBrickField(BrickField.PHYSICS_VELOCITY_Y); + this(new Formula(BrickValues.PHYSIC_VELOCITY.x), new Formula(BrickValues.PHYSIC_VELOCITY.y)); } public SetVelocityBrick(Vector2 velocity) { - initializeBrickFields(new Formula(velocity.x), new Formula(velocity.y)); + this(new Formula(velocity.x), new Formula(velocity.y)); } public SetVelocityBrick(Formula velocityX, Formula velocityY) { - initializeBrickFields(velocityX, velocityY); - } - - private void initializeBrickFields(Formula velocityX, Formula velocityY) { - addAllowedBrickField(BrickField.PHYSICS_VELOCITY_X); - addAllowedBrickField(BrickField.PHYSICS_VELOCITY_Y); + addAllowedBrickField(BrickField.PHYSICS_VELOCITY_X, R.id.brick_set_velocity_edit_text_x); + addAllowedBrickField(BrickField.PHYSICS_VELOCITY_Y, R.id.brick_set_velocity_edit_text_y); setFormulaWithBrickField(BrickField.PHYSICS_VELOCITY_X, velocityX); setFormulaWithBrickField(BrickField.PHYSICS_VELOCITY_Y, velocityY); } @@ -72,48 +62,6 @@ public int getViewResource() { return R.layout.brick_physics_set_velocity; } - @Override - public View getView(Context context) { - super.getView(context); - - TextView editX = view.findViewById(R.id.brick_set_velocity_edit_text_x); - getFormulaWithBrickField(BrickField.PHYSICS_VELOCITY_X).setTextFieldId(R.id.brick_set_velocity_edit_text_x); - getFormulaWithBrickField(BrickField.PHYSICS_VELOCITY_X).refreshTextField(view); - - editX.setOnClickListener(this); - - TextView editY = view.findViewById(R.id.brick_set_velocity_edit_text_y); - getFormulaWithBrickField(BrickField.PHYSICS_VELOCITY_Y).setTextFieldId(R.id.brick_set_velocity_edit_text_y); - getFormulaWithBrickField(BrickField.PHYSICS_VELOCITY_Y).refreshTextField(view); - - editY.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textVelocityX = prototypeView.findViewById(R.id.brick_set_velocity_edit_text_x); - textVelocityX.setText(formatNumberForPrototypeView(BrickValues.PHYSIC_VELOCITY.x)); - TextView textVelocityY = prototypeView.findViewById(R.id.brick_set_velocity_edit_text_y); - textVelocityY.setText(formatNumberForPrototypeView(BrickValues.PHYSIC_VELOCITY.y)); - return prototypeView; - } - - @Override - public void showFormulaEditorToEditFormula(View view) { - switch (view.getId()) { - case R.id.brick_set_velocity_edit_text_y: - FormulaEditorFragment.showFragment(view, this, BrickField.PHYSICS_VELOCITY_Y); - break; - - case R.id.brick_set_velocity_edit_text_x: - default: - FormulaEditorFragment.showFragment(view, this, BrickField.PHYSICS_VELOCITY_X); - break; - } - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createSetVelocityAction(sprite, diff --git a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/TurnLeftSpeedBrick.java b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/TurnLeftSpeedBrick.java index 1f5e1f8a97a..a0270bf245f 100644 --- a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/TurnLeftSpeedBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/TurnLeftSpeedBrick.java @@ -22,17 +22,12 @@ */ package org.catrobat.catroid.physics.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.content.bricks.FormulaBrick; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -41,20 +36,16 @@ public class TurnLeftSpeedBrick extends FormulaBrick { private static final long serialVersionUID = 1L; public TurnLeftSpeedBrick() { - addAllowedBrickField(BrickField.PHYSICS_BOUNCE_FACTOR); - } - - public TurnLeftSpeedBrick(float degreesPerSecond) { - initializeBrickFields(new Formula(degreesPerSecond)); + this(new Formula(BrickValues.PHYSIC_TURN_DEGREES)); } - public TurnLeftSpeedBrick(Formula degreesPerSecond) { - initializeBrickFields(degreesPerSecond); + public TurnLeftSpeedBrick(double degreesPerSecond) { + this(new Formula(degreesPerSecond)); } - private void initializeBrickFields(Formula degreesPerSecond) { - addAllowedBrickField(BrickField.PHYSICS_TURN_LEFT_SPEED); - setFormulaWithBrickField(BrickField.PHYSICS_TURN_LEFT_SPEED, degreesPerSecond); + public TurnLeftSpeedBrick(Formula formula) { + addAllowedBrickField(BrickField.PHYSICS_TURN_LEFT_SPEED, R.id.brick_turn_left_speed_edit_text); + setFormulaWithBrickField(BrickField.PHYSICS_TURN_LEFT_SPEED, formula); } @Override @@ -67,29 +58,6 @@ public int getViewResource() { return R.layout.brick_physics_turn_left_speed; } - @Override - public View getView(Context context) { - super.getView(context); - TextView edit = view.findViewById(R.id.brick_turn_left_speed_edit_text); - getFormulaWithBrickField(BrickField.PHYSICS_TURN_LEFT_SPEED).setTextFieldId(R.id.brick_turn_left_speed_edit_text); - getFormulaWithBrickField(BrickField.PHYSICS_TURN_LEFT_SPEED).refreshTextField(view); - edit.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textTurnLeftSpeed = prototypeView.findViewById(R.id.brick_turn_left_speed_edit_text); - textTurnLeftSpeed.setText(formatNumberForPrototypeView(BrickValues.PHYSIC_TURN_DEGREES)); - return prototypeView; - } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.PHYSICS_TURN_LEFT_SPEED); - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory().createTurnLeftSpeedAction(sprite, diff --git a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/TurnRightSpeedBrick.java b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/TurnRightSpeedBrick.java index cc2a9500687..443cc0f6205 100644 --- a/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/TurnRightSpeedBrick.java +++ b/catroid/src/main/java/org/catrobat/catroid/physics/content/bricks/TurnRightSpeedBrick.java @@ -22,17 +22,12 @@ */ package org.catrobat.catroid.physics.content.bricks; -import android.content.Context; -import android.view.View; -import android.widget.TextView; - import org.catrobat.catroid.R; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.actions.ScriptSequenceAction; import org.catrobat.catroid.content.bricks.FormulaBrick; import org.catrobat.catroid.formulaeditor.Formula; -import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import java.util.List; @@ -41,20 +36,16 @@ public class TurnRightSpeedBrick extends FormulaBrick { private static final long serialVersionUID = 1L; public TurnRightSpeedBrick() { - addAllowedBrickField(BrickField.PHYSICS_TURN_RIGHT_SPEED); - } - - public TurnRightSpeedBrick(float degreesPerSecond) { - initializeBrickFields(new Formula(degreesPerSecond)); + this(new Formula(BrickValues.PHYSIC_TURN_DEGREES)); } - public TurnRightSpeedBrick(Formula degreesPerSecond) { - initializeBrickFields(degreesPerSecond); + public TurnRightSpeedBrick(double degreesPerSecond) { + this(new Formula(degreesPerSecond)); } - private void initializeBrickFields(Formula degreesPerSecond) { - addAllowedBrickField(BrickField.PHYSICS_TURN_RIGHT_SPEED); - setFormulaWithBrickField(BrickField.PHYSICS_TURN_RIGHT_SPEED, degreesPerSecond); + public TurnRightSpeedBrick(Formula formula) { + addAllowedBrickField(BrickField.PHYSICS_TURN_RIGHT_SPEED, R.id.brick_turn_right_speed_edit_text); + setFormulaWithBrickField(BrickField.PHYSICS_TURN_RIGHT_SPEED, formula); } @Override @@ -67,29 +58,6 @@ public int getViewResource() { return R.layout.brick_physics_turn_right_speed; } - @Override - public View getView(Context context) { - super.getView(context); - TextView edit = view.findViewById(R.id.brick_turn_right_speed_edit_text); - getFormulaWithBrickField(BrickField.PHYSICS_TURN_RIGHT_SPEED).setTextFieldId(R.id.brick_turn_right_speed_edit_text); - getFormulaWithBrickField(BrickField.PHYSICS_TURN_RIGHT_SPEED).refreshTextField(view); - edit.setOnClickListener(this); - return view; - } - - @Override - public View getPrototypeView(Context context) { - View prototypeView = super.getPrototypeView(context); - TextView textTurnRightSpeed = prototypeView.findViewById(R.id.brick_turn_right_speed_edit_text); - textTurnRightSpeed.setText(formatNumberForPrototypeView(BrickValues.PHYSIC_TURN_DEGREES)); - return prototypeView; - } - - @Override - public void showFormulaEditorToEditFormula(View view) { - FormulaEditorFragment.showFragment(view, this, BrickField.PHYSICS_TURN_RIGHT_SPEED); - } - @Override public List addActionToSequence(Sprite sprite, ScriptSequenceAction sequence) { sequence.addAction(sprite.getActionFactory() diff --git a/catroid/src/main/java/org/catrobat/catroid/stage/PenActor.java b/catroid/src/main/java/org/catrobat/catroid/stage/PenActor.java index b4f5494c19b..c6407dae1aa 100644 --- a/catroid/src/main/java/org/catrobat/catroid/stage/PenActor.java +++ b/catroid/src/main/java/org/catrobat/catroid/stage/PenActor.java @@ -108,7 +108,7 @@ private void drawLinesForSprite(Sprite sprite) { renderer.begin(ShapeRenderer.ShapeType.Filled); if (pen.penDown && (pen.previousPoint.x != sprite.look.getX() || pen.previousPoint.y != sprite.look.getY())) { - Float penSize = pen.penSize * screenRatio; + Float penSize = (float) pen.penSize * screenRatio; renderer.circle(pen.previousPoint.x, pen.previousPoint.y, penSize / 2); renderer.rectLine(pen.previousPoint.x, pen.previousPoint.y, x, y, penSize); renderer.circle(x, y, penSize / 2); diff --git a/catroid/src/main/java/org/catrobat/catroid/ui/fragment/AdvancedConfigSeekbar.java b/catroid/src/main/java/org/catrobat/catroid/ui/fragment/AdvancedConfigSeekbar.java deleted file mode 100644 index 883fb3f0748..00000000000 --- a/catroid/src/main/java/org/catrobat/catroid/ui/fragment/AdvancedConfigSeekbar.java +++ /dev/null @@ -1,216 +0,0 @@ -/* - * Catroid: An on-device visual programming system for Android devices - * Copyright (C) 2010-2018 The Catrobat Team - * () - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * An additional term exception under section 7 of the GNU Affero - * General Public License, version 3, is available at - * http://developer.catrobat.org/license_additional_term - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package org.catrobat.catroid.ui.fragment; - -import android.content.Context; -import android.view.View; -import android.widget.SeekBar; -import android.widget.TextView; - -import org.catrobat.catroid.R; -import org.catrobat.catroid.common.BrickValues; -import org.catrobat.catroid.content.bricks.Brick; -import org.catrobat.catroid.content.bricks.FormulaBrick; -import org.catrobat.catroid.formulaeditor.Formula; - -public class AdvancedConfigSeekbar { - - private final FormulaBrick formulaBrick; - - private final Brick.BrickField altitudeLimit; - private final Brick.BrickField verticalSpeedLimit; - private final Brick.BrickField rotationSpeedLimit; - private final Brick.BrickField tiltAngleLimit; - - private TextView formulaEditorEditTextAltitude; - private TextView formulaEditorEditTextVerticalSpeed; - private TextView formulaEditorEditTextRotationSpeed; - private TextView formulaEditorEditTextTiltAngle; - - private View seekbarView; - - public AdvancedConfigSeekbar(FormulaBrick formulaBrick, Brick.BrickField altitudeLimit, - Brick.BrickField verticalSpeedLimit, Brick.BrickField rotationSpeedLimit, - Brick.BrickField tiltAngleLimit) { - this.formulaBrick = formulaBrick; - this.altitudeLimit = altitudeLimit; - this.verticalSpeedLimit = verticalSpeedLimit; - this.rotationSpeedLimit = rotationSpeedLimit; - this.tiltAngleLimit = tiltAngleLimit; - } - - public View getView(Context context) { - seekbarView = View.inflate(context, R.layout.fragment_drone_config_cooser, null); - - seekbarView.setFocusableInTouchMode(true); - seekbarView.requestFocus(); - - formulaEditorEditTextAltitude = (TextView) seekbarView.findViewById(R.id.altitude_limit_value); - formulaBrick.getFormulaWithBrickField(altitudeLimit).setTextFieldId(R.id.altitude_limit_value); - formulaBrick.getFormulaWithBrickField(altitudeLimit).refreshTextField(seekbarView); - - formulaEditorEditTextRotationSpeed = (TextView) seekbarView.findViewById(R.id.vertical_speed_limit_value); - formulaBrick.getFormulaWithBrickField(verticalSpeedLimit).setTextFieldId(R.id.vertical_speed_limit_value); - formulaBrick.getFormulaWithBrickField(verticalSpeedLimit).refreshTextField(seekbarView); - - formulaEditorEditTextVerticalSpeed = (TextView) seekbarView.findViewById(R.id.rotation_speed_limit_value); - formulaBrick.getFormulaWithBrickField(rotationSpeedLimit).setTextFieldId(R.id.rotation_speed_limit_value); - formulaBrick.getFormulaWithBrickField(rotationSpeedLimit).refreshTextField(seekbarView); - - formulaEditorEditTextTiltAngle = (TextView) seekbarView.findViewById(R.id.tilt_angle_limit_value); - formulaBrick.getFormulaWithBrickField(tiltAngleLimit).setTextFieldId(R.id.tilt_angle_limit_value); - formulaBrick.getFormulaWithBrickField(tiltAngleLimit).refreshTextField(seekbarView); - - SeekBar altitudeSeekBar = (SeekBar) seekbarView.findViewById(R.id.altitude_limit_seekbar); - SeekBar verticalSpeedSeekBar = (SeekBar) seekbarView.findViewById(R.id.vertical_speed_limit_seekbar); - SeekBar rotationSpeedSeekBar = (SeekBar) seekbarView.findViewById(R.id.rotation_speed_limit_seekbar); - SeekBar tiltAngleSeekBar = (SeekBar) seekbarView.findViewById(R.id.tilt_angle_limit_seekbar); - - altitudeSeekBar.setMax(BrickValues.DRONE_ALTITUDE_MAX); - verticalSpeedSeekBar.setMax(BrickValues.DRONE_VERTICAL_MAX); - rotationSpeedSeekBar.setMax(BrickValues.DRONE_ROTATION_MAX); - tiltAngleSeekBar.setMax(BrickValues.DRONE_TILT_MAX); - - altitudeSeekBar.setProgress(getCurrentBrickFieldValue(altitudeLimit)); - verticalSpeedSeekBar.setProgress(getCurrentBrickFieldValue(verticalSpeedLimit)); - rotationSpeedSeekBar.setProgress(getCurrentBrickFieldValue(rotationSpeedLimit)); - tiltAngleSeekBar.setProgress(getCurrentBrickFieldValue(tiltAngleLimit)); - - SeekBar.OnSeekBarChangeListener seekBarChangeListener = new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int i, boolean b) { - switch (seekBar.getId()) { - case R.id.altitude_limit_seekbar: - if (seekBar.getProgress() + BrickValues.DRONE_ALTITUDE_MIN < BrickValues.DRONE_ALTITUDE_MAX) { - formulaEditorEditTextAltitude.setText(String.valueOf(seekBar.getProgress() + BrickValues.DRONE_ALTITUDE_MIN)); - } else { - formulaEditorEditTextAltitude.setText(String.valueOf(BrickValues.DRONE_ALTITUDE_MAX)); - } - break; - case R.id.vertical_speed_limit_seekbar: - if (seekBar.getProgress() + BrickValues.DRONE_VERTICAL_MIN < BrickValues.DRONE_VERTICAL_MAX) { - formulaEditorEditTextRotationSpeed.setText(String.valueOf(seekBar.getProgress() + BrickValues.DRONE_VERTICAL_MIN)); - } else { - formulaEditorEditTextRotationSpeed.setText(String.valueOf(BrickValues.DRONE_VERTICAL_MAX)); - } - break; - case R.id.rotation_speed_limit_seekbar: - if (seekBar.getProgress() + BrickValues.DRONE_ROTATION_MIN < BrickValues.DRONE_ROTATION_MAX) { - formulaEditorEditTextVerticalSpeed.setText(String.valueOf(seekBar.getProgress() + BrickValues.DRONE_ROTATION_MIN)); - } else { - formulaEditorEditTextVerticalSpeed.setText(String.valueOf(BrickValues.DRONE_ROTATION_MAX)); - } - break; - case R.id.tilt_angle_limit_seekbar: - if (seekBar.getProgress() + BrickValues.DRONE_TILT_MIN < BrickValues.DRONE_TILT_MAX) { - formulaEditorEditTextTiltAngle.setText(String.valueOf(seekBar.getProgress() + BrickValues.DRONE_TILT_MIN)); - } else { - formulaEditorEditTextTiltAngle.setText(String.valueOf(BrickValues.DRONE_TILT_MAX)); - } - break; - default: - break; - } - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - Brick.BrickField changedBrickField = null; - - switch (seekBar.getId()) { - case R.id.altitude_limit_seekbar: - FormulaEditorFragment.changeInputField(seekbarView, altitudeLimit); - changedBrickField = altitudeLimit; - if (seekBar.getProgress() < BrickValues.DRONE_ALTITUDE_MIN) { - FormulaEditorFragment.overwriteFormula(seekbarView, new Formula(BrickValues.DRONE_ALTITUDE_MIN)); - } else if (seekBar.getProgress() + BrickValues.DRONE_ALTITUDE_MIN > BrickValues.DRONE_ALTITUDE_MAX) { - FormulaEditorFragment.overwriteFormula(seekbarView, new Formula(BrickValues.DRONE_ALTITUDE_MAX)); - } else { - FormulaEditorFragment.overwriteFormula(seekbarView, new Formula(seekBar.getProgress() + BrickValues.DRONE_ALTITUDE_MIN)); - } - break; - case R.id.vertical_speed_limit_seekbar: - FormulaEditorFragment.changeInputField(seekbarView, verticalSpeedLimit); - changedBrickField = verticalSpeedLimit; - if (seekBar.getProgress() + BrickValues.DRONE_VERTICAL_MIN < BrickValues.DRONE_VERTICAL_MAX) { - FormulaEditorFragment.overwriteFormula(seekbarView, new Formula(seekBar.getProgress() + BrickValues.DRONE_VERTICAL_MIN)); - } else { - FormulaEditorFragment.overwriteFormula(seekbarView, new Formula(BrickValues.DRONE_VERTICAL_MAX)); - } - break; - case R.id.rotation_speed_limit_seekbar: - FormulaEditorFragment.changeInputField(seekbarView, rotationSpeedLimit); - changedBrickField = rotationSpeedLimit; - if (seekBar.getProgress() + BrickValues.DRONE_ROTATION_MIN < BrickValues.DRONE_ROTATION_MAX) { - FormulaEditorFragment.overwriteFormula(seekbarView, new Formula(seekBar.getProgress() + BrickValues.DRONE_ROTATION_MIN)); - } else { - FormulaEditorFragment.overwriteFormula(seekbarView, new Formula(BrickValues.DRONE_ROTATION_MAX)); - } - break; - case R.id.tilt_angle_limit_seekbar: - FormulaEditorFragment.changeInputField(seekbarView, tiltAngleLimit); - changedBrickField = tiltAngleLimit; - if (seekBar.getProgress() + BrickValues.DRONE_TILT_MIN < BrickValues.DRONE_TILT_MAX) { - FormulaEditorFragment.overwriteFormula(seekbarView, new Formula(seekBar.getProgress() + BrickValues.DRONE_TILT_MIN)); - } else { - FormulaEditorFragment.overwriteFormula(seekbarView, new Formula(BrickValues.DRONE_TILT_MAX)); - } - break; - default: - break; - } -// FormulaEditorFragment.overwriteFormula(seekbarView, new Formula(seekBar.getProgress())); - // ToDo: this is a hack for saving the value immediately - FormulaEditorFragment.changeInputField(seekbarView, getOtherField(changedBrickField)); - FormulaEditorFragment.changeInputField(seekbarView, changedBrickField); - // end of hack - } - }; - - altitudeSeekBar.setOnSeekBarChangeListener(seekBarChangeListener); - verticalSpeedSeekBar.setOnSeekBarChangeListener(seekBarChangeListener); - rotationSpeedSeekBar.setOnSeekBarChangeListener(seekBarChangeListener); - tiltAngleSeekBar.setOnSeekBarChangeListener(seekBarChangeListener); - - return seekbarView; - } - - private Brick.BrickField getOtherField(Brick.BrickField brickField) { - if (brickField == rotationSpeedLimit) { - return altitudeLimit; - } - return rotationSpeedLimit; - } - - private int getCurrentBrickFieldValue(Brick.BrickField brickField) { - String stringValue = formulaBrick.getFormulaWithBrickField(brickField) - .getDisplayString(seekbarView.getContext()); - return Double.valueOf(stringValue.replace(",", ".")).intValue(); - } -} diff --git a/catroid/src/main/java/org/catrobat/catroid/ui/fragment/CategoryBricksFactory.java b/catroid/src/main/java/org/catrobat/catroid/ui/fragment/CategoryBricksFactory.java index 2e6bf27eec5..d9ca3ab299d 100644 --- a/catroid/src/main/java/org/catrobat/catroid/ui/fragment/CategoryBricksFactory.java +++ b/catroid/src/main/java/org/catrobat/catroid/ui/fragment/CategoryBricksFactory.java @@ -121,7 +121,6 @@ import org.catrobat.catroid.content.bricks.PlaySoundAndWaitBrick; import org.catrobat.catroid.content.bricks.PlaySoundBrick; import org.catrobat.catroid.content.bricks.PointInDirectionBrick; -import org.catrobat.catroid.content.bricks.PointInDirectionBrick.Direction; import org.catrobat.catroid.content.bricks.PointToBrick; import org.catrobat.catroid.content.bricks.PreviousLookBrick; import org.catrobat.catroid.content.bricks.RaspiIfLogicBeginBrick; @@ -337,7 +336,7 @@ private List setupChromecastCategoryList(Context context) { protected List setupMotionCategoryList(Sprite sprite, Context context) { List motionBrickList = new ArrayList<>(); motionBrickList.add(new PlaceAtBrick(BrickValues.X_POSITION, BrickValues.Y_POSITION)); - motionBrickList.add(new SetXBrick(BrickValues.X_POSITION)); + motionBrickList.add(new SetXBrick(new Formula(BrickValues.X_POSITION))); motionBrickList.add(new SetYBrick(BrickValues.Y_POSITION)); motionBrickList.add(new ChangeXByNBrick(BrickValues.CHANGE_X_BY)); motionBrickList.add(new ChangeYByNBrick(BrickValues.CHANGE_Y_BY)); @@ -350,7 +349,7 @@ protected List setupMotionCategoryList(Sprite sprite, Context context) { motionBrickList.add(new MoveNStepsBrick(BrickValues.MOVE_STEPS)); motionBrickList.add(new TurnLeftBrick(BrickValues.TURN_DEGREES)); motionBrickList.add(new TurnRightBrick(BrickValues.TURN_DEGREES)); - motionBrickList.add(new PointInDirectionBrick(Direction.RIGHT)); + motionBrickList.add(new PointInDirectionBrick(90)); motionBrickList.add(new PointToBrick(null)); motionBrickList.add(new SetRotationStyleBrick()); motionBrickList.add(new GlideToBrick(BrickValues.X_POSITION, BrickValues.Y_POSITION, @@ -391,7 +390,7 @@ protected List setupSoundCategoryList(Context context) { soundBrickList.add(new SetVolumeToBrick(BrickValues.SET_VOLUME_TO)); // workaround to set a negative default value for a Brick - float positiveDefaultValueChangeVolumeBy = Math.abs(BrickValues.CHANGE_VOLUME_BY); + double positiveDefaultValueChangeVolumeBy = Math.abs(BrickValues.CHANGE_VOLUME_BY); FormulaElement defaultValueChangeVolumeBy = new FormulaElement(ElementType.OPERATOR, Operators.MINUS.name(), null, null, new FormulaElement(ElementType.NUMBER, String.valueOf(positiveDefaultValueChangeVolumeBy), null) @@ -442,7 +441,7 @@ protected List setupLooksCategoryList(Context context, boolean isBackgrou looksBrickList.add(new SetBackgroundByIndexBrick(BrickValues.SET_LOOK_BY_INDEX)); looksBrickList.add(new SetBackgroundAndWaitBrick()); looksBrickList.add(new SetBackgroundByIndexAndWaitBrick(BrickValues.SET_LOOK_BY_INDEX)); - //only add these bricks to the list if the current program is NOT a cast program + if (!ProjectManager.getInstance().getCurrentProject().isCastProject()) { looksBrickList.add(new CameraBrick()); looksBrickList.add(new ChooseCameraBrick()); @@ -450,7 +449,8 @@ protected List setupLooksCategoryList(Context context, boolean isBackgrou } if (SettingsFragment.isPhiroSharedPreferenceEnabled(context)) { - looksBrickList.add(new PhiroRGBLightBrick(PhiroRGBLightBrick.Eye.BOTH, BrickValues.PHIRO_VALUE_RED, BrickValues.PHIRO_VALUE_GREEN, BrickValues.PHIRO_VALUE_BLUE)); + looksBrickList.add(new PhiroRGBLightBrick(PhiroRGBLightBrick.Eye.BOTH, + BrickValues.PHIRO_VALUE_RED, BrickValues.PHIRO_VALUE_GREEN, BrickValues.PHIRO_VALUE_BLUE)); } return looksBrickList; @@ -462,7 +462,7 @@ private List setupPenCategoryList(Sprite sprite) { if (!isBackground(sprite)) { penBrickList.add(new PenDownBrick()); penBrickList.add(new PenUpBrick()); - penBrickList.add(new SetPenSizeBrick(4)); + penBrickList.add(new SetPenSizeBrick(BrickValues.PEN_SIZE)); penBrickList.add(new SetPenColorBrick(0, 0, 255)); penBrickList.add(new StampBrick()); } @@ -479,8 +479,10 @@ protected List setupDataCategoryList(Context context) { dataBrickList.add(new HideTextBrick()); dataBrickList.add(new AddItemToUserListBrick(BrickValues.ADD_ITEM_TO_USERLIST)); dataBrickList.add(new DeleteItemOfUserListBrick(BrickValues.DELETE_ITEM_OF_USERLIST)); - dataBrickList.add(new InsertItemIntoUserListBrick(BrickValues.INSERT_ITEM_INTO_USERLIST_VALUE, BrickValues.INSERT_ITEM_INTO_USERLIST_INDEX)); - dataBrickList.add(new ReplaceItemInUserListBrick(BrickValues.REPLACE_ITEM_IN_USERLIST_VALUE, BrickValues.REPLACE_ITEM_IN_USERLIST_INDEX)); + dataBrickList.add(new InsertItemIntoUserListBrick(BrickValues.INSERT_ITEM_INTO_USERLIST_VALUE, + BrickValues.INSERT_ITEM_INTO_USERLIST_INDEX)); + dataBrickList.add(new ReplaceItemInUserListBrick(BrickValues.REPLACE_ITEM_IN_USERLIST_VALUE, + BrickValues.REPLACE_ITEM_IN_USERLIST_INDEX)); dataBrickList.add(new AskBrick(context.getString(R.string.brick_ask_default_question))); dataBrickList.add(new AskSpeechBrick(context.getString(R.string.brick_ask_speech_default_question))); return dataBrickList; @@ -505,7 +507,8 @@ private List setupLegoEv3CategoryList() { legoEV3BrickList.add(new LegoEv3MotorMoveBrick(LegoEv3MotorMoveBrick.Motor.MOTOR_A, BrickValues.LEGO_SPEED)); legoEV3BrickList.add(new LegoEv3MotorStopBrick(LegoEv3MotorStopBrick.Motor.MOTOR_A)); - legoEV3BrickList.add(new LegoEv3PlayToneBrick(BrickValues.LEGO_FREQUENCY, BrickValues.LEGO_DURATION, BrickValues.LEGO_VOLUME)); + legoEV3BrickList.add(new LegoEv3PlayToneBrick(BrickValues.LEGO_FREQUENCY, + BrickValues.LEGO_DURATION, BrickValues.LEGO_VOLUME)); legoEV3BrickList.add(new LegoEv3SetLedBrick(LegoEv3SetLedBrick.LedStatus.LED_GREEN)); return legoEV3BrickList; @@ -515,14 +518,22 @@ private List setupDroneCategoryList() { List droneBrickList = new ArrayList<>(); droneBrickList.add(new DroneTakeOffLandBrick()); droneBrickList.add(new DroneEmergencyBrick()); - droneBrickList.add(new DroneMoveUpBrick(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS, BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); - droneBrickList.add(new DroneMoveDownBrick(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS, BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); - droneBrickList.add(new DroneMoveLeftBrick(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS, BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); - droneBrickList.add(new DroneMoveRightBrick(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS, BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); - droneBrickList.add(new DroneMoveForwardBrick(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS, BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); - droneBrickList.add(new DroneMoveBackwardBrick(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS, BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); - droneBrickList.add(new DroneTurnLeftBrick(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS, BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); - droneBrickList.add(new DroneTurnRightBrick(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS, BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); + droneBrickList.add(new DroneMoveUpBrick(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS, + BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); + droneBrickList.add(new DroneMoveDownBrick(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS, + BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); + droneBrickList.add(new DroneMoveLeftBrick(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS, + BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); + droneBrickList.add(new DroneMoveRightBrick(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS, + BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); + droneBrickList.add(new DroneMoveForwardBrick(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS, + BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); + droneBrickList.add(new DroneMoveBackwardBrick(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS, + BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); + droneBrickList.add(new DroneTurnLeftBrick(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS, + BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); + droneBrickList.add(new DroneTurnRightBrick(BrickValues.DRONE_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS, + BrickValues.DRONE_MOVE_BRICK_DEFAULT_POWER_PERCENT)); droneBrickList.add(new DroneFlipBrick()); droneBrickList.add(new DronePlayLedAnimationBrick(ARDRONE_LED_ANIMATION.ARDRONE_LED_ANIMATION_BLINK_GREEN_RED)); droneBrickList.add(new DroneSwitchCameraBrick()); @@ -532,13 +543,16 @@ private List setupDroneCategoryList() { private List setupJumpingSumoCategoryList() { List jumpingSumoBrickList = new ArrayList<>(); - jumpingSumoBrickList.add(new JumpingSumoMoveForwardBrick(BrickValues.JUMPING_SUMO_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS, BrickValues - .JUMPING_SUMO_MOVE_BRICK_DEFAULT_MOVE_POWER_PERCENT)); - jumpingSumoBrickList.add(new JumpingSumoMoveBackwardBrick(BrickValues.JUMPING_SUMO_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS, BrickValues - .JUMPING_SUMO_MOVE_BRICK_DEFAULT_MOVE_POWER_PERCENT)); + jumpingSumoBrickList.add(new JumpingSumoMoveForwardBrick( + BrickValues.JUMPING_SUMO_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS, + BrickValues.JUMPING_SUMO_MOVE_BRICK_DEFAULT_MOVE_POWER_PERCENT)); + jumpingSumoBrickList.add(new JumpingSumoMoveBackwardBrick( + BrickValues.JUMPING_SUMO_MOVE_BRICK_DEFAULT_TIME_MILLISECONDS, + BrickValues + .JUMPING_SUMO_MOVE_BRICK_DEFAULT_MOVE_POWER_PERCENT)); jumpingSumoBrickList.add(new JumpingSumoAnimationsBrick(JumpingSumoAnimationsBrick.Animation.SPIN)); - jumpingSumoBrickList.add(new JumpingSumoSoundBrick(JumpingSumoSoundBrick.Sounds.DEFAULT, BrickValues - .JUMPING_SUMO_SOUND_BRICK_DEFAULT_VOLUME_PERCENT)); + jumpingSumoBrickList.add(new JumpingSumoSoundBrick(JumpingSumoSoundBrick.Sounds.DEFAULT, + BrickValues.JUMPING_SUMO_SOUND_BRICK_DEFAULT_VOLUME_PERCENT)); jumpingSumoBrickList.add(new JumpingSumoNoSoundBrick()); jumpingSumoBrickList.add(new JumpingSumoJumpLongBrick()); jumpingSumoBrickList.add(new JumpingSumoJumpHighBrick()); @@ -559,7 +573,8 @@ private List setupPhiroProCategoryList() { phiroProBrickList.add(new PhiroMotorStopBrick(PhiroMotorStopBrick.Motor.MOTOR_BOTH)); phiroProBrickList.add(new PhiroPlayToneBrick(PhiroPlayToneBrick.Tone.DO, BrickValues.PHIRO_DURATION)); - phiroProBrickList.add(new PhiroRGBLightBrick(PhiroRGBLightBrick.Eye.BOTH, BrickValues.PHIRO_VALUE_RED, BrickValues.PHIRO_VALUE_GREEN, BrickValues.PHIRO_VALUE_BLUE)); + phiroProBrickList.add(new PhiroRGBLightBrick(PhiroRGBLightBrick.Eye.BOTH, BrickValues.PHIRO_VALUE_RED, + BrickValues.PHIRO_VALUE_GREEN, BrickValues.PHIRO_VALUE_BLUE)); phiroProBrickList.add(new PhiroIfLogicBeginBrick()); phiroProBrickList.add(new SetVariableBrick(Sensors.PHIRO_FRONT_LEFT)); phiroProBrickList.add(new SetVariableBrick(Sensors.PHIRO_FRONT_RIGHT)); @@ -573,39 +588,39 @@ private List setupPhiroProCategoryList() { private List setupArduinoCategoryList() { List arduinoBrickList = new ArrayList<>(); - arduinoBrickList.add(new ArduinoSendDigitalValueBrick(BrickValues.ARDUINO_DIGITAL_INITIAL_PIN_NUMBER, BrickValues.ARDUINO_DIGITAL_INITIAL_PIN_VALUE)); - arduinoBrickList.add(new ArduinoSendPWMValueBrick(BrickValues.ARDUINO_PWM_INITIAL_PIN_NUMBER, BrickValues.ARDUINO_PWM_INITIAL_PIN_VALUE)); + arduinoBrickList.add(new ArduinoSendDigitalValueBrick(BrickValues.ARDUINO_DIGITAL_INITIAL_PIN_NUMBER, + BrickValues.ARDUINO_DIGITAL_INITIAL_PIN_VALUE)); + arduinoBrickList.add(new ArduinoSendPWMValueBrick(BrickValues.ARDUINO_PWM_INITIAL_PIN_NUMBER, + BrickValues.ARDUINO_PWM_INITIAL_PIN_VALUE)); return arduinoBrickList; } private List setupRaspiCategoryList() { - RaspiInterruptScript defaultScript = new RaspiInterruptScript(Integer.toString(BrickValues.RASPI_DIGITAL_INITIAL_PIN_NUMBER), BrickValues.RASPI_EVENTS[0]); + RaspiInterruptScript defaultScript = new RaspiInterruptScript( + Integer.toString(BrickValues.RASPI_DIGITAL_INITIAL_PIN_NUMBER), BrickValues.RASPI_EVENTS[0]); + List raspiBrickList = new ArrayList<>(); raspiBrickList.add(new WhenRaspiPinChangedBrick(defaultScript)); raspiBrickList.add(new RaspiIfLogicBeginBrick(BrickValues.RASPI_DIGITAL_INITIAL_PIN_NUMBER)); - raspiBrickList.add(new RaspiSendDigitalValueBrick(BrickValues.RASPI_DIGITAL_INITIAL_PIN_NUMBER, BrickValues.RASPI_DIGITAL_INITIAL_PIN_VALUE)); - raspiBrickList.add(new RaspiPwmBrick(BrickValues.RASPI_DIGITAL_INITIAL_PIN_NUMBER, BrickValues - .RASPI_PWM_INITIAL_FREQUENCY, BrickValues.RASPI_PWM_INITIAL_PERCENTAGE)); + raspiBrickList.add(new RaspiSendDigitalValueBrick(BrickValues.RASPI_DIGITAL_INITIAL_PIN_NUMBER, + BrickValues.RASPI_DIGITAL_INITIAL_PIN_VALUE)); + raspiBrickList.add(new RaspiPwmBrick(BrickValues.RASPI_DIGITAL_INITIAL_PIN_NUMBER, + BrickValues.RASPI_PWM_INITIAL_FREQUENCY, BrickValues.RASPI_PWM_INITIAL_PERCENTAGE)); return raspiBrickList; } private List setupEmbroideryCategoryList() { - List embroideryBrickList = new ArrayList<>(); - - return embroideryBrickList; + return new ArrayList<>(); } protected boolean isBackground(Sprite sprite) { - if (ProjectManager.getInstance().getCurrentlyEditedScene().getSpriteList().indexOf(sprite) == 0) { - return true; - } - return false; + return ProjectManager.getInstance().getCurrentlyEditedScene().getSpriteList().indexOf(sprite) == 0; } public String getBrickCategory(Brick brick, Sprite sprite, Context context) { - List categoryBricks = new LinkedList<>(); + List categoryBricks; categoryBricks = setupControlCategoryList(context); Resources res = context.getResources(); diff --git a/catroid/src/main/java/org/catrobat/catroid/ui/fragment/ColorSeekbar.java b/catroid/src/main/java/org/catrobat/catroid/ui/fragment/ColorSeekbar.java index af1ca04f7a2..0a09f97de3f 100644 --- a/catroid/src/main/java/org/catrobat/catroid/ui/fragment/ColorSeekbar.java +++ b/catroid/src/main/java/org/catrobat/catroid/ui/fragment/ColorSeekbar.java @@ -26,7 +26,6 @@ import android.content.Context; import android.graphics.Color; import android.view.View; -import android.view.View.OnClickListener; import android.widget.SeekBar; import android.widget.TextView; @@ -45,9 +44,9 @@ public class ColorSeekbar { private View colorPreviewView; - private TextView formulaEditorEditTextRed; - private TextView formulaEditorEditTextBlue; - private TextView formulaEditorEditTextGreen; + private TextView redValueTextView; + private TextView blueValueTextView; + private TextView greenValueTextView; private SeekBar redSeekBar; private SeekBar greenSeekBar; @@ -62,74 +61,70 @@ public ColorSeekbar(FormulaBrick formulaBrick, Brick.BrickField redField, this.blueField = blueField; } - public View getView(Context context) { + public View getView(final Context context) { seekbarView = View.inflate(context, R.layout.fragment_rgb_color_chooser, null); seekbarView.setFocusableInTouchMode(true); seekbarView.requestFocus(); - OnClickListener onClickListener = new OnClickListener() { + View.OnClickListener onClickListener = new View.OnClickListener() { @Override public void onClick(View view) { switch (view.getId()) { case R.id.rgb_red_value: - FormulaEditorFragment.showFragment(view, formulaBrick, redField); + FormulaEditorFragment.showFragment(context, formulaBrick, redField); break; case R.id.rgb_green_value: - FormulaEditorFragment.showFragment(view, formulaBrick, greenField); + FormulaEditorFragment.showFragment(context, formulaBrick, greenField); break; case R.id.rgb_blue_value: - FormulaEditorFragment.showFragment(view, formulaBrick, blueField); + FormulaEditorFragment.showFragment(context, formulaBrick, blueField); break; } } }; - formulaEditorEditTextRed = (TextView) seekbarView.findViewById(R.id.rgb_red_value); - formulaEditorEditTextRed.setOnClickListener(onClickListener); - formulaBrick.getFormulaWithBrickField(redField).setTextFieldId(R.id.rgb_red_value); - formulaBrick.getFormulaWithBrickField(redField).refreshTextField(seekbarView); + redValueTextView = seekbarView.findViewById(R.id.rgb_red_value); + redValueTextView.setOnClickListener(onClickListener); - formulaEditorEditTextGreen = (TextView) seekbarView.findViewById(R.id.rgb_green_value); - formulaEditorEditTextGreen.setOnClickListener(onClickListener); - formulaBrick.getFormulaWithBrickField(greenField).setTextFieldId(R.id.rgb_green_value); - formulaBrick.getFormulaWithBrickField(greenField).refreshTextField(seekbarView); + greenValueTextView = seekbarView.findViewById(R.id.rgb_green_value); + greenValueTextView.setOnClickListener(onClickListener); - formulaEditorEditTextBlue = (TextView) seekbarView.findViewById(R.id.rgb_blue_value); - formulaEditorEditTextBlue.setOnClickListener(onClickListener); - formulaBrick.getFormulaWithBrickField(blueField).setTextFieldId(R.id.rgb_blue_value); - formulaBrick.getFormulaWithBrickField(blueField).refreshTextField(seekbarView); + blueValueTextView = seekbarView.findViewById(R.id.rgb_blue_value); + blueValueTextView.setOnClickListener(onClickListener); - redSeekBar = (SeekBar) seekbarView.findViewById(R.id.color_rgb_seekbar_red); - greenSeekBar = (SeekBar) seekbarView.findViewById(R.id.color_rgb_seekbar_green); - blueSeekBar = (SeekBar) seekbarView.findViewById(R.id.color_rgb_seekbar_blue); + redSeekBar = seekbarView.findViewById(R.id.color_rgb_seekbar_red); + greenSeekBar = seekbarView.findViewById(R.id.color_rgb_seekbar_green); + blueSeekBar = seekbarView.findViewById(R.id.color_rgb_seekbar_blue); - colorPreviewView = seekbarView.findViewById(R.id.color_rgb_preview); + int color = Color.rgb(getCurrentBrickFieldValue(context, redField), + getCurrentBrickFieldValue(context, greenField), + getCurrentBrickFieldValue(context, blueField)); - int color = Color.rgb(getCurrentBrickFieldValue(redField), getCurrentBrickFieldValue(greenField), getCurrentBrickFieldValue(blueField)); redSeekBar.setProgress(Color.red(color)); greenSeekBar.setProgress(Color.green(color)); blueSeekBar.setProgress(Color.blue(color)); + redValueTextView.setText(String.valueOf(redSeekBar.getProgress())); + greenValueTextView.setText(String.valueOf(greenSeekBar.getProgress())); + blueValueTextView.setText(String.valueOf(blueSeekBar.getProgress())); + + colorPreviewView = seekbarView.findViewById(R.id.color_rgb_preview); colorPreviewView.setBackgroundColor(color); colorPreviewView.invalidate(); -// redSeekBar.setProgress(getCurrentBrickFieldValue(redField)); -// greenSeekBar.setProgress(getCurrentBrickFieldValue(greenField)); -// blueSeekBar.setProgress(getCurrentBrickFieldValue(blueField)); - SeekBar.OnSeekBarChangeListener seekBarChangeListener = new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { switch (seekBar.getId()) { case R.id.color_rgb_seekbar_red: - formulaEditorEditTextRed.setText(String.valueOf(seekBar.getProgress())); + redValueTextView.setText(String.valueOf(seekBar.getProgress())); break; case R.id.color_rgb_seekbar_green: - formulaEditorEditTextGreen.setText(String.valueOf(seekBar.getProgress())); + greenValueTextView.setText(String.valueOf(seekBar.getProgress())); break; case R.id.color_rgb_seekbar_blue: - formulaEditorEditTextBlue.setText(String.valueOf(seekBar.getProgress())); + blueValueTextView.setText(String.valueOf(seekBar.getProgress())); break; default: break; @@ -150,25 +145,18 @@ public void onStopTrackingTouch(SeekBar seekBar) { switch (seekBar.getId()) { case R.id.color_rgb_seekbar_red: - FormulaEditorFragment.changeInputField(seekbarView, redField); changedBrickField = redField; break; case R.id.color_rgb_seekbar_green: - FormulaEditorFragment.changeInputField(seekbarView, greenField); changedBrickField = greenField; break; case R.id.color_rgb_seekbar_blue: - FormulaEditorFragment.changeInputField(seekbarView, blueField); changedBrickField = blueField; break; default: break; } - FormulaEditorFragment.overwriteFormula(seekbarView, new Formula(seekBar.getProgress())); - // ToDo: this is a hack for saving the value immediately - FormulaEditorFragment.changeInputField(seekbarView, getOtherField(changedBrickField)); - FormulaEditorFragment.changeInputField(seekbarView, changedBrickField); - // end of hack + formulaBrick.setFormulaWithBrickField(changedBrickField, new Formula(seekBar.getProgress())); } }; @@ -179,17 +167,8 @@ public void onStopTrackingTouch(SeekBar seekBar) { return seekbarView; } - private Brick.BrickField getOtherField(Brick.BrickField brickField) { - if (brickField == blueField) { - return redField; - } - return blueField; - } - - private int getCurrentBrickFieldValue(Brick.BrickField brickField) { - String stringValue = formulaBrick.getFormulaWithBrickField(brickField) - .getDisplayString(seekbarView.getContext()); - int value = Double.valueOf(stringValue.replace(",", ".")).intValue(); - return value; + private int getCurrentBrickFieldValue(Context context, Brick.BrickField brickField) { + String currentStringValue = formulaBrick.getFormulaWithBrickField(brickField).getTrimmedFormulaString(context); + return Double.valueOf(currentStringValue.replace(",", ".")).intValue(); } } diff --git a/catroid/src/main/java/org/catrobat/catroid/ui/fragment/FormulaEditorFragment.java b/catroid/src/main/java/org/catrobat/catroid/ui/fragment/FormulaEditorFragment.java index 7299160075c..5446cc1c1c3 100644 --- a/catroid/src/main/java/org/catrobat/catroid/ui/fragment/FormulaEditorFragment.java +++ b/catroid/src/main/java/org/catrobat/catroid/ui/fragment/FormulaEditorFragment.java @@ -35,14 +35,12 @@ import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; -import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; -import android.view.ViewConfiguration; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.widget.ImageButton; @@ -54,8 +52,6 @@ import org.catrobat.catroid.R; import org.catrobat.catroid.content.bricks.Brick; import org.catrobat.catroid.content.bricks.FormulaBrick; -import org.catrobat.catroid.content.bricks.UserBrick; -import org.catrobat.catroid.content.bricks.UserBrickParameter; import org.catrobat.catroid.content.commands.OnFormulaChangedListener; import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.formulaeditor.FormulaEditorEditText; @@ -79,10 +75,7 @@ import static org.catrobat.catroid.utils.SnackbarUtil.wasHintAlreadyShown; public class FormulaEditorFragment extends Fragment implements ViewTreeObserver.OnGlobalLayoutListener, - DataListFragment.FormulaEditorDataInterface, - NewItemInterface { - - private static final String TAG = FormulaEditorFragment.class.getSimpleName(); + DataListFragment.FormulaEditorDataInterface, NewItemInterface { private static final int SET_FORMULA_ON_CREATE_VIEW = 0; private static final int SET_FORMULA_ON_SWITCH_EDIT_TEXT = 1; @@ -91,17 +84,13 @@ public class FormulaEditorFragment extends Fragment implements ViewTreeObserver. public static final String FORMULA_EDITOR_FRAGMENT_TAG = FormulaEditorFragment.class.getSimpleName(); public static final String FORMULA_BRICK_BUNDLE_ARGUMENT = "formula_brick"; - public static final String BRICKFIELD_BUNDLE_ARGUMENT = "brick_field"; + public static final String BRICK_FIELD_BUNDLE_ARGUMENT = "brick_field"; - private Context context; private static FormulaEditorEditText formulaEditorEditText; private TableLayout formulaEditorKeyboard; private static LinearLayout formulaEditorBrick; - private static View brickView; - private View fragmentView; private static FormulaBrick formulaBrick; - private FormulaBrick clonedFormulaBrick; private static Brick.BrickField currentBrickField; private static Formula currentFormula; private Menu currentMenu; @@ -112,44 +101,28 @@ public class FormulaEditorFragment extends Fragment implements ViewTreeObserver. private static OnFormulaChangedListener onFormulaChangedListener; private boolean hasFormulaBeenChanged = false; - private String previousActionBarTitle = ""; + private String actionBarTitleBuffer = ""; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setHasOptionsMenu(!ViewConfiguration.get(getActivity()).hasPermanentMenuKey()); ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar(); - previousActionBarTitle = actionBar.getTitle().toString(); + actionBarTitleBuffer = actionBar.getTitle().toString(); actionBar.setTitle(R.string.formula_editor_title); onFormulaChangedListener = (OnFormulaChangedListener) getFragmentManager() .findFragmentByTag(ScriptFragment.TAG); formulaBrick = (FormulaBrick) getArguments().getSerializable(FORMULA_BRICK_BUNDLE_ARGUMENT); - currentBrickField = Brick.BrickField.valueOf(getArguments().getString(BRICKFIELD_BUNDLE_ARGUMENT)); - cloneFormulaBrick(formulaBrick); - currentFormula = clonedFormulaBrick.getFormulaWithBrickField(currentBrickField); + currentBrickField = Brick.BrickField.valueOf(getArguments().getString(BRICK_FIELD_BUNDLE_ARGUMENT)); + currentFormula = formulaBrick.getFormulaWithBrickField(currentBrickField); } - @Override - public void onActivityCreated(Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - setHasOptionsMenu(true); - } + private static void showFragment(Context context, FormulaBrick formulaBrick, Brick.BrickField brickField, + boolean showCustomView) { - private void cloneFormulaBrick(FormulaBrick formulaBrick) { - try { - clonedFormulaBrick = (FormulaBrick) formulaBrick.clone(); - clonedFormulaBrick.setCommentedOut(formulaBrick.isCommentedOut()); - } catch (CloneNotSupportedException exception) { - Log.e(TAG, "Clone not supported", exception); - onUserDismiss(); - } - } - - private static void showFragment(View view, FormulaBrick formulaBrick, Brick.BrickField brickField, boolean showCustomView) { - Activity activity = (Activity) view.getContext(); + Activity activity = (Activity) context; FormulaEditorFragment formulaEditorFragment = (FormulaEditorFragment) activity.getFragmentManager() .findFragmentByTag(FORMULA_EDITOR_FRAGMENT_TAG); @@ -159,7 +132,7 @@ private static void showFragment(View view, FormulaBrick formulaBrick, Brick.Bri formulaEditorFragment.showCustomView = showCustomView; Bundle bundle = new Bundle(); bundle.putSerializable(FORMULA_BRICK_BUNDLE_ARGUMENT, formulaBrick); - bundle.putString(BRICKFIELD_BUNDLE_ARGUMENT, brickField.name()); + bundle.putString(BRICK_FIELD_BUNDLE_ARGUMENT, brickField.name()); formulaEditorFragment.setArguments(bundle); activity.getFragmentManager().beginTransaction() @@ -169,7 +142,6 @@ private static void showFragment(View view, FormulaBrick formulaBrick, Brick.Bri BottomBar.hideBottomBar(activity); } else { - refreshUserBrickParameterValuesIfNecessary(formulaBrick, brickField, formulaEditorFragment); formulaEditorFragment.showCustomView = false; formulaEditorFragment.updateBrickView(); formulaEditorFragment.setInputFormula(brickField, SET_FORMULA_ON_SWITCH_EDIT_TEXT); @@ -186,165 +158,61 @@ public void onResume() { } } - public static boolean saveFormulaForUserBrickParameterChange() { - InternFormulaParser formulaToParse = formulaEditorEditText.getFormulaParser(); - FormulaElement formulaParseTree = formulaToParse.parseFormula(); - - switch (formulaToParse.getErrorTokenIndex()) { - case InternFormulaParser.PARSER_OK: - currentFormula.setRoot(formulaParseTree); - if (onFormulaChangedListener != null) { - onFormulaChangedListener.onFormulaChanged(formulaBrick, currentBrickField, currentFormula); - } - if (formulaEditorBrick != null) { - currentFormula.refreshTextField(brickView); - } - formulaEditorEditText.formulaSaved(); - return true; - } - return false; - } - - private static void refreshUserBrickParameterValuesIfNecessary(FormulaBrick formulaBrick, Brick.BrickField - brickField, FormulaEditorFragment formulaEditorFragment) { - if (formulaBrick instanceof UserBrickParameter) { - saveFormulaForUserBrickParameterChange(); - updateUserBricksIfNecessary(); - formulaEditorFragment.updateBrickViewAndFormula(formulaBrick, brickField); - updateUserBricksIfNecessary(); - } - } - private boolean showCustomView = false; - public static void showFragment(View view, FormulaBrick formulaBrick, Brick.BrickField brickField) { - showFragment(view, formulaBrick, brickField, false); + public static void showFragment(Context context, FormulaBrick formulaBrick, Brick.BrickField brickField) { + showFragment(context, formulaBrick, brickField, false); } - public static void showCustomFragment(View view, FormulaBrick formulaBrick, Brick.BrickField brickField) { - showFragment(view, formulaBrick, brickField, true); - } - - public static void overwriteFormula(View view, Formula newFormula) { - - Activity activity = (Activity) view.getContext(); - - FormulaEditorFragment formulaEditorFragment = (FormulaEditorFragment) activity.getFragmentManager() - .findFragmentByTag(FORMULA_EDITOR_FRAGMENT_TAG); - - if (formulaEditorFragment == null) { - return; - } - - formulaEditorEditText.overwriteCurrentFormula(newFormula.getInternFormulaState()); - } - - public static void changeInputField(View view, Brick.BrickField brickField) { - - Activity activity = (Activity) view.getContext(); - - FormulaEditorFragment formulaEditorFragment = (FormulaEditorFragment) activity.getFragmentManager() - .findFragmentByTag(FORMULA_EDITOR_FRAGMENT_TAG); - - if (formulaEditorFragment == null) { - return; - } - formulaEditorFragment.setInputFormula(brickField, SET_FORMULA_ON_SWITCH_EDIT_TEXT); + public static void showCustomFragment(Context context, FormulaBrick formulaBrick, Brick.BrickField brickField) { + showFragment(context, formulaBrick, brickField, true); } public void updateBrickView() { - View newBrickView = getBrickOrCustomView(); - setBrickViewSafe(newBrickView, true); - fragmentView.getViewTreeObserver().addOnGlobalLayoutListener(this); - handleCustomView(); - } + formulaEditorBrick.removeAllViews(); - private void setBrickViewSafe(View newBrickView, boolean removeAllViews) { - if (newBrickView != null) { - if (newBrickView.getParent() != null) { - ((LinearLayout) newBrickView.getParent()).removeView(newBrickView); - } - - if (removeAllViews && formulaEditorBrick.getChildCount() > 0) { - formulaEditorBrick.removeAllViews(); - } - - formulaEditorBrick.addView(newBrickView, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, - LinearLayout.LayoutParams.MATCH_PARENT)); - brickView = newBrickView; + if (showCustomView) { + formulaEditorEditText.setVisibility(View.GONE); + formulaEditorKeyboard.setVisibility(View.GONE); + formulaEditorBrick.addView(formulaBrick.getCustomView(getActivity())); + } else { + formulaEditorEditText.setVisibility(View.VISIBLE); + formulaEditorKeyboard.setVisibility(View.VISIBLE); + formulaEditorBrick.addView(formulaBrick.getView(getActivity())); + formulaBrick.highlightTextView(currentBrickField); } } - private void updateBrickViewAndFormula(FormulaBrick newBrick, Brick.BrickField brickField) { - formulaBrick = newBrick; - cloneFormulaBrick(newBrick); - updateBrickView(); - currentBrickField = brickField; - currentFormula = clonedFormulaBrick.getFormulaWithBrickField(brickField); - setInputFormula(currentBrickField, SET_FORMULA_ON_CREATE_VIEW); - fragmentView.getViewTreeObserver().addOnGlobalLayoutListener(this); - updateButtonsOnKeyboardAndInvalidateOptionsMenu(); - } - private void onUserDismiss() { refreshFormulaPreviewString(currentFormula.getTrimmedFormulaString(getActivity())); formulaEditorEditText.endEdit(); - currentFormula.prepareToRemove(); - getFragmentManager().popBackStack(); - BottomBar.showBottomBar(getActivity()); BottomBar.showPlayButton(getActivity()); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - - fragmentView = inflater.inflate(R.layout.fragment_formula_editor, container, false); + setHasOptionsMenu(true); + View fragmentView = inflater.inflate(R.layout.fragment_formula_editor, container, false); fragmentView.setFocusableInTouchMode(true); fragmentView.requestFocus(); - context = getActivity(); - - brickView = getBrickOrCustomView(); - formulaEditorBrick = (LinearLayout) fragmentView.findViewById(R.id.formula_editor_brick_space); - setBrickViewSafe(brickView, false); + formulaEditorBrick = fragmentView.findViewById(R.id.formula_editor_brick_space); + formulaEditorEditText = fragmentView.findViewById(R.id.formula_editor_edit_field); + formulaEditorKeyboard = fragmentView.findViewById(R.id.formula_editor_keyboardview); - formulaEditorEditText = (FormulaEditorEditText) fragmentView.findViewById(R.id.formula_editor_edit_field); - - formulaEditorKeyboard = (TableLayout) fragmentView.findViewById(R.id.formula_editor_keyboardview); - formulaEditorEditText.init(this); + updateBrickView(); fragmentView.getViewTreeObserver().addOnGlobalLayoutListener(this); - setInputFormula(currentBrickField, SET_FORMULA_ON_CREATE_VIEW); - setHasOptionsMenu(true); - ((AppCompatActivity) getActivity()).getSupportActionBar().setTitle(R.string.formula_editor_title); - - handleCustomView(); + formulaEditorEditText.init(this); + ((AppCompatActivity) getActivity()).getSupportActionBar().setTitle(R.string.formula_editor_title); return fragmentView; } - private void handleCustomView() { - if (showCustomView) { - formulaEditorEditText.setVisibility(View.GONE); - formulaEditorKeyboard.setVisibility(View.GONE); - } else { - formulaEditorEditText.setVisibility(View.VISIBLE); - formulaEditorKeyboard.setVisibility(View.VISIBLE); - } - } - - private View getBrickOrCustomView() { - if (showCustomView) { - return clonedFormulaBrick.getCustomView(context, 0, null); - } else { - return clonedFormulaBrick.getView(context); - } - } - @Override public void onStart() { formulaEditorKeyboard.setClickable(true); @@ -464,14 +332,13 @@ public boolean onTouch(View view, MotionEvent event) { } updateButtonsOnKeyboardAndInvalidateOptionsMenu(); - super.onStart(); } @Override public void onStop() { super.onStop(); - ((AppCompatActivity) getActivity()).getSupportActionBar().setTitle(previousActionBarTitle); + ((AppCompatActivity) getActivity()).getSupportActionBar().setTitle(actionBarTitleBuffer); } private void showNewStringDialog() { @@ -495,7 +362,7 @@ private void showComputeDialog(FormulaElement formulaElement) { return; } Formula formulaToCompute = new Formula(formulaElement); - FormulaEditorComputeDialog computeDialog = new FormulaEditorComputeDialog(context); + FormulaEditorComputeDialog computeDialog = new FormulaEditorComputeDialog(getActivity()); computeDialog.setFormula(formulaToCompute); computeDialog.show(); } @@ -505,7 +372,7 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_GPS && resultCode == Activity.RESULT_CANCELED && SensorHandler.gpsAvailable()) { showComputeDialog(formulaElementForComputeDialog); } else { - showToast(R.string.error_gps_not_available, true); + ToastUtil.showError(getActivity(), R.string.error_gps_not_available); } } @@ -566,12 +433,11 @@ private void setInputFormula(Brick.BrickField brickField, int mode) { switch (mode) { case SET_FORMULA_ON_CREATE_VIEW: formulaEditorEditText.enterNewFormula(currentFormula.getInternFormulaState()); - currentFormula.highlightTextField(brickView); - refreshFormulaPreviewString(); + refreshFormulaPreviewString(formulaEditorEditText.getStringFromInternFormula()); break; case SET_FORMULA_ON_SWITCH_EDIT_TEXT: - Formula newFormula = clonedFormulaBrick.getFormulaWithBrickField(brickField); + Formula newFormula = formulaBrick.getFormulaWithBrickField(brickField); if (currentFormula == newFormula && formulaEditorEditText.hasChanges()) { formulaEditorEditText.quickSelect(); break; @@ -598,7 +464,7 @@ private void setInputFormula(Brick.BrickField brickField, int mode) { currentBrickField = brickField; currentFormula = newFormula; formulaEditorEditText.enterNewFormula(newFormula.getInternFormulaState()); - refreshFormulaPreviewString(); + refreshFormulaPreviewString(formulaEditorEditText.getStringFromInternFormula()); break; default: break; @@ -630,9 +496,6 @@ private boolean saveValidFormula(FormulaElement formulaElement) { if (onFormulaChangedListener != null) { onFormulaChangedListener.onFormulaChanged(formulaBrick, currentBrickField, currentFormula); } - if (formulaEditorBrick != null) { - currentFormula.refreshTextField(brickView); - } formulaEditorEditText.formulaSaved(); hasFormulaBeenChanged = true; return true; @@ -644,34 +507,21 @@ private boolean checkReturnWithoutSaving(int errorType) { confirmSwitchEditTextTimeStamp[0] = 0; confirmSwitchEditTextTimeStamp[1] = 0; confirmSwitchEditTextCounter = 0; - currentFormula.setDisplayText(null); - showToast(R.string.formula_editor_changes_discarded, false); + ToastUtil.showSuccess(getActivity(), R.string.formula_editor_changes_discarded); return true; } else { switch (errorType) { case InternFormulaParser.PARSER_INPUT_SYNTAX_ERROR: - showToast(R.string.formula_editor_parse_fail, true); + ToastUtil.showError(getActivity(), R.string.formula_editor_parse_fail); break; case InternFormulaParser.PARSER_STACK_OVERFLOW: - showToast(R.string.formula_editor_parse_fail_formula_too_long, true); + ToastUtil.showError(getActivity(), R.string.formula_editor_parse_fail_formula_too_long); break; } return false; } } - /* - * TODO Remove Toasts from this class and replace them with something useful - * This is a hack more than anything else. We shouldn't use Toasts if we're going to change the message all the time - */ - private void showToast(int resourceId, boolean error) { - if (error) { - ToastUtil.showError(getActivity(), resourceId); - } else { - ToastUtil.showSuccess(getActivity(), resourceId); - } - } - public void promptSave() { if (hasFormulaBeenChanged) { ToastUtil.showSuccess(getActivity(), R.string.formula_editor_changes_saved); @@ -690,7 +540,6 @@ private void exitFormulaEditorFragment() { @Override public void onClick(DialogInterface dialog, int which) { ToastUtil.showError(getActivity(), R.string.formula_editor_changes_discarded); - currentFormula.setDisplayText(null); onUserDismiss(); } }) @@ -715,9 +564,8 @@ public void onClick(DialogInterface dialog, int which) { private void endFormulaEditor() { if (formulaEditorEditText.hasChanges()) { if (saveFormulaIfPossible()) { - showToast(R.string.formula_editor_changes_saved, false); + ToastUtil.showSuccess(getActivity(), R.string.formula_editor_changes_saved); hasFormulaBeenChanged = false; - updateUserBricksIfNecessary(); onUserDismiss(); } } else { @@ -725,24 +573,9 @@ private void endFormulaEditor() { } } - private static void updateUserBricksIfNecessary() { - if (formulaBrick instanceof UserBrickParameter) { - UserBrick userBrick = ((UserBrickParameter) formulaBrick).getParent(); - userBrick.updateUserBrickParametersAndVariables(); - } - } - - public void refreshFormulaPreviewString() { - refreshFormulaPreviewString(formulaEditorEditText.getStringFromInternFormula()); - } - public void refreshFormulaPreviewString(String newString) { - currentFormula.setDisplayText(newString); updateBrickView(); - currentFormula.refreshTextField(brickView, newString); - if (!showCustomView) { - currentFormula.highlightTextField(brickView); - } + formulaBrick.getTextView(currentBrickField).setText(newString); } private void showCategoryListFragment(String tag, int actionbarResId) { @@ -792,19 +625,17 @@ public void onListRenamed(String previousName, String newName) { @SuppressWarnings("deprecation") @Override public void onGlobalLayout() { - fragmentView.getViewTreeObserver().removeGlobalOnLayoutListener(this); + getView().getViewTreeObserver().removeGlobalOnLayoutListener(this); Rect brickRect = new Rect(); Rect keyboardRec = new Rect(); formulaEditorBrick.getGlobalVisibleRect(brickRect); formulaEditorKeyboard.getGlobalVisibleRect(keyboardRec); - - //FormulaEditorIntroUtil.prepareIntro(fragmentView); } public void addResourceToActiveFormula(int resource) { formulaEditorEditText.handleKeyEvent(resource, ""); - if (resource == R.string.formula_editor_function_collides_with_edge || resource == R.string - .formula_editor_function_touched) { + if (resource == R.string.formula_editor_function_collides_with_edge + || resource == R.string.formula_editor_function_touched) { ProjectManager.getInstance().getCurrentSprite().createCollisionPolygons(); } } @@ -848,7 +679,7 @@ public void onHiddenChanged(boolean hidden) { public void updateButtonsOnKeyboardAndInvalidateOptionsMenu() { getActivity().invalidateOptionsMenu(); - ImageButton backspaceOnKeyboard = (ImageButton) getActivity().findViewById(R.id.formula_editor_keyboard_delete); + ImageButton backspaceOnKeyboard = getActivity().findViewById(R.id.formula_editor_keyboard_delete); if (!formulaEditorEditText.isThereSomethingToDelete()) { backspaceOnKeyboard.setAlpha(255 / 3); backspaceOnKeyboard.setEnabled(false); diff --git a/catroid/src/main/java/org/catrobat/catroid/ui/fragment/SingleSeekBar.java b/catroid/src/main/java/org/catrobat/catroid/ui/fragment/SingleSeekBar.java new file mode 100644 index 00000000000..c0c68798113 --- /dev/null +++ b/catroid/src/main/java/org/catrobat/catroid/ui/fragment/SingleSeekBar.java @@ -0,0 +1,88 @@ +/* + * Catroid: An on-device visual programming system for Android devices + * Copyright (C) 2010-2018 The Catrobat Team + * () + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * An additional term exception under section 7 of the GNU Affero + * General Public License, version 3, is available at + * http://developer.catrobat.org/license_additional_term + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package org.catrobat.catroid.ui.fragment; + +import android.content.Context; +import android.view.View; +import android.widget.SeekBar; +import android.widget.TextView; + +import org.catrobat.catroid.R; +import org.catrobat.catroid.content.bricks.Brick; +import org.catrobat.catroid.content.bricks.FormulaBrick; +import org.catrobat.catroid.formulaeditor.Formula; + +public class SingleSeekBar { + + private FormulaBrick formulaBrick; + private Brick.BrickField brickField; + private int seekBarTitleId; + + private TextView valueTextView; + + public SingleSeekBar(FormulaBrick formulaBrick, Brick.BrickField brickField, int seekBarTitleId) { + this.formulaBrick = formulaBrick; + this.brickField = brickField; + this.seekBarTitleId = seekBarTitleId; + } + + public View getView(final Context context) { + View view = View.inflate(context, R.layout.single_seekbar_value_chooser, null); + view.setFocusableInTouchMode(true); + view.requestFocus(); + + TextView seekBarTitle = view.findViewById(R.id.single_seekbar_title); + seekBarTitle.setText(seekBarTitleId); + + valueTextView = view.findViewById(R.id.single_seekbar_value); + valueTextView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + FormulaEditorFragment.showFragment(context, formulaBrick, brickField); + } + }); + + SeekBar seekBar = view.findViewById(R.id.single_seekbar_seekbar); + String currentStringValue = formulaBrick.getFormulaWithBrickField(brickField).getTrimmedFormulaString(context); + seekBar.setProgress(Double.valueOf(currentStringValue.replace(",", ".")).intValue()); + valueTextView.setText(String.valueOf(seekBar.getProgress())); + seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { + @Override + public void onProgressChanged(SeekBar seekBar, int i, boolean b) { + valueTextView.setText(String.valueOf(seekBar.getProgress())); + } + + @Override + public void onStartTrackingTouch(SeekBar seekBar) { + } + + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + formulaBrick.setFormulaWithBrickField(brickField, new Formula(seekBar.getProgress())); + } + }); + + return view; + } +} diff --git a/catroid/src/main/java/org/catrobat/catroid/ui/fragment/SingleSeekbar.java b/catroid/src/main/java/org/catrobat/catroid/ui/fragment/SingleSeekbar.java deleted file mode 100644 index 9a6a0b5807e..00000000000 --- a/catroid/src/main/java/org/catrobat/catroid/ui/fragment/SingleSeekbar.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Catroid: An on-device visual programming system for Android devices - * Copyright (C) 2010-2018 The Catrobat Team - * () - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * An additional term exception under section 7 of the GNU Affero - * General Public License, version 3, is available at - * http://developer.catrobat.org/license_additional_term - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package org.catrobat.catroid.ui.fragment; - -import android.content.Context; -import android.view.View; -import android.view.View.OnClickListener; -import android.widget.SeekBar; -import android.widget.TextView; - -import org.catrobat.catroid.R; -import org.catrobat.catroid.content.bricks.Brick; -import org.catrobat.catroid.content.bricks.FormulaBrick; -import org.catrobat.catroid.formulaeditor.Formula; - -public class SingleSeekbar { - - private final FormulaBrick formulaBrick; - private final Brick.BrickField seekbarField; - private int seekbarTitleId; - - private TextView formulaEditorEditTextSeekbarValue; - private View seekbarView; - - private SeekBar speedSeekBar; - - public SingleSeekbar(FormulaBrick formulaBrick, - Brick.BrickField seekbarField, int seekbarTitleId) { - this.formulaBrick = formulaBrick; - this.seekbarField = seekbarField; - this.seekbarTitleId = seekbarTitleId; - } - - public View getView(Context context) { - seekbarView = View.inflate(context, R.layout.single_seekbar_value_chooser, null); - seekbarView.setFocusableInTouchMode(true); - seekbarView.requestFocus(); - - OnClickListener onClickListener = new OnClickListener() { - @Override - public void onClick(View view) { - FormulaEditorFragment.showFragment(view, formulaBrick, seekbarField); - } - }; - - formulaEditorEditTextSeekbarValue = (TextView) seekbarView.findViewById(R.id.single_seekbar_value); - formulaEditorEditTextSeekbarValue.setOnClickListener(onClickListener); - formulaBrick.getFormulaWithBrickField(seekbarField).setTextFieldId(R.id.single_seekbar_value); - formulaBrick.getFormulaWithBrickField(seekbarField).refreshTextField(seekbarView); - - speedSeekBar = (SeekBar) seekbarView.findViewById(R.id.single_seekbar_seekbar); - - TextView seekbarTitle = (TextView) seekbarView.findViewById(R.id.single_seekbar_title); - seekbarTitle.setText(seekbarTitleId); - - speedSeekBar.setProgress(getCurrentBrickFieldValue()); - - SeekBar.OnSeekBarChangeListener seekBarChangeListener = new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int i, boolean b) { - formulaEditorEditTextSeekbarValue.setText(String.valueOf(seekBar.getProgress())); - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - FormulaEditorFragment.overwriteFormula(seekbarView, new Formula(seekBar.getProgress())); - } - }; - - speedSeekBar.setOnSeekBarChangeListener(seekBarChangeListener); - - return seekbarView; - } - - private int getCurrentBrickFieldValue() { - String stringValue = formulaBrick.getFormulaWithBrickField(seekbarField).getDisplayString(seekbarView.getContext()); - return Double.valueOf(stringValue.replace(",", ".")).intValue(); - } -} diff --git a/catroid/src/main/java/org/catrobat/catroid/utils/Utils.java b/catroid/src/main/java/org/catrobat/catroid/utils/Utils.java index e7d89daae49..95236030577 100644 --- a/catroid/src/main/java/org/catrobat/catroid/utils/Utils.java +++ b/catroid/src/main/java/org/catrobat/catroid/utils/Utils.java @@ -30,7 +30,6 @@ import android.net.ConnectivityManager; import android.os.Environment; import android.preference.PreferenceManager; -import android.support.annotation.Nullable; import android.util.Log; import com.badlogic.gdx.files.FileHandle; @@ -54,11 +53,9 @@ import org.catrobat.catroid.web.ServerCalls; import org.catrobat.catroid.web.WebconnectionException; -import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; -import java.io.InputStream; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.text.DateFormat; @@ -117,22 +114,6 @@ public static String formatDate(Date date, Locale locale) { return DateFormat.getDateInstance(DateFormat.LONG, locale).format(date); } - @Nullable - public static byte[] convertInputStreamToByteArray(final InputStream inputStream) { - try { - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - byte[] buffer = new byte[4096]; - int len; - while ((len = inputStream.read(buffer)) > -1) { - byteArrayOutputStream.write(buffer, 0, len); - } - byteArrayOutputStream.flush(); - return byteArrayOutputStream.toByteArray(); - } catch (IOException e) { - return null; - } - } - public static String generateRemixUrlsStringForMergedProgram(XmlHeader headerOfFirstProgram, XmlHeader headerOfSecondProgram) { String escapedFirstProgramName = headerOfFirstProgram.getProgramName(); escapedFirstProgramName = escapedFirstProgramName.replace(Constants.REMIX_URL_PREFIX_INDICATOR, @@ -448,8 +429,6 @@ public static int convertDoubleToPluralInteger(double value) { if (absoluteValue == 0.0 || absoluteValue == 1.0 || absoluteValue == 2.0) { return (int) absoluteValue; } else { - // Random Number to get into the "other" keyword for values like 0.99 or 2.001 seconds or degrees - // in hopefully all possible languages return TRANSLATION_PLURAL_OTHER_INTEGER; } } diff --git a/catroid/src/main/res/drawable-mdpi/textfield_pressed_android4.9.png b/catroid/src/main/res/drawable-mdpi/textfield_pressed_android4.9.png deleted file mode 100644 index 40e19a1e31e8b69dacadfc41adeb8995b4d6ab50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^nm}yC!VDyhI(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4NyWZ zz$e7@|Ns9$rt#LN3^UIFNeBXp0J%V^MkhZ3Ae+4;$S)Wq$ReYbCO%6A$YMBA<)2WWWd$OagoWYn=6TN@uDBD-BS!0SMS1(;?oWyh_UqeAuh3k_F7Y9?f*3JbC2{Rg94H+h_sIqht YVPM@gQ$IJt^#{n+p00i_>zopr0Hri(>Hq)$ diff --git a/catroid/src/main/res/layout-ar/brick_drone_move_backward.xml b/catroid/src/main/res/layout-ar/brick_drone_move_backward.xml index 22372b68479..2a92cbc1d4c 100644 --- a/catroid/src/main/res/layout-ar/brick_drone_move_backward.xml +++ b/catroid/src/main/res/layout-ar/brick_drone_move_backward.xml @@ -27,7 +27,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" - android:orientation="horizontal" > + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + + app:layout_newLine="true" + app:layout_textField="true" /> + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + + app:layout_newLine="true" + app:layout_textField="true" /> + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + + app:layout_newLine="true" + app:layout_textField="true" /> + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + + app:layout_newLine="true" + app:layout_textField="true" /> + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + + app:layout_newLine="true" + app:layout_textField="true" /> + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + + app:layout_newLine="true" + app:layout_textField="true" /> + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + + app:layout_newLine="true" + app:layout_textField="true" /> - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/catroid/src/main/res/layout-ar/brick_drone_turn_right.xml b/catroid/src/main/res/layout-ar/brick_drone_turn_right.xml index c467ae5f631..33e6c40a29c 100644 --- a/catroid/src/main/res/layout-ar/brick_drone_turn_right.xml +++ b/catroid/src/main/res/layout-ar/brick_drone_turn_right.xml @@ -27,7 +27,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" - android:orientation="horizontal" > + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + + app:layout_newLine="true" + app:layout_textField="true" /> - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/catroid/src/main/res/layout-ar/brick_jumping_sumo_move_backward.xml b/catroid/src/main/res/layout-ar/brick_jumping_sumo_move_backward.xml index ba7e1059d69..dded6bb533a 100644 --- a/catroid/src/main/res/layout-ar/brick_jumping_sumo_move_backward.xml +++ b/catroid/src/main/res/layout-ar/brick_jumping_sumo_move_backward.xml @@ -27,7 +27,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" - android:orientation="horizontal" > + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + + app:layout_newLine="true" + app:layout_textField="true" /> - + + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> - + - + android:text="@string/nxt_brick_motor_move"> + - - - + android:focusable="false" + android:textDirection="locale"> + - + android:text="@string/nxt_motor_speed_to" + app:layout_newLine="true"> + - + android:text="@string/nxt_motor_speed"> + - + - + android:text="@string/percent_symbol"> + - + \ No newline at end of file diff --git a/catroid/src/main/res/layout/brick_drone_move_backward.xml b/catroid/src/main/res/layout/brick_drone_move_backward.xml index a73f25e62ee..7b83934cbad 100644 --- a/catroid/src/main/res/layout/brick_drone_move_backward.xml +++ b/catroid/src/main/res/layout/brick_drone_move_backward.xml @@ -27,7 +27,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" - android:orientation="horizontal" > + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + + app:layout_newLine="true" + app:layout_textField="true" /> + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + + app:layout_newLine="true" + app:layout_textField="true" /> + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + + app:layout_newLine="true" + app:layout_textField="true" /> + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + + app:layout_newLine="true" + app:layout_textField="true" /> + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + + app:layout_newLine="true" + app:layout_textField="true" /> + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + + app:layout_newLine="true" + app:layout_textField="true" /> - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/catroid/src/main/res/layout/brick_drone_turn_left.xml b/catroid/src/main/res/layout/brick_drone_turn_left.xml index 3b4f497ebb2..fc7f72a43db 100644 --- a/catroid/src/main/res/layout/brick_drone_turn_left.xml +++ b/catroid/src/main/res/layout/brick_drone_turn_left.xml @@ -27,7 +27,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" - android:orientation="horizontal" > + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + + app:layout_newLine="true" + app:layout_textField="true" /> - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/catroid/src/main/res/layout/brick_drone_turn_right.xml b/catroid/src/main/res/layout/brick_drone_turn_right.xml index d6546b1094d..b9a82b520dc 100644 --- a/catroid/src/main/res/layout/brick_drone_turn_right.xml +++ b/catroid/src/main/res/layout/brick_drone_turn_right.xml @@ -27,7 +27,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" - android:orientation="horizontal" > + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + + app:layout_newLine="true" + app:layout_textField="true" /> - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/catroid/src/main/res/layout/brick_ev3_play_tone.xml b/catroid/src/main/res/layout/brick_ev3_play_tone.xml index 0f0f391d216..d8fc63df3ab 100644 --- a/catroid/src/main/res/layout/brick_ev3_play_tone.xml +++ b/catroid/src/main/res/layout/brick_ev3_play_tone.xml @@ -23,11 +23,11 @@ --> + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + - + android:text="@string/ev3_play_tone"> + - + android:text="@string/ev3_tone_duration_for" + app:layout_newLine="true"> + - + app:layout_textField="true"> + - + - + android:text="@string/nxt_tone_frequency" + app:layout_newLine="true"> + - + app:layout_textField="true"> + - + android:text="@string/nxt_tone_hundred_hz"> + - + android:text="@string/ev3_tone_volume" + app:layout_newLine="true"> + - + app:layout_textField="true"> + - + android:text="@string/ev3_tone_percent"> + - + diff --git a/catroid/src/main/res/layout/brick_glide_to.xml b/catroid/src/main/res/layout/brick_glide_to.xml index b825f03f11f..ea1304eb3e9 100644 --- a/catroid/src/main/res/layout/brick_glide_to.xml +++ b/catroid/src/main/res/layout/brick_glide_to.xml @@ -48,7 +48,6 @@ @@ -62,7 +61,7 @@ diff --git a/catroid/src/main/res/layout/brick_drone_control.xml b/catroid/src/main/res/layout/brick_if_then_begin_if.xml similarity index 67% rename from catroid/src/main/res/layout/brick_drone_control.xml rename to catroid/src/main/res/layout/brick_if_then_begin_if.xml index 944a1d32866..35498914468 100644 --- a/catroid/src/main/res/layout/brick_drone_control.xml +++ b/catroid/src/main/res/layout/brick_if_then_begin_if.xml @@ -37,7 +37,7 @@ android:visibility="gone" /> - + - - + android:id="@+id/if_label" + style="@style/BrickText.Multiple" + android:text="@string/brick_if_begin" /> + + + + + + + + diff --git a/catroid/src/main/res/layout/brick_insert_item_into_userlist.xml b/catroid/src/main/res/layout/brick_insert_item_into_userlist.xml index 72b44df0c1d..a92b7bf037a 100644 --- a/catroid/src/main/res/layout/brick_insert_item_into_userlist.xml +++ b/catroid/src/main/res/layout/brick_insert_item_into_userlist.xml @@ -27,7 +27,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" - android:orientation="horizontal" > + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + @@ -59,7 +58,6 @@ app:layout_textField="true" /> @@ -67,12 +65,11 @@ android:id="@+id/insert_item_into_userlist_spinner" android:layout_width="match_parent" android:layout_height="wrap_content" - android:textDirection="locale" android:clickable="false" - android:focusable="false" /> + android:focusable="false" + android:textDirection="locale" /> @@ -82,6 +79,6 @@ app:layout_inputType="number" app:layout_textField="true" /> - + - \ No newline at end of file + \ No newline at end of file diff --git a/catroid/src/main/res/layout/brick_jumping_sumo_move_backward.xml b/catroid/src/main/res/layout/brick_jumping_sumo_move_backward.xml index a0a7b59df4a..787a2bf1c34 100644 --- a/catroid/src/main/res/layout/brick_jumping_sumo_move_backward.xml +++ b/catroid/src/main/res/layout/brick_jumping_sumo_move_backward.xml @@ -60,7 +60,7 @@ app:layout_newLine="true" /> + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + - + android:text="@string/default_jumping_sumo_project_sprites_sound"> + - + android:focusable="false" + android:textDirection="locale"> + - + android:text="@string/jumping_sumo_volume"> + - + - - + android:text="@string/percent_symbol"> + + \ No newline at end of file diff --git a/catroid/src/main/res/layout/brick_note.xml b/catroid/src/main/res/layout/brick_note.xml index f5bafee245e..1ff700681e8 100644 --- a/catroid/src/main/res/layout/brick_note.xml +++ b/catroid/src/main/res/layout/brick_note.xml @@ -22,11 +22,11 @@ ~ along with this program. If not, see . --> + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + - + android:minLines="1" + app:layout_inputType="text" + app:layout_textField="true" /> + \ No newline at end of file diff --git a/catroid/src/main/res/layout/brick_nxt_motor_turn_angle.xml b/catroid/src/main/res/layout/brick_nxt_motor_turn_angle.xml index c9cd6a1151a..cd0075a1254 100644 --- a/catroid/src/main/res/layout/brick_nxt_motor_turn_angle.xml +++ b/catroid/src/main/res/layout/brick_nxt_motor_turn_angle.xml @@ -23,11 +23,11 @@ --> + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + - - + + - - + + - - + + - - + + - - + + - + \ No newline at end of file diff --git a/catroid/src/main/res/layout/brick_nxt_play_tone.xml b/catroid/src/main/res/layout/brick_nxt_play_tone.xml index 968823b5e0a..6160dba44c0 100644 --- a/catroid/src/main/res/layout/brick_nxt_play_tone.xml +++ b/catroid/src/main/res/layout/brick_nxt_play_tone.xml @@ -23,11 +23,11 @@ --> + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + - - + android:text="@string/nxt_tone_duration" + app:layout_newLine="true" /> - - - + android:text="@string/nxt_tone_frequency" + app:layout_newLine="true"> + - + \ No newline at end of file diff --git a/catroid/src/main/res/layout/brick_phiro_motor_backward.xml b/catroid/src/main/res/layout/brick_phiro_motor_backward.xml index 20dffebf2b8..a56a9e9055b 100644 --- a/catroid/src/main/res/layout/brick_phiro_motor_backward.xml +++ b/catroid/src/main/res/layout/brick_phiro_motor_backward.xml @@ -23,11 +23,11 @@ --> + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + - + android:text="@string/brick_phiro_motor_backward_action"> + - - - + android:focusable="false" + android:textDirection="locale"> + - + android:text="@string/phiro_motor_speed"> + - + - - + android:text="@string/percent_symbol"> + + \ No newline at end of file diff --git a/catroid/src/main/res/layout/brick_phiro_motor_forward.xml b/catroid/src/main/res/layout/brick_phiro_motor_forward.xml index bcbd0d51771..fbc0ca35acc 100644 --- a/catroid/src/main/res/layout/brick_phiro_motor_forward.xml +++ b/catroid/src/main/res/layout/brick_phiro_motor_forward.xml @@ -23,11 +23,11 @@ --> + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + - + android:text="@string/brick_phiro_motor_forward_action"> + - - - + android:focusable="false" + android:textDirection="locale"> + - + android:text="@string/phiro_motor_speed"> + - + app:layout_textField="true"> + - - + android:text="@string/percent_symbol"> + + \ No newline at end of file diff --git a/catroid/src/main/res/layout/brick_phiro_motor_stop.xml b/catroid/src/main/res/layout/brick_phiro_motor_stop.xml index 9e14c8a5c31..1272ac24aaa 100644 --- a/catroid/src/main/res/layout/brick_phiro_motor_stop.xml +++ b/catroid/src/main/res/layout/brick_phiro_motor_stop.xml @@ -23,11 +23,11 @@ --> + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + - + android:text="@string/phiro_motor_stop"> + - + android:focusable="false" + android:textDirection="locale" /> + \ No newline at end of file diff --git a/catroid/src/main/res/layout/brick_phiro_play_tone.xml b/catroid/src/main/res/layout/brick_phiro_play_tone.xml index 295fef6fb1d..04e6b6b0c50 100644 --- a/catroid/src/main/res/layout/brick_phiro_play_tone.xml +++ b/catroid/src/main/res/layout/brick_phiro_play_tone.xml @@ -23,11 +23,11 @@ --> + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + - + android:text="@string/phiro_play_tone"> + - + android:focusable="false" + android:textDirection="locale" /> - + android:text="@string/phiro_tone_duration" + app:layout_newLine="true"> + - + app:layout_textField="true"> + - + - + \ No newline at end of file diff --git a/catroid/src/main/res/layout/brick_place_at.xml b/catroid/src/main/res/layout/brick_place_at.xml index 02afd1960d9..2aad9bd0bdb 100644 --- a/catroid/src/main/res/layout/brick_place_at.xml +++ b/catroid/src/main/res/layout/brick_place_at.xml @@ -23,11 +23,11 @@ --> + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + - + android:text="@string/brick_place_at"> + - + android:text="@string/x_label" + app:layout_newLine="true"> + - + app:layout_textField="true"> + - + android:text="@string/y_label"> + - - + app:layout_textField="true"> + + \ No newline at end of file diff --git a/catroid/src/main/res/layout/brick_raspi_if_begin_if.xml b/catroid/src/main/res/layout/brick_raspi_if_begin_if.xml index 7f021b52f23..67c409fb6cb 100644 --- a/catroid/src/main/res/layout/brick_raspi_if_begin_if.xml +++ b/catroid/src/main/res/layout/brick_raspi_if_begin_if.xml @@ -48,7 +48,6 @@ @@ -60,7 +59,7 @@ app:layout_textField="true" /> diff --git a/catroid/src/main/res/layout/brick_raspi_pwm.xml b/catroid/src/main/res/layout/brick_raspi_pwm.xml index c224a2a1f15..fbab0b566c0 100644 --- a/catroid/src/main/res/layout/brick_raspi_pwm.xml +++ b/catroid/src/main/res/layout/brick_raspi_pwm.xml @@ -46,10 +46,9 @@ app:horizontalSpacing="@dimen/brick_flow_layout_horizontal_spacing" app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + @@ -60,10 +59,9 @@ app:layout_textField="true" /> + android:text="@string/brick_arduino_set_pin_value_to" + app:layout_newLine="true" /> + android:text="@string/percent_symbol" + app:layout_newLine="true" /> + android:text="@string/hertz_symbol" + app:layout_newLine="true" /> diff --git a/catroid/src/main/res/layout/brick_raspi_send_digital.xml b/catroid/src/main/res/layout/brick_raspi_send_digital.xml index c802b4d0eb0..65121d34870 100644 --- a/catroid/src/main/res/layout/brick_raspi_send_digital.xml +++ b/catroid/src/main/res/layout/brick_raspi_send_digital.xml @@ -27,14 +27,14 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" - android:orientation="horizontal" > + android:orientation="horizontal"> + android:visibility="gone"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + @@ -60,10 +59,9 @@ app:layout_textField="true" /> + android:text="@string/brick_raspi_set_pin_value_to" + app:layout_newLine="true" /> + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + - + android:text="@string/brick_say_bubble"> + - + app:layout_textField="true"> + - + android:text="@string/brick_think_say_for_text" + app:layout_newLine="true"> + - + app:layout_textField="true"> + - - + android:id="@+id/brick_seconds_label" + style="@style/BrickText.SingleLine"> + + \ No newline at end of file diff --git a/catroid/src/main/res/layout/brick_set_color_to.xml b/catroid/src/main/res/layout/brick_set_color_to.xml index 55c8bc722e8..ad606ac8822 100644 --- a/catroid/src/main/res/layout/brick_set_color_to.xml +++ b/catroid/src/main/res/layout/brick_set_color_to.xml @@ -27,7 +27,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" - android:orientation="horizontal" > + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + - + android:text="@string/brick_set_color"> + - + android:text="@string/to_label" + app:layout_newLine="true"> + - - + app:layout_textField="true"> + + diff --git a/catroid/src/main/res/layout/brick_drone_set_text.xml b/catroid/src/main/res/layout/brick_set_text.xml similarity index 75% rename from catroid/src/main/res/layout/brick_drone_set_text.xml rename to catroid/src/main/res/layout/brick_set_text.xml index 8a11a8cda42..0a5cc5fcfbf 100644 --- a/catroid/src/main/res/layout/brick_drone_set_text.xml +++ b/catroid/src/main/res/layout/brick_set_text.xml @@ -27,7 +27,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" - android:orientation="horizontal" > + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + - + android:text="@string/drone_brick_set_text"> + - + app:layout_textField="true"> + - + android:id="@+id/brick_seconds_label" + style="@style/BrickText.SingleLine"> + - + android:text="@string/drone_brick_set_x" + app:layout_newLine="true"> + - + app:layout_textField="true"> + - + android:text="@string/y_label"> + - - + app:layout_textField="true"> + + \ No newline at end of file diff --git a/catroid/src/main/res/layout/brick_set_transparency.xml b/catroid/src/main/res/layout/brick_set_transparency.xml index d320d0cc9b3..5d9ea1955aa 100644 --- a/catroid/src/main/res/layout/brick_set_transparency.xml +++ b/catroid/src/main/res/layout/brick_set_transparency.xml @@ -23,11 +23,11 @@ --> + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + - + android:text="@string/brick_set_transparency"> + - + android:text="@string/to_label" + app:layout_newLine="true"> + - + app:layout_textField="true"> + - - + android:text="@string/percent_symbol"> + + \ No newline at end of file diff --git a/catroid/src/main/res/layout/brick_set_variable.xml b/catroid/src/main/res/layout/brick_set_variable.xml index 304f84e1460..037cf1a1ab4 100644 --- a/catroid/src/main/res/layout/brick_set_variable.xml +++ b/catroid/src/main/res/layout/brick_set_variable.xml @@ -23,11 +23,11 @@ --> + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + @@ -56,12 +55,11 @@ android:id="@+id/set_variable_spinner" android:layout_width="match_parent" android:layout_height="wrap_content" - android:textDirection="locale" android:clickable="false" - android:focusable="false" /> + android:focusable="false" + android:textDirection="locale" /> @@ -70,6 +68,6 @@ style="@style/BrickEditText" app:layout_inputType="number" app:layout_textField="true" /> - + \ No newline at end of file diff --git a/catroid/src/main/res/layout/brick_set_volume_to.xml b/catroid/src/main/res/layout/brick_set_volume_to.xml index 7b98826a59e..115d76eb8ca 100644 --- a/catroid/src/main/res/layout/brick_set_volume_to.xml +++ b/catroid/src/main/res/layout/brick_set_volume_to.xml @@ -23,11 +23,11 @@ --> + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + - + android:text="@string/brick_set_volume_to"> + - + app:layout_textField="true"> + - - + android:text="@string/percent_symbol"> + + \ No newline at end of file diff --git a/catroid/src/main/res/layout/brick_set_x.xml b/catroid/src/main/res/layout/brick_set_x.xml index 00a2cae67e1..3f5f27a2fa7 100644 --- a/catroid/src/main/res/layout/brick_set_x.xml +++ b/catroid/src/main/res/layout/brick_set_x.xml @@ -23,11 +23,11 @@ --> + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + - + android:text="@string/brick_set_x"> + - - + app:layout_textField="true"> + + \ No newline at end of file diff --git a/catroid/src/main/res/layout/brick_set_y.xml b/catroid/src/main/res/layout/brick_set_y.xml index 6eeef74a328..485550826bf 100644 --- a/catroid/src/main/res/layout/brick_set_y.xml +++ b/catroid/src/main/res/layout/brick_set_y.xml @@ -23,11 +23,11 @@ --> + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + - + android:text="@string/brick_set_y"> + - - + app:layout_textField="true"> + + \ No newline at end of file diff --git a/catroid/src/main/res/layout/brick_think_bubble.xml b/catroid/src/main/res/layout/brick_think_bubble.xml index 61585a74487..fddc280e3be 100644 --- a/catroid/src/main/res/layout/brick_think_bubble.xml +++ b/catroid/src/main/res/layout/brick_think_bubble.xml @@ -47,14 +47,13 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + - + android:text="@string/brick_think_bubble"> + - + app:layout_textField="true"> + - + android:text="@string/brick_think_say_for_text" + app:layout_newLine="true"> + - + app:layout_textField="true"> + - - + android:text="@string/phiro_seconds"> + + \ No newline at end of file diff --git a/catroid/src/main/res/layout/brick_vibration.xml b/catroid/src/main/res/layout/brick_vibration.xml index 54315c69d2e..7bc551954d5 100644 --- a/catroid/src/main/res/layout/brick_vibration.xml +++ b/catroid/src/main/res/layout/brick_vibration.xml @@ -23,11 +23,11 @@ --> + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + + android:text="@string/brick_vibration"> + app:layout_textField="true"> + android:id="@+id/brick_seconds_label" + style="@style/BrickText.Multiple"> diff --git a/catroid/src/main/res/layout/brick_wait.xml b/catroid/src/main/res/layout/brick_wait.xml index 026debc68ea..fb061e47ab0 100644 --- a/catroid/src/main/res/layout/brick_wait.xml +++ b/catroid/src/main/res/layout/brick_wait.xml @@ -23,11 +23,11 @@ --> + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + app:verticalSpacing="@dimen/brick_flow_layout_vertical_spacing"> - + - + android:text="@string/brick_wait"> + - + app:layout_textField="true"> + - - + android:id="@+id/brick_seconds_label" + style="@style/BrickText.Multiple"> + + \ No newline at end of file diff --git a/catroid/src/main/res/layout/fragment_drone_config_cooser.xml b/catroid/src/main/res/layout/fragment_drone_config_cooser.xml deleted file mode 100644 index 6e345b393e5..00000000000 --- a/catroid/src/main/res/layout/fragment_drone_config_cooser.xml +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/catroid/src/main/res/layout/fragment_rgb_color_chooser.xml b/catroid/src/main/res/layout/fragment_rgb_color_chooser.xml index b9157f13591..3563e39596d 100644 --- a/catroid/src/main/res/layout/fragment_rgb_color_chooser.xml +++ b/catroid/src/main/res/layout/fragment_rgb_color_chooser.xml @@ -22,12 +22,14 @@ ~ along with this program. If not, see . --> - + android:orientation="vertical" + android:paddingEnd="@dimen/material_design_spacing_small" + android:paddingStart="@dimen/material_design_spacing_small"> @@ -60,7 +62,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" - android:stretchColumns="1" > + android:stretchColumns="1"> + android:textColor="@color/color_chooser_rgb_red" /> @@ -94,15 +96,15 @@ android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="50" - android:maxHeight="60dp" - android:max="255" /> + android:max="255" + android:maxHeight="60dp" /> @@ -124,15 +126,15 @@ android:layout_height="match_parent" android:paddingBottom="30dp" android:paddingTop="30dp" - android:weightSum="100" > + android:weightSum="100"> @@ -140,8 +142,8 @@ android:id="@+id/rgb_green_start_value" android:layout_width="0dp" android:layout_height="match_parent" - android:layout_weight="5" android:layout_marginTop="10dp" + android:layout_weight="5" android:text="0" android:textColor="@color/holo_blue_bright" tools:ignore="HardcodedText" /> @@ -151,15 +153,15 @@ android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="50" - android:maxHeight="60dp" - android:max="255" /> + android:max="255" + android:maxHeight="60dp" /> @@ -181,15 +183,15 @@ android:layout_height="match_parent" android:paddingBottom="30dp" android:paddingTop="30dp" - android:weightSum="100" > + android:weightSum="100"> @@ -197,8 +199,8 @@ android:id="@+id/rgb_blue_start_value" android:layout_width="0dp" android:layout_height="match_parent" - android:layout_weight="5" android:layout_marginTop="10dp" + android:layout_weight="5" android:text="0" android:textColor="@color/holo_blue_bright" tools:ignore="HardcodedText" /> @@ -208,15 +210,15 @@ android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="50" - android:maxHeight="60dp" - android:max="255" /> + android:max="255" + android:maxHeight="60dp" /> diff --git a/catroid/src/main/res/layout/single_seekbar_value_chooser.xml b/catroid/src/main/res/layout/single_seekbar_value_chooser.xml index d96778dc35b..0509d36b837 100644 --- a/catroid/src/main/res/layout/single_seekbar_value_chooser.xml +++ b/catroid/src/main/res/layout/single_seekbar_value_chooser.xml @@ -21,9 +21,9 @@ ~ You should have received a copy of the GNU Affero General Public License ~ along with this program. If not, see . --> - @@ -56,14 +58,14 @@ android:id="@+id/single_seekbar_seekbar" android:layout_width="0dp" android:layout_height="match_parent" + android:layout_marginTop="10dp" android:layout_weight="50" - android:maxHeight="60dp" android:max="100" - android:layout_marginTop="10dp" /> + android:maxHeight="60dp" /> diff --git a/catroid/src/main/res/values/colors.xml b/catroid/src/main/res/values/colors.xml index eb3360919e7..148981a778c 100644 --- a/catroid/src/main/res/values/colors.xml +++ b/catroid/src/main/res/values/colors.xml @@ -72,14 +72,7 @@ #FF0284E7 #33B5E5 - - #FFEB4618 - #FF078707 - #FF0284E7, - #FFE01B - #33B5E5 - - + #FF008b96 #FF80c5ca #FF5EA3A8 @@ -88,7 +81,7 @@ #E0E0E0 #BDBDBD - + #49639f #df4a32 diff --git a/catroid/src/main/res/values/strings.xml b/catroid/src/main/res/values/strings.xml index d6d87e82266..f657fc7b51e 100644 --- a/catroid/src/main/res/values/strings.xml +++ b/catroid/src/main/res/values/strings.xml @@ -1117,12 +1117,12 @@ Vibrate for Ask and store written answer in - \'What\'s your name?\' + What\'s your name? "Enter your answer:" Submit answer Ask and store spoken answer in - \'What\'s your name?\' + What\'s your name? @@ -1143,7 +1143,7 @@ Set volume to Change volume by Speak - "Hello!" + Hello! and wait @@ -1202,9 +1202,9 @@ Set variable Change variable New… - "add comment here…" - "Hmmmm!" - "Hello!" + add comment here… + Hmmmm! + Hello! "new message" Add to list @@ -1515,8 +1515,6 @@ Emergency AR.Drone 2.0 Turn AR.Drone 2.0 right Turn AR.Drone 2.0 left - Turn AR.Drone 2.0 left [angle] - Turn AR.Drone 2.0 right [angle] Set config AR.Drone 2.0 Switch AR.Drone 2.0 camera Altitude limit diff --git a/catroid/src/main/res/values/styles.xml b/catroid/src/main/res/values/styles.xml index 9e715f19551..d44eed69ba5 100644 --- a/catroid/src/main/res/values/styles.xml +++ b/catroid/src/main/res/values/styles.xml @@ -148,7 +148,7 @@ false false @dimen/brick_edit_text_and_prototype_text_view_minimum_width - end + center_horizontal 1 center_vertical wrap_content @@ -157,7 +157,7 @@ end - + + - @@ -142,28 +158,14 @@ 1 - - - - - diff --git a/catroid/src/main/res/values/styles_accessibility.xml b/catroid/src/main/res/values/styles_accessibility.xml index 71b1db6264a..cc505a0e6c9 100644 --- a/catroid/src/main/res/values/styles_accessibility.xml +++ b/catroid/src/main/res/values/styles_accessibility.xml @@ -42,7 +42,7 @@ 0 3 - +