summaryrefslogtreecommitdiff
path: root/NET/worlds/scape/EditMusicDialog.java
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-02-12 22:33:32 -0800
committerFuwn <[email protected]>2026-02-12 22:33:32 -0800
commitc7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9 (patch)
treedf9f48bf128a6c0186a8e91857d6ff30fe0e9f18 /NET/worlds/scape/EditMusicDialog.java
downloadworldsplayer-c7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9.tar.xz
worldsplayer-c7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9.zip
Initial commit
Diffstat (limited to 'NET/worlds/scape/EditMusicDialog.java')
-rw-r--r--NET/worlds/scape/EditMusicDialog.java166
1 files changed, 166 insertions, 0 deletions
diff --git a/NET/worlds/scape/EditMusicDialog.java b/NET/worlds/scape/EditMusicDialog.java
new file mode 100644
index 0000000..a5720b0
--- /dev/null
+++ b/NET/worlds/scape/EditMusicDialog.java
@@ -0,0 +1,166 @@
+package NET.worlds.scape;
+
+import NET.worlds.console.Console;
+import NET.worlds.console.DialogReceiver;
+import NET.worlds.console.FileSysDialog;
+import NET.worlds.console.PolledDialog;
+import java.awt.Button;
+import java.awt.Checkbox;
+import java.awt.Font;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Label;
+import java.awt.Panel;
+import java.awt.TextField;
+
+class EditMusicDialog extends PolledDialog implements DialogReceiver {
+ private TextField nameField = new TextField(20);
+ private TextField trackField = new TextField(3);
+ private TextField midiField = new TextField(30);
+ private Button browseButton = new Button(Console.message("Browse"));
+ private Checkbox loopBox = new Checkbox(Console.message("Loop-cont"));
+ private Button okButton = new Button(Console.message("OK"));
+ private Button cancelButton = new Button(Console.message("Cancel"));
+ private MusicManagerDialog parent;
+ private MusicTrack music;
+ private String oldName;
+ private String path;
+ private static Font font = new Font(Console.message("MenuFont"), 0, 12);
+ private static Font bfont = new Font(Console.message("ButtonFont"), 0, 12);
+
+ public EditMusicDialog(MusicManagerDialog parent, MusicTrack music) {
+ super(parent, parent, music == null ? Console.message("Add-Music") : Console.message("Edit-Music"), true);
+ this.parent = parent;
+ this.music = music;
+ if (music != null) {
+ this.oldName = music.getName();
+ }
+
+ this.path = parent.getManager().getFileName().toLowerCase().replace('/', '\\');
+ this.path = this.path.substring(0, this.path.lastIndexOf(92) + 1);
+ this.ready();
+ }
+
+ @Override
+ protected void build() {
+ GridBagLayout gbag = new GridBagLayout();
+ this.setLayout(gbag);
+ GridBagConstraints c = new GridBagConstraints();
+ c.fill = 0;
+ c.anchor = 13;
+ this.add(gbag, new Label(Console.message("Name"), 2), c);
+ c.gridwidth = 0;
+ c.anchor = 17;
+ this.nameField.setFont(font);
+ this.trackField.setFont(font);
+ this.midiField.setFont(font);
+ this.browseButton.setFont(bfont);
+ this.loopBox.setFont(font);
+ this.add(gbag, this.nameField, c);
+ c.gridwidth = 1;
+ c.anchor = 13;
+ Label vt = new Label(Console.message("Virtual-track"), 2);
+ vt.setFont(font);
+ this.add(gbag, vt, c);
+ c.gridwidth = 0;
+ c.anchor = 17;
+ this.add(gbag, this.trackField, c);
+ c.gridwidth = 1;
+ c.anchor = 13;
+ Label am = new Label(Console.message("Alternate-MIDI"), 2);
+ am.setFont(font);
+ this.add(gbag, am, c);
+ c.fill = 2;
+ c.weightx = 1.0;
+ c.anchor = 17;
+ this.add(gbag, this.midiField, c);
+ c.fill = 0;
+ c.weightx = 0.0;
+ c.gridwidth = 0;
+ this.add(gbag, this.browseButton, c);
+ this.add(gbag, this.loopBox, c);
+ c.fill = 0;
+ c.anchor = 10;
+ Panel p = new Panel();
+ this.okButton.setFont(bfont);
+ this.cancelButton.setFont(bfont);
+ p.add(this.okButton);
+ p.add(this.cancelButton);
+ this.add(gbag, p, c);
+ if (this.music != null) {
+ this.nameField.setText(this.music.getName());
+ this.trackField.setText("" + this.music.getVirtTrackNumber());
+ this.midiField.setText(this.music.getMIDIFileName());
+ this.loopBox.setState(this.music.getLooping());
+ }
+ }
+
+ @Override
+ public boolean action(java.awt.Event event, Object what) {
+ Object target = event.target;
+ if (target == this.okButton && this.nameField.getText().trim().length() != 0) {
+ return this.done(true);
+ } else if (target == this.cancelButton) {
+ return this.done(false);
+ } else {
+ if (target == this.browseButton) {
+ this.dialogDisable(true);
+ new FileSysDialog(
+ Console.getFrame(),
+ this,
+ Console.message("Browse-MIDI"),
+ 0,
+ "MIDI Files|*.mid;*.midi|All Files|*.*",
+ this.path + this.midiField.getText(),
+ false
+ );
+ }
+
+ return false;
+ }
+ }
+
+ @Override
+ public synchronized void dialogDone(Object who, boolean confirmed) {
+ this.dialogDisable(false);
+ if (confirmed && who instanceof FileSysDialog) {
+ String name = ((FileSysDialog)who).fileName().toLowerCase();
+ if (name.startsWith(this.path)) {
+ this.midiField.setText(name.substring(this.path.length()));
+ }
+ }
+ }
+
+ public boolean isEditor() {
+ return this.music != null;
+ }
+
+ public MusicTrack getMusicTrack() {
+ String name = this.nameField.getText().trim();
+ int track = 0;
+
+ try {
+ track = Integer.parseInt(this.trackField.getText());
+ } catch (NumberFormatException var5) {
+ }
+
+ String midi = this.midiField.getText().trim();
+ boolean loop = this.loopBox.getState();
+ if (this.music == null) {
+ return new MusicTrack(name, track, midi, loop);
+ } else {
+ this.music.setName(name);
+ if (track != -1) {
+ this.music.setVirtTrackNumber(track);
+ }
+
+ this.music.setMIDIFileName(midi);
+ this.music.setLooping(loop);
+ return this.music;
+ }
+ }
+
+ public String getOldName() {
+ return this.oldName;
+ }
+}