Subversion Repositories svn.mios

Rev

Rev 719 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 719 Rev 738
Line 54... Line 54...
54
import org.midibox.sidlibr.Patch;
54
import org.midibox.sidlibr.Patch;
55
import org.midibox.sidlibr.SIDLibController;
55
import org.midibox.sidlibr.SIDLibController;
56
import org.midibox.sidlibr.gui.LibraryGUI;
56
import org.midibox.sidlibr.gui.LibraryGUI;
57
import org.midibox.utils.gui.DialogOwner;
57
import org.midibox.utils.gui.DialogOwner;
58
import org.midibox.utils.gui.ImageLoader;
58
import org.midibox.utils.gui.ImageLoader;
59
import org.midibox.utils.gui.MyButtonUI;
-
 
60
import org.midibox.utils.gui.MyColoredButtonUI;
59
import org.midibox.utils.gui.MyColoredButtonUI;
61
import org.midibox.utils.gui.SplitButton;
60
import org.midibox.utils.gui.SplitButton;
62
61
63
public class SIDV2EditorGUI extends JPanel implements Observer,
62
public class SIDV2EditorGUI extends JPanel implements Observer, ActionListener,
64
        ActionListener, ItemListener {
63
        ItemListener {
65
64
66
    JCheckBoxMenuItem cbMenuItem1, cbMenuItem2, cbMenuItem3, cbMenuItem4;
65
    JCheckBoxMenuItem cbMenuItem1, cbMenuItem2, cbMenuItem3, cbMenuItem4;
67
    JToggleButton b1, b2, b3, b4;
66
    JToggleButton b1, b2, b3, b4;
68
   
67
69
    JMenuItem initL, initB, initD, initM, initE;
68
    JMenuItem initL, initB, initD, initM, initE;
Line 98... Line 97...
98
        add(libraryGUI, BorderLayout.CENTER);
97
        add(libraryGUI, BorderLayout.CENTER);
99
       
98
100
        sidLibController.addObserver(this);
99
        sidLibController.addObserver(this);
101
       
100
102
        mbsidV2EditorGUI = new MBSIDV2EditorGUI();
101
        mbsidV2EditorGUI = new MBSIDV2EditorGUI();
103
        mbsidV2EditorGUIDialog = new JDialog(DialogOwner.getFrame(),"MidiBox SID V2 Editor - no patch selected", true);
102
        mbsidV2EditorGUIDialog = new JDialog(DialogOwner.getFrame(),
-
 
103
                "MidiBox SID V2 Editor - no patch selected", true);
104
104
105
        mbsidV2EditorGUIDialog
105
        mbsidV2EditorGUIDialog
106
                .setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
106
                .setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
107
        mbsidV2EditorGUIDialog.setResizable(false);
107
        mbsidV2EditorGUIDialog.setResizable(false);
108
108
Line 134... Line 134...
134
134
135
        mbsidV2EditorGUIDialog.setContentPane(mbsidV2EditorGUI);
135
        mbsidV2EditorGUIDialog.setContentPane(mbsidV2EditorGUI);
136
136
137
        if (sidv2librarian.getMidiDeviceRouting() != null) {
137
        if (sidv2librarian.getMidiDeviceRouting() != null) {
138
            // Setup midiDevice routing GUI
138
            // Setup midiDevice routing GUI
139
            midiDeviceRoutingGUI = new SIDV2EditorMidiDeviceRoutingGUI(sidv2librarian);
139
            midiDeviceRoutingGUI = new SIDV2EditorMidiDeviceRoutingGUI(
-
 
140
                    sidv2librarian);
140
            // Setup Midi Routing Dialog
141
            // Setup Midi Routing Dialog
141
            midiRoutingDialog = new JDialog(DialogOwner.getFrame(),"Midi Routing", true);
142
            midiRoutingDialog = new JDialog(DialogOwner.getFrame(),
-
 
143
                    "Midi Routing", true);
142
            midiRoutingDialog.setContentPane(midiDeviceRoutingGUI);
144
            midiRoutingDialog.setContentPane(midiDeviceRoutingGUI);
143
            midiRoutingDialog.pack();
145
            midiRoutingDialog.pack();
144
        }
146
        }
145
    }
147
    }
146
148
147
    public SIDV2Editor getSidv2librarian() {
149
    public SIDV2Editor getSidv2librarian() {
148
        return sidv2librarian;
150
        return sidv2librarian;
149
    }
151
    }
