Skip to content

Commit 9f7adca

Browse files
committed
- ScriptEngine update
- GUI update - Bug fixes ZeroLuck git-svn-id: http://svn.code.sf.net/p/jblocks/code-0/trunk@119 9daefd43-015a-43da-9b33-cb4dc19dcf47
1 parent 66dba0d commit 9f7adca

File tree

9 files changed

+218
-46
lines changed

9 files changed

+218
-46
lines changed

org/jblocks/JBlocks.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
import java.awt.Component;
55
import java.awt.Container;
66
import java.awt.Dimension;
7-
import java.awt.Image;
8-
import java.awt.Toolkit;
97
import java.awt.image.BufferedImage;
108
import java.io.IOException;
119
import java.io.InputStream;
@@ -37,6 +35,7 @@
3735
import org.jblocks.scriptengine.IScriptEngine.ScriptEngineListener;
3836
import org.jblocks.scriptengine.IScriptThread;
3937
import org.jblocks.scriptengine.NativeBlock;
38+
import org.jblocks.scriptengine.Parameters;
4039
import org.jblocks.stage.ImageSprite;
4140
import org.jblocks.stage.SpriteData;
4241

@@ -58,6 +57,7 @@
5857
public final class JBlocks {
5958

6059
private static final int GREEN_FLAG_PRESSED_ID = 200 + 1;
60+
private static final int CHANGE_VARIABLE_BY_ID = 200 + 2;
6161
private final JBlocksPane gui;
6262
private final JDragPane drag;
6363
private final Map<Long, BlockModel> blockLib;
@@ -192,6 +192,25 @@ public Object evaluate(Object ctx, Object... param) {
192192
installBlock(BlockModel.createModel("boolean", "Operators", "not%{b}",
193193
scriptEngine.getDefaultBlock(Default.NOT)));
194194
installBlock(BlockModel.createModel("reporter", "Operators", "script%{s}", scriptEngine.getDefaultBlock(Default.THE_SCRIPT)));
195+
196+
installBlock(BlockModel.createModel("command", "Variables", "change %{v} by %{t}", new NativeBlock(2, CHANGE_VARIABLE_BY_ID) {
197+
198+
@Override
199+
public Object evaluate(Object ctx, Object... param) {
200+
Map vars = Parameters.getVariablesForContext(ctx);
201+
Object val = vars.get(param[0]);
202+
Object add = param[1];
203+
204+
if (val != null && add != null) {
205+
if (val instanceof Integer && add instanceof Integer) {
206+
vars.put(param[0], (Integer) val + (Integer) add);
207+
} else {
208+
vars.put(param[0], Parameters.asDouble(val) + Parameters.asDouble(add));
209+
}
210+
}
211+
return null;
212+
}
213+
}));
195214
}
196215

197216
/**

org/jblocks/JBlocksLauncher.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
*/
1919
public class JBlocksLauncher implements Runnable {
2020

21-
private static final String VERSION = "0.5.105";
21+
private static final String VERSION = "0.5.118";
2222

2323
/**
2424
* This is the standalone main method
@@ -36,7 +36,6 @@ public void run() {
3636
splash.setTitle("JBlocks is loading...");
3737
splash.setAlwaysOnTop(true);
3838
splash.setText("JBlocks " + VERSION + " is starting...");
39-
splash.setVisible(true);
4039

4140
JBlocksPane.setLaF();
4241

org/jblocks/editor/AbstrBlock.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,7 @@ public boolean isDraggable() {
423423
*/
424424
public void tryToExecute() {
425425
JBlocks context = JBlocks.getContextForComponent(this);
426-
if (context != null) {
426+
if (context != null && model != null && model.getCode() != null) {
427427
try {
428428
IScriptEngine eng = context.getScriptEngine();
429429
if (!(this instanceof Puzzle)) {

org/jblocks/editor/JPopupBlockMenu.java

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import org.jblocks.gui.JDragPane;
3636
import org.jblocks.scriptengine.Block;
3737
import org.jblocks.scriptengine.ByobBlock;
38+
import org.jblocks.scriptengine.CodeIO;
3839
import org.jblocks.scriptengine.NativeBlock;
3940
import org.jblocks.scriptengine.StorableNativeBlock;
4041
import org.jblocks.scriptengine.js.impl.JsBeautifier;
@@ -100,6 +101,7 @@ public JPopupBlockMenu(AbstrBlock b) {
100101
if (code instanceof ByobBlock || code instanceof StorableNativeBlock) {
101102
this.addSeparator();
102103
this.add("edit").addActionListener(this);
104+
this.add("save block").addActionListener(this);
103105
}
104106
}
105107
}
@@ -304,8 +306,8 @@ public void actionPerformed(ActionEvent ae) {
304306

305307
private void saveScript() {
306308
final JBlocks ctx = JBlocks.getContextForComponent(parent);
307-
final JFileChooser ch = showFileChooser("Save script");
308-
ch.setFileFilter(SwingUtils.createFilter(new String[]{"jbs"}, "JBlocks script files (JBS)"));
309+
final JFileChooser ch = showFileChooser("Save script...");
310+
ch.setFileFilter(SwingUtils.createFilter(new String[]{"jbs"}, "JBlocks script files (.jbs)"));
309311
ch.addActionListener(new ActionListener() {
310312

311313
@Override
@@ -327,14 +329,39 @@ public void actionPerformed(ActionEvent ae) {
327329
}
328330
});
329331
}
330-
332+
333+
private void saveBlock() {
334+
final JBlocks ctx = JBlocks.getContextForComponent(parent);
335+
final JFileChooser ch = showFileChooser("Save block...");
336+
ch.setFileFilter(SwingUtils.createFilter(new String[]{"jbb"}, "JBlocks block files (.jbb)"));
337+
ch.addActionListener(new ActionListener() {
338+
339+
@Override
340+
public void actionPerformed(ActionEvent ae) {
341+
if (SwingUtils.isApproveSelection(ae)) {
342+
File f = ch.getSelectedFile();
343+
if (f != null) {
344+
try {
345+
CodeIO.writeBlock(ctx, new FileOutputStream(
346+
StreamUtils.addFileExtension(f.getAbsolutePath(), "jbb")),
347+
parent.getModel());
348+
} catch (Exception io) {
349+
JOptionPane.showInternalMessageDialog(ctx.getDesktop(),
350+
"Error: Can't save the block!\n" + io, "Error",
351+
JOptionPane.ERROR_MESSAGE);
352+
}
353+
}
354+
}
355+
}
356+
});
357+
}
358+
331359
private void editBlock() {
332360
BlockModel model = parent.getModel();
333361
Block code = model.getCode();
334362
JDesktopPane desktop = JBlocks.getContextForComponent(parent).getDesktop();
335-
363+
336364
if (code instanceof ByobBlock) {
337-
338365
} else if (code instanceof StorableNativeBlock) {
339366
StorableNativeBlock st = (StorableNativeBlock) code;
340367
JCyobEditor edt = JCyobEditor.createEditEditor(model.getSyntax(), st);
@@ -363,6 +390,8 @@ public void actionPerformed(ActionEvent evt) {
363390
viewJavaScript();
364391
} else if (command.equals("edit")) {
365392
editBlock();
393+
} else if (command.equals("save block")) {
394+
saveBlock();
366395
}
367396
}
368397
}

0 commit comments

Comments
 (0)