net.sf.nmedit.nordmodular.SynthSettingsFrm.java Source code

Java tutorial

Introduction

Here is the source code for net.sf.nmedit.nordmodular.SynthSettingsFrm.java

Source

/* Copyright (C) 2006 Christian Schneider
 * 
 * This file is part of Nomad.
 * 
 * Nomad is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 * 
 * Nomad is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with Nomad; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */
package net.sf.nmedit.nordmodular;

import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.Box;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JSpinner;
import javax.swing.JTextField;

public class SynthSettingsFrm extends JPanel {
    /**
      * 
      */
    private static final long serialVersionUID = -3312251676984503718L;
    JPanel SynthSettingsFrm = new JPanel();
    JSpinner spChannelSlotA = new JSpinner();
    JSpinner spChannelSlotB = new JSpinner();
    JSpinner spChannelSlotC = new JSpinner();
    JSpinner spChannelSlotD = new JSpinner();
    JCheckBox spActiveSlotA = new JCheckBox();
    JCheckBox spActiveSlotB = new JCheckBox();
    JCheckBox spActiveSlotC = new JCheckBox();
    JCheckBox spActiveSlotD = new JCheckBox();
    JRadioButton rbMIDIClockExternal = new JRadioButton();
    ButtonGroup buttongroup1 = new ButtonGroup();
    JRadioButton rbMIDIClockInternal = new JRadioButton();
    JSpinner spMasterTune = new JSpinner();
    JSpinner spMIDIVelScaleMin = new JSpinner();
    JSpinner spMIDIVelScaleMax = new JSpinner();
    JCheckBox cbProgramChangeSend = new JCheckBox();
    JCheckBox cbProgramChangeReceive = new JCheckBox();
    JRadioButton rbKBModeActiveSlot = new JRadioButton();
    ButtonGroup buttongroup2 = new ButtonGroup();
    JRadioButton rbKBModeSelectedSlots = new JRadioButton();
    JCheckBox cbLocalOff = new JCheckBox();
    JCheckBox cbLEDsActive = new JCheckBox();
    JRadioButton rbKnobModeImmediate = new JRadioButton();
    ButtonGroup buttongroup3 = new ButtonGroup();
    JRadioButton rbKnobModeHook = new JRadioButton();
    JRadioButton rbPedalPolarityNormal = new JRadioButton();
    ButtonGroup buttongroup4 = new ButtonGroup();
    JRadioButton rbPedalPolarityInverted = new JRadioButton();
    JTextField jtSynthName = new JTextField();
    JSpinner spGlobalSyncBeats = new JSpinner();
    JSpinner spMIDIClockRate = new JSpinner();

    /**
     * Default constructor
     */
    public SynthSettingsFrm() {
        initializePanel();
    }

    /**
     * Adds fill components to empty cells in the first row and first column of the grid.
     * This ensures that the grid spacing will be the same as shown in the designer.
     * @param cols an array of column indices in the first row where fill components should be added.
     * @param rows an array of row indices in the first column where fill components should be added.
     */
    void addFillComponents(Container panel, int[] cols, int[] rows) {
        Dimension filler = new Dimension(10, 10);

        boolean filled_cell_11 = false;
        CellConstraints cc = new CellConstraints();
        if (cols.length > 0 && rows.length > 0) {
            if (cols[0] == 1 && rows[0] == 1) {
                /** add a rigid area  */
                panel.add(Box.createRigidArea(filler), cc.xy(1, 1));
                filled_cell_11 = true;
            }
        }

        for (int index = 0; index < cols.length; index++) {
            if (cols[index] == 1 && filled_cell_11) {
                continue;
            }
            panel.add(Box.createRigidArea(filler), cc.xy(cols[index], 1));
        }

        for (int index = 0; index < rows.length; index++) {
            if (rows[index] == 1 && filled_cell_11) {
                continue;
            }
            panel.add(Box.createRigidArea(filler), cc.xy(1, rows[index]));
        }

    }

