diff options
| author | Fuwn <[email protected]> | 2026-02-12 22:33:32 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-02-12 22:33:32 -0800 |
| commit | c7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9 (patch) | |
| tree | df9f48bf128a6c0186a8e91857d6ff30fe0e9f18 /NET/worlds/scape/EditMusicDialog.java | |
| download | worldsplayer-c7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9.tar.xz worldsplayer-c7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9.zip | |
Initial commit
Diffstat (limited to 'NET/worlds/scape/EditMusicDialog.java')
| -rw-r--r-- | NET/worlds/scape/EditMusicDialog.java | 166 |
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; + } +} |