addWidget(leftPane, new PatchNameWidget("Name", patch, ((Driver) patch.getDriver()).getPatchNameSize()), 0, 0, 2, 1, 0);
addWidget(leftPane, new PatchNameWidget("Name", patch), 0, 0, 2, 1, 0);
  public MKS50PatchSingleEditor(Patch patch)  {    super ("Roland MKS-50 Patch Single Editor", patch);    JPanel leftPane = new JPanel();    leftPane.setLayout(new GridBagLayout());    addWidget(leftPane, new PatchNameWidget("Name", patch, ((Driver) patch.getDriver()).getPatchNameSize()), 0, 0, 2, 1, 0);    addWidget(leftPane, new ScrollBarLookupWidget("Tone", patch, 0, 127,      new ParamModel(patch, 7), new MKSPatchSender(0), toneList), 0, 1, 2, 1, 1);    addWidget(leftPane, new ComboBoxWidget("Key Range Low", patch,      new MKSOfsModel(patch, 8, 12), new MKSOfsSender(1, 12), noteName), 0, 2, 1, 1, 2);    addWidget(leftPane, new ComboBoxWidget("Key Range High", patch,      new MKSOfsModel(patch, 9, 12), new MKSOfsSender(2, 12), noteName), 1, 2, 1, 1, 3);    addWidget(leftPane, new ScrollBarWidget("Key Shift", patch, 0, 24, -12,      new MKS2sCompModel(patch, 13, 12), new MKS2sCompSender(6, 12)), 0, 4, 2, 1, 4);    addWidget(leftPane, new ScrollBarWidget("Detune", patch, 0, 126, -63,      new MKS2sCompModel(patch, 15, 63), new MKS2sCompSender(8, 63)), 0, 5, 2, 1, 5);    addWidget(leftPane, new ScrollBarWidget("Volume", patch, 0, 127, 0,      new ParamModel(patch, 14), new MKSPatchSender(7)), 0, 6, 2, 1, 6);    addWidget(leftPane, new ScrollBarWidget("Mod Sens", patch, 0, 127, 0,      new ParamModel(patch, 12), new MKSPatchSender(5)), 0, 7, 2, 1, 7);    addWidget(leftPane, new ScrollBarWidget("Portamento Time", patch, 0, 127, 0,      new ParamModel(patch, 10), new MKSPatchSender(3)), 0, 8, 2, 1, 8);    addWidget(leftPane, new CheckBoxWidget("Portamento", patch,      new ParamModel(patch, 11), new MKSPatchSender(4)), 0, 9, 1, 1, -1);    addWidget(leftPane, new CheckBoxWidget("Midi Aftertouch", patch,      new MKSBitModel(patch, 16, 6), new MKSBitSender(patch, 16, 6, 9)), 1, 9, 1, 1, -2);    addWidget(leftPane, new CheckBoxWidget("Midi Pitch Bend", patch,      new MKSBitModel(patch, 16, 5), new MKSBitSender(patch, 16, 5, 9)), 0, 10, 1, 1, -3);    addWidget(leftPane, new CheckBoxWidget("Midi Exclusive", patch,      new MKSBitModel(patch, 16, 4), new MKSBitSender(patch, 16, 4, 9)), 1, 10, 1, 1, -4);    addWidget(leftPane, new CheckBoxWidget("Midi Hold (Sustain)", patch,      new MKSBitModel(patch, 16, 3), new MKSBitSender(patch, 16, 3, 9)), 0, 11, 1, 1, -5);    addWidget(leftPane, new CheckBoxWidget("Midi Mod Wheel", patch,      new MKSBitModel(patch, 16, 2), new MKSBitSender(patch, 16, 2, 9)), 1, 11, 1, 1, -6);    addWidget(leftPane, new CheckBoxWidget("Midi Volume", patch,      new MKSBitModel(patch, 16, 1), new MKSBitSender(patch, 16, 1, 9)), 0, 12, 1, 1, -7);    addWidget(leftPane, new CheckBoxWidget("Midi Portamento", patch,      new MKSBitModel(patch, 16, 0), new MKSBitSender(patch, 16, 0, 9)), 1, 12, 1, 1, -8);    addWidget(leftPane, new ScrollBarWidget("Mono Bender Range", patch, 0, 12, 0,      new ParamModel(patch, 17), new MKSPatchSender(10)), 0, 13, 2, 1, 9);    addWidget(leftPane, new ComboBoxWidget("Key Assign Mode", patch,      new ParamModel(patch, 19), new MKSListSender(12,  new int[] {0, 64, 96}),      new String [] {"Poly", "Chord Mem", "Mono"}), 0, 14, 1, 1, 10);    addWidget(leftPane, new ScrollBarWidget("Chord Memory", patch, 0, 15, 1,      new ParamModel(patch, 18), new MKSPatchSender(11)), 0, 15, 2, 1, 11);    gbc.gridx = 0;    gbc.gridy = 0;    gbc.gridwidth = 2;    gbc.gridheight = 15;    scrollPane.add(leftPane, gbc);    pack();    show();  }