150
152
151
    private void showEditGUI() {
153
    private void showEditGUI() {
152
        SIDEditController sidEditController = mbsidV2EditorGUI.getSIDEditController();
154
        SIDEditController sidEditController = mbsidV2EditorGUI
-
 
155
                .getSIDEditController();
153
        if (sidEditController != null) {
156
        if (sidEditController != null) {
154
            sidEditController.deleteObserver(this);
157
            sidEditController.deleteObserver(this);
155
        }
158
        }
156
        sidv2librarian.reconnectAllDevices(); // java.sound.midi SysEx bug workaround
159
        sidv2librarian.reconnectAllDevices(); // java.sound.midi SysEx bug
-
 
160
                                                // workaround
157
161
158
        sidEditController = new SIDEditController(sidLibController.getCurrentPatch()); 
162
        sidEditController = new SIDEditController(sidLibController
-
 
163
                .getCurrentPatch());
159
        sidEditController.addObserver(this);
164
        sidEditController.addObserver(this);
160
        mbsidV2EditorGUI.editThis(sidEditController, sidLibController.getCores());
165
        mbsidV2EditorGUI.editThis(sidEditController, sidLibController
-
 
166
                .getCores());
161
        Patch p = mbsidV2EditorGUI.getSIDEditController().getPatch();
167
        Patch p = mbsidV2EditorGUI.getSIDEditController().getPatch();
162
        if (p.isEnsemble()) {
168
        if (p.isEnsemble()) {
163
            mbsidV2EditorGUIDialog.setTitle("MidiBox SID V2 Editor - " + "Ensemble " + intToStr3(sidLibController.getCurrentPatchNumber()+1));
169
            mbsidV2EditorGUIDialog.setTitle("MidiBox SID V2 Editor - "
-
 
170
                    + "Ensemble "
-
 
171
                    + intToStr3(sidLibController.getCurrentPatchNumber() + 1));
164
        } else {
172
        } else {
165
            mbsidV2EditorGUIDialog.setTitle("MidiBox SID V2 Editor - " + p.getEngineStr() + " engine: " + p.getPatchName());
173
            mbsidV2EditorGUIDialog.setTitle("MidiBox SID V2 Editor - "
-
 
174
                    + p.getEngineStr() + " engine: " + p.getPatchName());
166
        }
175
        }
167
        mbsidV2EditorGUIDialog.pack();
176
        mbsidV2EditorGUIDialog.pack();
168
        mbsidV2EditorGUIDialog.setLocationRelativeTo(this);
177
        mbsidV2EditorGUIDialog.setLocationRelativeTo(this);
169
        mbsidV2EditorGUIDialog.setVisible(true);
178
        mbsidV2EditorGUIDialog.setVisible(true);
170
    }
179
    }
Line 188... Line 197...
188
197
189
    public void update(Observable observable, Object object) {
198
    public void update(Observable observable, Object object) {
190
        if (object == "Edit") {
199
        if (object == "Edit") {
191
            showEditGUI();
200
            showEditGUI();
192
        } else if (object == "Save editor patch") {
201
        } else if (object == "Save editor patch") {
193
            sidLibController.setPatchAt(mbsidV2EditorGUI.getSIDEditController().getPatch(), sidLibController.getCurrentPatchNumber(),sidLibController.getCurrentBankNumber());
202
            sidLibController.setPatchAt(mbsidV2EditorGUI.getSIDEditController()
-
 
203
                    .getPatch(), sidLibController.getCurrentPatchNumber(),
-
 
204
                    sidLibController.getCurrentBankNumber());
194
        } else if (object == "Cores changes") {
205
        } else if (object == "Cores changes") {
195
            updateCoreEnabling();          
206
            updateCoreEnabling();
196
        } else if (object == "Bank changed") {
207
        } else if (object == "Bank changed") {
197
            updateInitEnabling();
208
            updateInitEnabling();
198
        }      
209
        }
Line 223... Line 234...
223
        initButM.setEnabled(!b);
234
        initButM.setEnabled(!b);
224
        initButE.setEnabled(b);
235
        initButE.setEnabled(b);
225
    }
236
    }
