Subversion Repositories svn.mios

Rev

Rev 250 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
250 rutgerv 1
package org.midibox.sidedit.gui;
2
 
628 adamjking 3
import java.awt.event.ActionEvent;
4
import java.awt.event.ActionListener;
5
import java.util.Observable;
6
import java.util.Observer;
250 rutgerv 7
 
628 adamjking 8
import javax.swing.JButton;
9
 
250 rutgerv 10
import org.midibox.sidedit.SIDSysexParameterControl;
11
import org.midibox.utils.gui.SeqButtonUI;
12
 
628 adamjking 13
public class SequencerButton extends JButton implements Observer,
14
        ActionListener {
250 rutgerv 15
    private int realValue;
16
    SIDSysexParameterControl midiParameter1;
17
    SIDSysexParameterControl midiParameter2;
628 adamjking 18
 
19
    public SequencerButton(SIDSysexParameterControl midiParameter1,
20
            SIDSysexParameterControl midiParameter2) {
250 rutgerv 21
        this.midiParameter1 = midiParameter1;
22
        this.midiParameter2 = midiParameter2;
628 adamjking 23
 
24
        setUI(new SeqButtonUI());
250 rutgerv 25
        addActionListener(this);
26
        midiParameter1.addObserver(this);
27
        midiParameter2.addObserver(this);
28
        updateGraphics();
29
    }
628 adamjking 30
 
250 rutgerv 31
    public void updateGraphics() {
628 adamjking 32
        if ((midiParameter1.getMidiValue() == 0)
33
                && (midiParameter2.getMidiValue() == 0)) {
34
            realValue = 0;
35
        } else if ((midiParameter1.getMidiValue() == 1)
36
                && (midiParameter2.getMidiValue() == 0)) {
37
            realValue = 1;
38
        } else if ((midiParameter1.getMidiValue() == 0)
39
                && (midiParameter2.getMidiValue() == 1)) {
40
            realValue = 2;
41
        } else if ((midiParameter1.getMidiValue() == 1)
42
                && (midiParameter2.getMidiValue() == 1)) {
43
            realValue = 3;
250 rutgerv 44
        }
628 adamjking 45
        ((SeqButtonUI) getUI()).setValue(realValue);
250 rutgerv 46
        repaint();
47
    }
628 adamjking 48
 
250 rutgerv 49
    public void update(Observable observable, Object object) {
628 adamjking 50
        updateGraphics();
250 rutgerv 51
    }
628 adamjking 52
 
250 rutgerv 53
    public void actionPerformed(ActionEvent ae) {
54
        Object source = ae.getSource();
55
        if (source == this) {
628 adamjking 56
            realValue = (realValue + 1) % 4;
57
            // setImage(realValue);
58
            switch (realValue) {
59
            case 0:
60
                midiParameter1.setMidiValue(0, true);
61
                midiParameter2.setMidiValue(0, true);
62
                break;
63
            case 1:
64
                midiParameter1.setMidiValue(1, true);
65
                midiParameter2.setMidiValue(0, true);
66
                break;
67
            case 2:
68
                midiParameter1.setMidiValue(0, true);
69
                midiParameter2.setMidiValue(1, true);
70
                break;
71
            case 3:
72
                midiParameter1.setMidiValue(1, true);
73
                midiParameter2.setMidiValue(1, true);
74
                break;
250 rutgerv 75
            }
76
        }
77
    }
628 adamjking 78
 
250 rutgerv 79
}