    /**
     * Helper method to load an image file from the CLASSPATH
     * @param imageName the package and name of the file to load relative to the CLASSPATH
     * @return an ImageIcon instance with the specified image file
     * @throws IllegalArgumentException if the image resource cannot be loaded.
     */
    public ImageIcon loadImage(String imageName) {
        try {
            ClassLoader classloader = getClass().getClassLoader();
            java.net.URL url = classloader.getResource(imageName);
            if (url != null) {
                ImageIcon icon = new ImageIcon(url);
                return icon;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        throw new IllegalArgumentException("Unable to load image: " + imageName);
    }

    public JPanel createSynthSettingsFrm() {
        SynthSettingsFrm.setName("SynthSettingsFrm");
        FormLayout formlayout1 = new FormLayout(
                "FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE",
                "CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE");
        CellConstraints cc = new CellConstraints();
        SynthSettingsFrm.setLayout(formlayout1);

        JLabel jlabel1 = new JLabel();
        jlabel1.setText("Slot A");
        SynthSettingsFrm.add(jlabel1, cc.xy(1, 5));

        JLabel jlabel2 = new JLabel();
        jlabel2.setText("Slot B");
        SynthSettingsFrm.add(jlabel2, cc.xy(1, 6));

        JLabel jlabel3 = new JLabel();
        jlabel3.setText("Slot C");
        SynthSettingsFrm.add(jlabel3, cc.xy(1, 7));

        JLabel jlabel4 = new JLabel();
        jlabel4.setText("Slot D");
        SynthSettingsFrm.add(jlabel4, cc.xy(1, 8));

        spChannelSlotA.setName("spChannelSlotA");
        SynthSettingsFrm.add(spChannelSlotA, cc.xy(3, 5));

        spChannelSlotB.setName("spChannelSlotB");
        SynthSettingsFrm.add(spChannelSlotB, cc.xy(3, 6));

        spChannelSlotC.setName("spChannelSlotC");
        SynthSettingsFrm.add(spChannelSlotC, cc.xy(3, 7));

        spChannelSlotD.setName("spChannelSlotD");
        SynthSettingsFrm.add(spChannelSlotD, cc.xy(3, 8));

        spActiveSlotA.setActionCommand("Active");
        spActiveSlotA.setName("spActiveSlotA");
        spActiveSlotA.setSelected(true);
        spActiveSlotA.setText("Active");
        SynthSettingsFrm.add(spActiveSlotA, cc.xy(5, 5));

        spActiveSlotB.setActionCommand("Active");
        spActiveSlotB.setName("spActiveSlotB");
        spActiveSlotB.setSelected(true);
        spActiveSlotB.setText("Active");
        SynthSettingsFrm.add(spActiveSlotB, cc.xy(5, 6));

        spActiveSlotC.setActionCommand("Active");
        spActiveSlotC.setName("spActiveSlotC");
        spActiveSlotC.setSelected(true);
        spActiveSlotC.setText("Active");
        SynthSettingsFrm.add(spActiveSlotC, cc.xy(5, 7));

        spActiveSlotD.setActionCommand("Active");
        spActiveSlotD.setName("spActiveSlotD");
        spActiveSlotD.setSelected(true);
        spActiveSlotD.setText("Active");
        SynthSettingsFrm.add(spActiveSlotD, cc.xy(5, 8));

        rbMIDIClockExternal.setActionCommand("External");
        rbMIDIClockExternal.setName("rbMIDIClockExternal");
        rbMIDIClockExternal.setSelected(true);
        rbMIDIClockExternal.setText("External");
        buttongroup1.add(rbMIDIClockExternal);
        SynthSettingsFrm.add(rbMIDIClockExternal, cc.xy(3, 13));

        rbMIDIClockInternal.setActionCommand("Internal");
        rbMIDIClockInternal.setName("rbMIDIClockInternal");
        rbMIDIClockInternal.setText("Internal");
        buttongroup1.add(rbMIDIClockInternal);
        SynthSettingsFrm.add(rbMIDIClockInternal, cc.xy(3, 12));

        spMasterTune.setName("spMasterTune");
        SynthSettingsFrm.add(spMasterTune, cc.xy(3, 20));

        JLabel jlabel5 = new JLabel();
        jlabel5.setText("Cent");
        SynthSettingsFrm.add(jlabel5, cc.xy(5, 20));

        JLabel jlabel6 = new JLabel();
        jlabel6.setText("Max");
        SynthSettingsFrm.add(jlabel6, cc.xy(5, 23));

        JLabel jlabel7 = new JLabel();
        jlabel7.setText("Min");
        SynthSettingsFrm.add(jlabel7, cc.xy(5, 24));

        spMIDIVelScaleMin.setName("spMIDIVelScaleMin");
        SynthSettingsFrm.add(spMIDIVelScaleMin, cc.xy(3, 24));

        spMIDIVelScaleMax.setName("spMIDIVelScaleMax");
        SynthSettingsFrm.add(spMIDIVelScaleMax, cc.xy(3, 23));

        cbProgramChangeSend.setActionCommand("Send");
        cbProgramChangeSend.setName("cbProgramChangeSend");
        cbProgramChangeSend.setSelected(true);
        cbProgramChangeSend.setText("Send");
        SynthSettingsFrm.add(cbProgramChangeSend, cc.xy(3, 28));

        cbProgramChangeReceive.setActionCommand("Receive");
        cbProgramChangeReceive.setName("cbProgramChangeReceive");
        cbProgramChangeReceive.setSelected(true);
        cbProgramChangeReceive.setText("Receive");
        SynthSettingsFrm.add(cbProgramChangeReceive, cc.xy(3, 27));

        rbKBModeActiveSlot.setActionCommand("Active slot");
        rbKBModeActiveSlot.setName("rbKBModeActiveSlot");
        rbKBModeActiveSlot.setSelected(true);
        rbKBModeActiveSlot.setText("Active slot");
        buttongroup2.add(rbKBModeActiveSlot);
        SynthSettingsFrm.add(rbKBModeActiveSlot, cc.xy(9, 5));

        rbKBModeSelectedSlots.setActionCommand("Selected slots");
        rbKBModeSelectedSlots.setName("rbKBModeSelectedSlots");
        rbKBModeSelectedSlots.setText("Selected slots");
        buttongroup2.add(rbKBModeSelectedSlots);
        SynthSettingsFrm.add(rbKBModeSelectedSlots, cc.xy(9, 6));

        cbLocalOff.setActionCommand("Local off");
        cbLocalOff.setName("cbLocalOff");
        cbLocalOff.setText("Local off");
        SynthSettingsFrm.add(cbLocalOff, cc.xy(9, 8));

        cbLEDsActive.setActionCommand("LEDs active");
        cbLEDsActive.setName("cbLEDsActive");
        cbLEDsActive.setText("LEDs active");
        SynthSettingsFrm.add(cbLEDsActive, cc.xy(9, 9));

        rbKnobModeImmediate.setActionCommand("Active slot");
        rbKnobModeImmediate.setName("rbKnobModeImmediate");
        rbKnobModeImmediate.setSelected(true);
        rbKnobModeImmediate.setText("Immediate");
        buttongroup3.add(rbKnobModeImmediate);
        SynthSettingsFrm.add(rbKnobModeImmediate, cc.xy(9, 12));

        rbKnobModeHook.setActionCommand("Selected slots");
        rbKnobModeHook.setName("rbKnobModeHook");
        rbKnobModeHook.setText("Hook");
        buttongroup3.add(rbKnobModeHook);
        SynthSettingsFrm.add(rbKnobModeHook, cc.xy(9, 13));

        rbPedalPolarityNormal.setActionCommand("Active slot");
        rbPedalPolarityNormal.setName("rbPedalPolarityNormal");
        rbPedalPolarityNormal.setSelected(true);
        rbPedalPolarityNormal.setText("Normal");
        buttongroup4.add(rbPedalPolarityNormal);
        SynthSettingsFrm.add(rbPedalPolarityNormal, cc.xy(9, 16));

        rbPedalPolarityInverted.setActionCommand("Selected slots");
        rbPedalPolarityInverted.setName("rbPedalPolarityInverted");
        rbPedalPolarityInverted.setText("Inverted");
        buttongroup4.add(rbPedalPolarityInverted);
        SynthSettingsFrm.add(rbPedalPolarityInverted, cc.xy(9, 17));

        jtSynthName.setName("jtSynthName");
        SynthSettingsFrm.add(jtSynthName, cc.xywh(3, 2, 3, 1));

        spGlobalSyncBeats.setName("spGlobalSyncBeats");
        SynthSettingsFrm.add(spGlobalSyncBeats, cc.xy(3, 17));

        JLabel jlabel8 = new JLabel();
        jlabel8.setText("Global sync (beats)");
        SynthSettingsFrm.add(jlabel8, cc.xy(5, 17));

        JLabel jlabel9 = new JLabel();
        jlabel9.setText("Rate (BPM)");
        SynthSettingsFrm.add(jlabel9, cc.xy(5, 16));

        spMIDIClockRate.setName("spMIDIClockRate");
        SynthSettingsFrm.add(spMIDIClockRate, cc.xy(3, 16));

        JLabel jlabel10 = new JLabel();
        jlabel10.setText("Name");
        SynthSettingsFrm.add(jlabel10, cc.xywh(1, 1, 5, 1));

        JLabel jlabel11 = new JLabel();
        jlabel11.setText("MIDI Channel");
        SynthSettingsFrm.add(jlabel11, cc.xy(1, 4));

        JLabel jlabel12 = new JLabel();
        jlabel12.setText("MIDI Clock");
        SynthSettingsFrm.add(jlabel12, cc.xywh(1, 11, 5, 1));

        JLabel jlabel13 = new JLabel();
        jlabel13.setText("Master Tune");
        SynthSettingsFrm.add(jlabel13, cc.xywh(1, 19, 5, 1));

        JLabel jlabel14 = new JLabel();
        jlabel14.setText("MIDI velocity scale");
        SynthSettingsFrm.add(jlabel14, cc.xywh(1, 22, 5, 1));

        JLabel jlabel15 = new JLabel();
        jlabel15.setText("Program change");
        SynthSettingsFrm.add(jlabel15, cc.xywh(1, 26, 5, 1));

        JLabel jlabel16 = new JLabel();
        jlabel16.setText("Keyboard mode");
        SynthSettingsFrm.add(jlabel16, cc.xywh(7, 4, 5, 1));

        JLabel jlabel17 = new JLabel();
        jlabel17.setText("Knob mode");
        SynthSettingsFrm.add(jlabel17, cc.xywh(7, 11, 5, 1));

        JLabel jlabel18 = new JLabel();
        jlabel18.setText("Pedal polarity");
        SynthSettingsFrm.add(jlabel18, cc.xywh(7, 15, 5, 1));

        addFillComponents(SynthSettingsFrm, new int[] { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },
                new int[] { 2, 3, 9, 10, 12, 13, 14, 15, 16, 17, 18, 20, 21, 23, 24, 25, 27, 28 });
        return SynthSettingsFrm;
    }

    /**
     * Initializer
     */
    protected void initializePanel() {
        setLayout(new BorderLayout());
        add(createSynthSettingsFrm(), BorderLayout.CENTER);
    }

}