226
237
227
    public void itemStateChanged(ItemEvent e) {
238
    public void itemStateChanged(ItemEvent e) {
-
 
239
        if ((e.getItem() == cbMenuItem1) || (e.getItem() == cbMenuItem2)
228
        if ((e.getItem() == cbMenuItem1) || (e.getItem() == cbMenuItem2) || (e.getItem() == cbMenuItem3) || (e.getItem() == cbMenuItem4)) {
240
                || (e.getItem() == cbMenuItem3) || (e.getItem() == cbMenuItem4)) {
229
            int tempVal = 0;
241
            int tempVal = 0;
230
            if (cbMenuItem1.isSelected()) {tempVal += 1;}
242
            if (cbMenuItem1.isSelected()) {
-
 
243
                tempVal += 1;
-
 
244
            }
231
            if (cbMenuItem2.isSelected()) {tempVal += 2;}
245
            if (cbMenuItem2.isSelected()) {
-
 
246
                tempVal += 2;
-
 
247
            }
232
            if (cbMenuItem3.isSelected()) {tempVal += 4;}
248
            if (cbMenuItem3.isSelected()) {
-
 
249
                tempVal += 4;
-
 
250
            }
233
            if (cbMenuItem4.isSelected()) {tempVal += 8;}
251
            if (cbMenuItem4.isSelected()) {
-
 
252
                tempVal += 8;
-
 
253
            }
234
            sidLibController.setCores(tempVal);
254
            sidLibController.setCores(tempVal);
235
            updateCoreEnabling();
255
            updateCoreEnabling();
236
        } else if ((e.getItem() == b1) || (e.getItem() == b2) || (e.getItem() == b3) || (e.getItem() == b4)) {
256
        } else if ((e.getItem() == b1) || (e.getItem() == b2)
-
 
257
                || (e.getItem() == b3) || (e.getItem() == b4)) {
237
            int tempVal = 0;
258
            int tempVal = 0;
238
            if (b1.isSelected()) {tempVal += 1;}
259
            if (b1.isSelected()) {
-
 
260
                tempVal += 1;
-
 
261
            }
239
            if (b2.isSelected()) {tempVal += 2;}
262
            if (b2.isSelected()) {
-
 
263
                tempVal += 2;
-
 
264
            }
240
            if (b3.isSelected()) {tempVal += 4;}
265
            if (b3.isSelected()) {
-
 
266
                tempVal += 4;
-
 
267
            }
241
            if (b4.isSelected()) {tempVal += 8;}
268
            if (b4.isSelected()) {
-
 
269
                tempVal += 8;
-
 
270
            }
242
            sidLibController.setCores(tempVal);
271
            sidLibController.setCores(tempVal);
243
            updateCoreEnabling();
272
            updateCoreEnabling();
244
        }
273
        }
245
    }
274
    }
246
275
Line 426... Line 455...
426
        cbMenuItem4.setMnemonic(KeyEvent.VK_4);
455
        cbMenuItem4.setMnemonic(KeyEvent.VK_4);
427
        cbMenuItem4.addItemListener(this);
456
        cbMenuItem4.addItemListener(this);
428
        menu.add(cbMenuItem4);
457
        menu.add(cbMenuItem4);
429
       
458
430
        /*
459
        /*
431
        menu.addSeparator();
-
 
432
        menuItem = new JMenuItem("Scan hardware", KeyEvent.VK_S);
460
         * menu.addSeparator(); menuItem = new JMenuItem("Scan hardware",
433
        menuItem.setActionCommand("Scan hardware");
461
         * KeyEvent.VK_S); menuItem.setActionCommand("Scan hardware");
434
        menuItem.addActionListener(this);
462
         * menuItem.addActionListener(this); menu.add(menuItem);
435
        menu.add(menuItem);
-
 
436
        */ 
463
         */
437
       
464
438
        updateCoreEnabling();
465
        updateCoreEnabling();
439
        updateInitEnabling();
466
        updateInitEnabling();
440
       
