mirror of
https://github.com/badvision/jace.git
synced 2024-06-06 12:29:29 +00:00
Issue #12: Added option to create empty applesoft program and added warning before trying to load program from memory.
This commit is contained in:
parent
58199776a5
commit
921ce3a0b0
|
@ -19,6 +19,8 @@ import javafx.collections.ListChangeListener;
|
||||||
import javafx.event.ActionEvent;
|
import javafx.event.ActionEvent;
|
||||||
import javafx.event.Event;
|
import javafx.event.Event;
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
|
import javafx.scene.control.Alert;
|
||||||
|
import javafx.scene.control.ButtonType;
|
||||||
import javafx.scene.control.Label;
|
import javafx.scene.control.Label;
|
||||||
import javafx.scene.control.Menu;
|
import javafx.scene.control.Menu;
|
||||||
import javafx.scene.control.MenuItem;
|
import javafx.scene.control.MenuItem;
|
||||||
|
@ -96,31 +98,42 @@ public class IdeController {
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
void newApplesoftBasicClicked(ActionEvent event) {
|
void newApplesoftBasicClicked(ActionEvent event) {
|
||||||
Program tab = createTab(DocumentType.applesoft, null);
|
Program tab = createTab(DocumentType.applesoft, null, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
void newApplesoftBasicFromMemoryClicked(ActionEvent event) {
|
||||||
|
Alert warningAlert = new Alert(Alert.AlertType.CONFIRMATION);
|
||||||
|
warningAlert.setTitle("Is Applesoft running?");
|
||||||
|
warningAlert.setContentText("If you proceed and applesoft is not running or there is no active program then the emulator might freeze. Press Cancel if you are unsure.");
|
||||||
|
Optional<ButtonType> result = warningAlert.showAndWait();
|
||||||
|
if (result.get() == ButtonType.OK) {
|
||||||
|
Program tab = createTab(DocumentType.applesoft, null, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
void newAssemblyListingClicked(ActionEvent event) {
|
void newAssemblyListingClicked(ActionEvent event) {
|
||||||
createTab(DocumentType.assembly, null);
|
createTab(DocumentType.assembly, null, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
void newHexdataClicked(ActionEvent event) {
|
void newHexdataClicked(ActionEvent event) {
|
||||||
createTab(DocumentType.hex, null);
|
createTab(DocumentType.hex, null, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
void newPlainTextClicked(ActionEvent event) {
|
void newPlainTextClicked(ActionEvent event) {
|
||||||
createTab(DocumentType.plain, null);
|
createTab(DocumentType.plain, null, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<Tab, Program> openDocuments = new HashMap<>();
|
Map<Tab, Program> openDocuments = new HashMap<>();
|
||||||
Map<Option, Object> globalOptions = new EnumMap<>(Option.class);
|
Map<Option, Object> globalOptions = new EnumMap<>(Option.class);
|
||||||
|
|
||||||
private Program createTab(DocumentType type, File document) {
|
private Program createTab(DocumentType type, File document, boolean isBlank) {
|
||||||
WebView editor = new WebView();
|
WebView editor = new WebView();
|
||||||
Program proxy = new Program(type, globalOptions);
|
Program proxy = new Program(type, globalOptions);
|
||||||
proxy.initEditor(editor, document);
|
proxy.initEditor(editor, document, isBlank);
|
||||||
Tab t = new Tab(proxy.getName(), editor);
|
Tab t = new Tab(proxy.getName(), editor);
|
||||||
tabPane.getTabs().add(t);
|
tabPane.getTabs().add(t);
|
||||||
openDocuments.put(t, proxy);
|
openDocuments.put(t, proxy);
|
||||||
|
@ -153,7 +166,7 @@ public class IdeController {
|
||||||
File file = chooser.showOpenDialog(JaceApplication.getApplication().primaryStage);
|
File file = chooser.showOpenDialog(JaceApplication.getApplication().primaryStage);
|
||||||
if (file != null && file.isFile() && file.exists()) {
|
if (file != null && file.isFile() && file.exists()) {
|
||||||
DocumentType type = DocumentType.fromFile(file);
|
DocumentType type = DocumentType.fromFile(file);
|
||||||
createTab(type, file);
|
createTab(type, file, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -105,7 +105,7 @@ public class Program {
|
||||||
return Optional.ofNullable(targetFile);
|
return Optional.ofNullable(targetFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void initEditor(WebView editor, File sourceFile) {
|
public void initEditor(WebView editor, File sourceFile, boolean isBlank) {
|
||||||
this.editor = editor;
|
this.editor = editor;
|
||||||
targetFile = sourceFile;
|
targetFile = sourceFile;
|
||||||
if (targetFile != null) {
|
if (targetFile != null) {
|
||||||
|
@ -117,7 +117,7 @@ public class Program {
|
||||||
if (newState == Worker.State.SUCCEEDED) {
|
if (newState == Worker.State.SUCCEEDED) {
|
||||||
JSObject document = (JSObject) editor.getEngine().executeScript("window");
|
JSObject document = (JSObject) editor.getEngine().executeScript("window");
|
||||||
document.setMember("java", this);
|
document.setMember("java", this);
|
||||||
Platform.runLater(this::createEditor);
|
Platform.runLater(()->createEditor(isBlank));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -132,8 +132,8 @@ public class Program {
|
||||||
editor.getEngine().load(getClass().getResource(CODEMIRROR_EDITOR).toExternalForm());
|
editor.getEngine().load(getClass().getResource(CODEMIRROR_EDITOR).toExternalForm());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void createEditor() {
|
public void createEditor(boolean isBlank) {
|
||||||
String document = targetFile == null ? getHandler().getNewDocumentContent() : getFileContents(targetFile);
|
String document = targetFile == null ? isBlank ? "" : getHandler().getNewDocumentContent() : getFileContents(targetFile);
|
||||||
String optionString = buildOptions();
|
String optionString = buildOptions();
|
||||||
editor.getEngine().executeScript("var codeMirror = CodeMirror(document.body, " + optionString + ");");
|
editor.getEngine().executeScript("var codeMirror = CodeMirror(document.body, " + optionString + ");");
|
||||||
codeMirror = (JSObject) editor.getEngine().executeScript("codeMirror");
|
codeMirror = (JSObject) editor.getEngine().executeScript("codeMirror");
|
||||||
|
|
|
@ -26,7 +26,8 @@
|
||||||
</accelerator>
|
</accelerator>
|
||||||
<items>
|
<items>
|
||||||
<MenuItem mnemonicParsing="false" onAction="#newAssemblyListingClicked" text="Assembly Listing" />
|
<MenuItem mnemonicParsing="false" onAction="#newAssemblyListingClicked" text="Assembly Listing" />
|
||||||
<MenuItem mnemonicParsing="false" onAction="#newApplesoftBasicClicked" text="Applesoft Basic Listing" />
|
<MenuItem mnemonicParsing="false" onAction="#newApplesoftBasicClicked" text="Applesoft Basic Listing (blank)" />
|
||||||
|
<MenuItem mnemonicParsing="false" onAction="#newApplesoftBasicFromMemoryClicked" text="Applesoft Basic Listing (from memory)" />
|
||||||
<MenuItem mnemonicParsing="false" onAction="#newPlainTextClicked" text="Plain Text" />
|
<MenuItem mnemonicParsing="false" onAction="#newPlainTextClicked" text="Plain Text" />
|
||||||
<MenuItem mnemonicParsing="false" onAction="#newHexdataClicked" text="Data (Hex)" />
|
<MenuItem mnemonicParsing="false" onAction="#newHexdataClicked" text="Data (Hex)" />
|
||||||
</items>
|
</items>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user