/* * Created on Mar 7, 2006 * * Copyright (c) 2006 P.J.Leonard * * http://www.frinika.com * * This file is part of Frinika. * * Frinika 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. * Frinika 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 Frinika; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package com.frinika.sequencer.gui.pianoroll; import javax.swing.JPanel; import com.frinika.project.ProjectContainer; import com.frinika.sequencer.gui.Item; import com.frinika.sequencer.gui.LabelFieldEditor; import com.frinika.sequencer.gui.selection.SelectionContainer; import com.frinika.sequencer.gui.selection.SelectionListener; import com.frinika.sequencer.model.EditHistoryAction; import com.frinika.sequencer.model.EditHistoryListener; import com.frinika.sequencer.model.MultiEvent; public class MultiEventEditPanel extends JPanel implements FeedbackEventListener, EditHistoryListener, SelectionListener<MultiEvent> { /** * */ private static final long serialVersionUID = 1L; LabelFieldEditor lab[]; MultiEventTableModel model; ProjectContainer project; MultiEvent event = null; public MultiEventEditPanel(ProjectContainer project) { this.project = project; setOpaque(false); int ticksPerBeat = project.getSequencer().getSequence().getResolution(); // setLayout(new BoxLayout(this,BoxLayout.Y_AXIS)); model = new MultiEventTableModel(project,null, 1, ticksPerBeat); // table = new JTable(tableModel); lab = new LabelFieldEditor[model.getColumnCount()]; for (int i = 0; i < model.getColumnCount(); i++) { add(lab[i] = new LabelFieldEditor(model, i, project)); lab[i].setOpaque(false); } // setBackground(Color.BLUE); } public void notifyFeedbackItemChanged(Item it) { if (!(it instanceof MultiEvent)) return; event = (MultiEvent)it; model.setMultiEvent(event); for (int i = 0; i < model.getColumnCount(); i++) { lab[i].update(); } } public void fireSequenceDataChanged(EditHistoryAction[] edithistoryEntries) { notifyFeedbackItemChanged(event); } public void selectionChanged(SelectionContainer<? extends MultiEvent> src) { // TODO Auto-generated method stub MultiEvent ev = project.getMultiEventSelection().getFocus(); if (event == ev) return; notifyFeedbackItemChanged(ev); } }