467
Line 443... Line 470...
443
470
444
    private JToolBar createToolbar() {
471
    private JToolBar createToolbar() {
445
        JToolBar toolBar = new JToolBar();
472
        JToolBar toolBar = new JToolBar();
446
        toolBar.setFloatable(false);
473
        toolBar.setFloatable(false);
447
        initButL = makeButton("init_lead.png", "Init LEAD patch", "Init LEAD");
474
        initButL = makeButton("init_lead.png", "Init LEAD patch", "Init LEAD");
448
        initButB = makeButton("init_bassline.png", "Init BASSLINE patch", "Init BASSLINE");
475
        initButB = makeButton("init_bassline.png", "Init BASSLINE patch",
-
 
476
                "Init BASSLINE");
449
        initButD = makeButton("init_drum.png", "Init DRUM patch", "Init DRUM");
477
        initButD = makeButton("init_drum.png", "Init DRUM patch", "Init DRUM");
450
        initButM = makeButton("init_multi.png", "Init MULTI patch", "Init MULTI");
478
        initButM = makeButton("init_multi.png", "Init MULTI patch",
-
 
479
                "Init MULTI");
451
        initButE = makeButton("init_ensemble.png", "Init ensemble", "Init ENSEMBLE");      
480
        initButE = makeButton("init_ensemble.png", "Init ensemble",
-
 
481
                "Init ENSEMBLE");
452
        toolBar.add(initButL);
482
        toolBar.add(initButL);
453
        toolBar.add(initButB);
483
        toolBar.add(initButB);
454
        toolBar.add(initButD);
484
        toolBar.add(initButD);
455
        toolBar.add(initButM);
485
        toolBar.add(initButM);
456
        toolBar.add(initButE);
486
        toolBar.add(initButE);
Line 458... Line 488...
458
        //toolBar.addSeparator()
488
        // toolBar.addSeparator()
459
        toolBar.add(makeButton("cut.png", "Cut", "Cut"));
489
        toolBar.add(makeButton("cut.png", "Cut", "Cut"));
460
        toolBar.add(makeButton("copy.png", "Copy", "Copy"));
490
        toolBar.add(makeButton("copy.png", "Copy", "Copy"));
461
        toolBar.add(makeButton("paste.png", "Paste", "Paste"));
491
        toolBar.add(makeButton("paste.png", "Paste", "Paste"));
462
        //toolBar.addSeparator();
492
        // toolBar.addSeparator();
-
 
493
        toolBar.add(new SplitButton(makeButton("transmit.png",
463
        toolBar.add(new SplitButton(makeButton("transmit.png","Transmit patch to buffer", "Transmit patch to buffer"), dropTransmit()));
494
                "Transmit patch to buffer", "Transmit patch to buffer"),
-
 
495
                dropTransmit()));
-
 
496
        toolBar.add(new SplitButton(makeButton("receive.png",
464
        toolBar.add(new SplitButton(makeButton("receive.png","Receive patch from buffer", "Receive patch from buffer"), dropReceive()));
497
                "Receive patch from buffer", "Receive patch from buffer"),
-
 
498
                dropReceive()));
465
       
499
466
        // Create and initialize the button.
500
        // Create and initialize the button.
467
        b1 = new JToggleButton();
501
        b1 = new JToggleButton();
468
        b2 = new JToggleButton();
502
        b2 = new JToggleButton();
469
        b3 = new JToggleButton();
503
        b3 = new JToggleButton();
Line 486... Line 520...
486
520
487
        b4.setUI(new MyColoredButtonUI(ImageLoader
521
        b4.setUI(new MyColoredButtonUI(ImageLoader
488
                .getImageIcon("pushButton_on.png"), ImageLoader
522
                .getImageIcon("pushButton_on.png"), ImageLoader
489
                .getImageIcon("pushButton_off.png"),
523
                .getImageIcon("pushButton_off.png"),
490
                MyColoredButtonUI.RECTANGLE, Color.GREEN));
524
                MyColoredButtonUI.RECTANGLE, Color.GREEN));
491
-
 
492
       
525
493
        b1.setToolTipText("Enable core 1");
526
        b1.setToolTipText("Enable core 1");
494
        b2.setToolTipText("Enable core 2");
527
        b2.setToolTipText("Enable core 2");
495
        b3.setToolTipText("Enable core 3");
528
        b3.setToolTipText("Enable core 3");
496
        b4.setToolTipText("Enable core 4");
529
        b4.setToolTipText("Enable core 4");
Line 518... Line 551...
518
551
519
    public void showMidiDeviceRoutingDialog() {
552
    public void showMidiDeviceRoutingDialog() {
520
        midiRoutingDialog.setVisible(true);
553
        midiRoutingDialog.setVisible(true);
521
    }
554
    }
522
555
523
    protected JButton makeButton(String imageName, String actionCommand, String toolTipText) {
556
    protected JButton makeButton(String imageName, String actionCommand,
-
 
557
            String toolTipText) {
524
        // Create and initialize the button.
558
        // Create and initialize the button.
525
        ImageIcon icon = ImageLoader.getImageIcon(imageName);
559
        ImageIcon icon = ImageLoader.getImageIcon(imageName);
526
        int s = Math.max(icon.getIconWidth(), icon.getIconHeight()) + 4;
560
        int s = Math.max(icon.getIconWidth(), icon.getIconHeight()) + 4;
527
        JButton button = new JButton();
561
        JButton button = new JButton();
528
        button.setPreferredSize(new Dimension(s, s));
562
        button.setPreferredSize(new Dimension(s, s));