bjgf issueshttps://gitlab.bluej.org/bluej/bjgf/-/issues2015-11-21T16:40:46Zhttps://gitlab.bluej.org/bluej/bjgf/-/issues/1401[GREENFOOT-57] NPE when creating new subclass2015-11-21T16:40:46ZMichael Kölling[GREENFOOT-57] NPE when creating new subclassteps to reproduce:
\\- rename one of the existing Actor classes with the editor and save the class
\\- create a new subclass of an Actor class
This error will be printed:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerExc...teps to reproduce:
\\- rename one of the existing Actor classes with the editor and save the class
\\- create a new subclass of an Actor class
This error will be printed:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at
greenfoot.gui.classbrowser.ClassBrowser.createClassHierarchyComponent(ClassBrowser.java:220)
at
greenfoot.gui.classbrowser.ClassBrowser.createClassHierarchyComponent(ClassBrowser.java:233)
at
greenfoot.gui.classbrowser.ClassBrowser.updateLayout(ClassBrowser.java:135)
at
greenfoot.gui.classbrowser.ClassBrowser.addClass(ClassBrowser.java:84)
at
...
---
**Issue metadata**
- Issue type: Bug
- Priority: Low
- Fix versions: 1.4.1https://gitlab.bluej.org/bluej/bjgf/-/issues/1400[GREENFOOT-56] Make greenfoot in scenarios read only2015-11-21T16:40:46ZMichael Kölling[GREENFOOT-56] Make greenfoot in scenarios read onlyTo avoid people accidently deleting it.
---
**Issue metadata**
- Issue type: Task
- Priority: Low
- Fix versions: 1.5.0To avoid people accidently deleting it.
---
**Issue metadata**
- Issue type: Task
- Priority: Low
- Fix versions: 1.5.0Davin McCallDavin McCallhttps://gitlab.bluej.org/bluej/bjgf/-/issues/1399[GREENFOOT-55] Placing actor with a parameter in it's constructor: position w...2015-11-21T16:40:46ZMichael Kölling[GREENFOOT-55] Placing actor with a parameter in it's constructor: position wrongWhen placing an actor which requires a parameter in it's constructor, it will
not be placed where you click but where the mouse is positioned after you have
entered the parameter in the Actor's 'create object' window.
---
**Issue metad...When placing an actor which requires a parameter in it's constructor, it will
not be placed where you click but where the mouse is positioned after you have
entered the parameter in the Actor's 'create object' window.
---
**Issue metadata**
- Issue type: Bug
- Priority: Low
- Fix versions: 1.3.0Davin McCallDavin McCallhttps://gitlab.bluej.org/bluej/bjgf/-/issues/1398[GREENFOOT-54] Changing date makes it imposible to compile2015-11-21T16:40:46ZMichael Kölling[GREENFOOT-54] Changing date makes it imposible to compileIf the date of the computer is changed to sometime in the past, it is not
possible to compile a project that has already been compiled.
I have not confirmed this bug yet. Was reported by Joe.
---
**Issue metadata**
- Issue type: Bug
...If the date of the computer is changed to sometime in the past, it is not
possible to compile a project that has already been compiled.
I have not confirmed this bug yet. Was reported by Joe.
---
**Issue metadata**
- Issue type: Bug
- Priority: Low
- Fix versions: 1.5.0Davin McCallDavin McCallhttps://gitlab.bluej.org/bluej/bjgf/-/issues/1397[GREENFOOT-53] Terminate button in debugger shuts down Greenfoot2015-11-21T16:40:46ZMichael Kölling[GREENFOOT-53] Terminate button in debugger shuts down GreenfootThe terminate button in the debugger shuts down the greenfoot VM. It should not
do that. Maybe it should be removed altogether, or be changed to at
shut-down-greenfoot since the greenfoot UI is locked while debugging.
---
**Issue metad...The terminate button in the debugger shuts down the greenfoot VM. It should not
do that. Maybe it should be removed altogether, or be changed to at
shut-down-greenfoot since the greenfoot UI is locked while debugging.
---
**Issue metadata**
- Issue type: Bug
- Priority: Medium
- Fix versions: 2.0Neil BrownNeil Brownhttps://gitlab.bluej.org/bluej/bjgf/-/issues/1396[GREENFOOT-52] Add support for debugging2015-11-21T16:40:46ZMichael Kölling[GREENFOOT-52] Add support for debuggingShould be possible to activate/show the debugger somehow.
---
**Issue metadata**
- Issue type: Task
- Priority: Medium
- Fix versions: 2.0Should be possible to activate/show the debugger somehow.
---
**Issue metadata**
- Issue type: Task
- Priority: Medium
- Fix versions: 2.0Neil BrownNeil Brownhttps://gitlab.bluej.org/bluej/bjgf/-/issues/1395[GREENFOOT-51] Visualise non-actor objects ("normal" classes).2015-11-21T16:40:46ZMichael Kölling[GREENFOOT-51] Visualise non-actor objects ("normal" classes).Greenfoot should be able to visualise objects that are not subclasses of Actor
or World.
[maybe not? \-mk-|or]
---
**Issue metadata**
- Issue type: Task
- Priority: Low
- Fix versions: 3.0.0Greenfoot should be able to visualise objects that are not subclasses of Actor
or World.
[maybe not? \-mk-|or]
---
**Issue metadata**
- Issue type: Task
- Priority: Low
- Fix versions: 3.0.0Davin McCallDavin McCallhttps://gitlab.bluej.org/bluej/bjgf/-/issues/1394[GREENFOOT-50] Export to MyGame should include screen thumbnail2015-11-21T16:40:46ZMichael Kölling[GREENFOOT-50] Export to MyGame should include screen thumbnailwe should automatically take a screen image, reduce it, and submit it to the
web server
---
**Issue metadata**
- Issue type: Task
- Priority: Medium
- Fix versions: 1.4.1we should automatically take a screen image, reduce it, and submit it to the
web server
---
**Issue metadata**
- Issue type: Task
- Priority: Medium
- Fix versions: 1.4.1https://gitlab.bluej.org/bluej/bjgf/-/issues/1393[GREENFOOT-49] Save the state of the world2015-11-21T16:40:46ZMichael Kölling[GREENFOOT-49] Save the state of the worldAdd functionality to save the state of the world.
A discussion of some of the different possible solutions follows below. Headings marked with a * indicates that it is currently a the most likely solution.
h1. How to get the state of t...Add functionality to save the state of the world.
A discussion of some of the different possible solutions follows below. Headings marked with a * indicates that it is currently a the most likely solution.
h1. How to get the state of the world
h2. Serializing
Breaks if the class implementation is changed.
h2. * Recording
Record object creation and method invocation like it is done in JUnit for BlueJ. This is the better solution
h1. How to store the state
h2. A separate setup file
We could have the interactions stored in a separate file somewhere. This would make it difficult for the suer to modify it though, and would seem a bit like "magic".
h2. * In source code
We could create a setup() method in the world class that was last instantiated and put the source code in there. Would work well with the previous decision of using recording to capture the state since that can easily be translated into source code. Also, this allows the user to modify the generated code easily if desired.
After saving the state of the world, the world class that was set up could look something like this:
{noformat}
public class MyWorld extends World
{
public MyWorld()
{
super(20,20,20);
...
setup(); //added by greenfoot. What if it is already here? Maybe we should not add it automatically?
}
/**
* Sets up the world with objects. This method has been generated by Greenfoot
* and modifying might result in strange behaviour. If custom setup is needed, put
* it in a separate method that you call from the constructor.
*/
private void setup()
{
Car car1 = new Car();
addObject(car1, 23, 43);
car1.setRotation(45);
}
}
{noformat}
h1. How to handle previously created state
h2. Wipe everything
We could just ignore everything that was previously saved. This is not desirable though, since the user would not be able to edit an existing save.
h2. Replay
We ask the user if he wants to reuse his existing setup and then rerun the setup method of the world and track what invocation are made (or just construct a new world which should also call the setup method?)
Would overwrite users modifcations. For instance if the user introduced randomness, if-statements or loops, only the outcome of these would be recorded, which would result in different behaviour (for the randomness, it would no longer be random) or ugly code (loops would be expanded into individual lines).
We could argue that the user should not modify this code, and add his "random" or looped object creation somewhere else \\- however, how would we avoid tracking these custom additions? I guess we would have to make sure that we only track things done in the setup() method.
It would allow for method invocations. And only break setups that has been modified by the user.
h2. Reuse source
Again, we ask the user if he wants to reuse his existing setup. If so, we make reuse the source code in the setup() method and just add the new interactions after this code.
h3. Variable names
Selecting names for variables will be difficult though. We could count number of instances of given class and start numbering from there. This will work if not edited, but could potentially break if the user renamed variables (but that should be rare enough that we don't care). To do this, we would have to track objects that are deleted and remove their instantiation so they don't count towards the numbering.
h3. Changing objects from previous recording session
Since we are just reusing the source code, we don't actually know the variable names of the previous objects, so we don't know how to reference them (could be out of scope too, if user modified).
Prohibit changing objects from previous states::
bq. We could prohibit modifications of these object. Then we should somehow indicate this by greying out those objects and make method invocation/move/delete inaccessible.
Allow changing::
bq. Try to figure out a way to reference them (getOneObjectAt?).
h1. When to record
h2. Record everything
h2. Record until act
It was suggested that it should only be allowed to save the state in the time between a compile and until act() is called the first time. That probably makes sense... or maybe it should just only record in that period and allow saving at any later time (until compile)
h2. * Explicitly start recording
Have a special recording mode which is activated by the user. When starting this mode, the world should be re-instantiated after the user has accepted to do so. We have to choose this if we need to prohibit modifying objects that was added in a previous state (see above).
h1. What is recorded?
* Interactive construction of objects and addition to the world.
* Interactive method calling
* Interactive moving of objects
* Interactive deletion of objects
---
**Issue metadata**
- Issue type: Task
- Priority: Medium
- Fix versions: 2.0Neil BrownNeil Brownhttps://gitlab.bluej.org/bluej/bjgf/-/issues/1392[GREENFOOT-48] System.exit() should stop simulation loop2015-11-21T16:40:46ZMichael Kölling[GREENFOOT-48] System.exit() should stop simulation loopSystem.exit should not be allowed to close the simulation.
Instead, it should just stop the execution.
---
**Issue metadata**
- Issue type: Bug
- Priority: Low
- Fix versions: 2.0System.exit should not be allowed to close the simulation.
Instead, it should just stop the execution.
---
**Issue metadata**
- Issue type: Bug
- Priority: Low
- Fix versions: 2.0Neil BrownNeil Brownhttps://gitlab.bluej.org/bluej/bjgf/-/issues/1391[GREENFOOT-47] Change to hand cursor when mouse is over an Actor.2015-11-21T16:40:46ZMichael Kölling[GREENFOOT-47] Change to hand cursor when mouse is over an Actor.To indicate that it can be moved.
---
**Issue metadata**
- Issue type: Task
- Priority: Low
- Fix versions: 2.0To indicate that it can be moved.
---
**Issue metadata**
- Issue type: Task
- Priority: Low
- Fix versions: 2.0Neil BrownNeil Brownhttps://gitlab.bluej.org/bluej/bjgf/-/issues/1390[GREENFOOT-46] When changing superclass image, subclasses should be updated2015-11-21T16:40:46ZMichael Kölling[GREENFOOT-46] When changing superclass image, subclasses should be updatedIf you change a class' image, subclasses will not be updated with this image
until a recompile is performed.
---
**Issue metadata**
- Issue type: Bug
- Priority: Low
- Fix versions: 1.4.5If you change a class' image, subclasses will not be updated with this image
until a recompile is performed.
---
**Issue metadata**
- Issue type: Bug
- Priority: Low
- Fix versions: 1.4.5https://gitlab.bluej.org/bluej/bjgf/-/issues/1389[GREENFOOT-45] Integrate with system image editor2015-11-21T16:40:46ZMichael Kölling[GREENFOOT-45] Integrate with system image editorIntegrate greenfoot with external image editors so that you can open the
external editor from Greenfoot
with the given image.
---
**Issue metadata**
- Issue type: Task
- Priority: Medium
- Fix versions: 2.0.1Integrate greenfoot with external image editors so that you can open the
external editor from Greenfoot
with the given image.
---
**Issue metadata**
- Issue type: Task
- Priority: Medium
- Fix versions: 2.0.1Neil BrownNeil Brownhttps://gitlab.bluej.org/bluej/bjgf/-/issues/1388[GREENFOOT-44] Scale and crop class images2015-11-21T16:40:46ZMichael Kölling[GREENFOOT-44] Scale and crop class imagesIn some scenarios that are strictly cell-based (like gridworld) it would be
convenient to be able to resize
class images. OS X has a really nice UI to do this in the image selector for
iChat which we could use for
inspiration.
---
**...In some scenarios that are strictly cell-based (like gridworld) it would be
convenient to be able to resize
class images. OS X has a really nice UI to do this in the image selector for
iChat which we could use for
inspiration.
---
**Issue metadata**
- Issue type: Task
- Priority: Medium
- Fix versions: 2.0Neil BrownNeil Brownhttps://gitlab.bluej.org/bluej/bjgf/-/issues/1387[GREENFOOT-43] Does not start when .java file is missing2015-11-21T16:40:46ZMichael Kölling[GREENFOOT-43] Does not start when .java file is missingIf a Java source file gets deleted from a greenfoot project (from outside),
greenfoot will not open the
project, but just hangs.
---
**Issue metadata**
- Issue type: Bug
- Priority: Low
- Fix versions: 1.4.5If a Java source file gets deleted from a greenfoot project (from outside),
greenfoot will not open the
project, but just hangs.
---
**Issue metadata**
- Issue type: Bug
- Priority: Low
- Fix versions: 1.4.5https://gitlab.bluej.org/bluej/bjgf/-/issues/1386[GREENFOOT-42] Network support2015-11-21T16:40:46ZMichael Kölling[GREENFOOT-42] Network supportSupport networking. It would be nice to have a simple way to create some sort
of
multiplayer games easily. For instance, if two (or more?) users have a shared
world in which they can put in their own objects in order to compete with each...Support networking. It would be nice to have a simple way to create some sort
of
multiplayer games easily. For instance, if two (or more?) users have a shared
world in which they can put in their own objects in order to compete with each
other (like robot wars, ant wars).
This might be a good bachelor/master thesis.
---
**Issue metadata**
- Issue type: Task
- Priority: Medium
- Fix versions: 3.0.0Davin McCallDavin McCallhttps://gitlab.bluej.org/bluej/bjgf/-/issues/1385[GREENFOOT-41] Move classes in the class browser2015-11-21T16:40:46ZMichael Kölling[GREENFOOT-41] Move classes in the class browserIt would be nice to be able to move classes in the classbrowser. This can be
divided into two cases:
1) Moving just for the sake of rearranging the order in which the classes are
displayed
2) Moving a class to another hierachy \\- givi...It would be nice to be able to move classes in the classbrowser. This can be
divided into two cases:
1) Moving just for the sake of rearranging the order in which the classes are
displayed
2) Moving a class to another hierachy \\- giving it a new super class.
\-\-
Changing the super class is now supported. Changing the super class in the
editor will be reflected in the class browser
---
**Issue metadata**
- Issue type: Task
- Priority: Medium
- Fix versions: 3.0.0https://gitlab.bluej.org/bluej/bjgf/-/issues/1384[GREENFOOT-40] Create new scenario: evolution2015-11-21T16:40:46ZMichael Kölling[GREENFOOT-40] Create new scenario: evolutionCreate a scenario to do some evolutionary algorhithms to develop behaviour.
Maybe in combination with the boids/flocking scenario...
---
**Issue metadata**
- Issue type: Task
- Priority: Low
- Fix versions: 1.4.6Create a scenario to do some evolutionary algorhithms to develop behaviour.
Maybe in combination with the boids/flocking scenario...
---
**Issue metadata**
- Issue type: Task
- Priority: Low
- Fix versions: 1.4.6https://gitlab.bluej.org/bluej/bjgf/-/issues/1383[GREENFOOT-39] Objects from the world as parameters for methods2015-11-21T16:40:46ZMichael Kölling[GREENFOOT-39] Objects from the world as parameters for methodsWhen a method call requires a parameter it should be possible to select an
object from the object world as parameter.
At the moment this is possible with a few quirks:
1) invoke the inspector menu of the object that should be passed a...When a method call requires a parameter it should be possible to select an
object from the object world as parameter.
At the moment this is possible with a few quirks:
1) invoke the inspector menu of the object that should be passed as parameter
in order to find the name of the object
2) type in the name of the obejct in the method call dialog
In greenfoot the user doesn't work with object names as in BlueJ and therefor
the above solution is not good.
Instead, it should be possible to click on the object that should be the
parameter. Not sure what should be shown in the method call dialog after an
obejct has been clicked \\- the image of the object maybe (what if we have several
objects of the same class) ?
\-\-
Objects do not have names in greenfoot\!
When clicking an object it should show an icon representing the object. This icon should be treated as any
other character in the textfield of the method invocation dialog.
The icon should show the image for the object if it is an actor. Possibly with the location overlayed.
If it is a non-actor object it should just show a red blob (BlueJ-style object, but without name). This will be
needed so rarely that it doesn't really matter that you can't distinguish objects of the same class.
\-\-
Step 1 of this is now done:
It now shows the name of the object in the dialog like in BlueJ
Step 2 is to show the icon.
---
**Issue metadata**
- Issue type: Task
- Priority: LowMichael KöllingMichael Köllinghttps://gitlab.bluej.org/bluej/bjgf/-/issues/1382[GREENFOOT-38] Show Wait cursor when greenfoot is busy2015-11-21T16:40:46ZMichael Kölling[GREENFOOT-38] Show Wait cursor when greenfoot is busyWhen greenfoot is working for a longer period of time, it should chagne the
cursor to a wait cursor. Or maybe another indication of that the program is
still running.
One example is populating the forest-fire scenario which takes quite ...When greenfoot is working for a longer period of time, it should chagne the
cursor to a wait cursor. Or maybe another indication of that the program is
still running.
One example is populating the forest-fire scenario which takes quite a while.
In general it should show the wait cursor when invoking any user written methods
that will block the rest of the program.
---
**Issue metadata**
- Issue type: Bug
- Priority: Low
- Fix versions: 3.0.0Davin McCallDavin McCall