/[svn]/jsampler/trunk/src/org/jsampler/view/std/JSSamplerTable.java
ViewVC logotype

Contents of /jsampler/trunk/src/org/jsampler/view/std/JSSamplerTable.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2200 - (show annotations) (download)
Sun Jul 3 22:01:16 2011 UTC (12 years, 9 months ago) by iliev
File size: 4506 byte(s)
* added support for exporting effects to LSCP script
* Sampler Browser (work in progress): initial
  implementation of sampler channels

1 /*
2 * JSampler - a java front-end for LinuxSampler
3 *
4 * Copyright (C) 2011 Grigor Iliev <grigor@grigoriliev.com>
5 *
6 * This file is part of JSampler.
7 *
8 * JSampler is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2
10 * as published by the Free Software Foundation.
11 *
12 * JSampler is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with JSampler; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
20 * MA 02111-1307 USA
21 */
22 package org.jsampler.view.std;
23
24 import java.awt.Component;
25 import java.awt.event.ActionEvent;
26 import java.awt.event.KeyEvent;
27 import java.awt.event.MouseAdapter;
28 import java.awt.event.MouseEvent;
29 import javax.swing.AbstractAction;
30 import javax.swing.BorderFactory;
31 import javax.swing.JLabel;
32 import javax.swing.JTable;
33 import javax.swing.KeyStroke;
34 import javax.swing.table.TableCellRenderer;
35 import org.jsampler.view.AbstractSamplerTable;
36 import org.jsampler.view.SamplerTreeModel.TreeNodeBase;
37
38 /**
39 *
40 * @author Grigor Iliev
41 */
42 public class JSSamplerTable extends AbstractSamplerTable implements SamplerBrowser.ContextMenuOwner {
43 private final JSSamplerTree samplerTree;
44 private SamplerTableCellRenderer cellRenderer = new SamplerTableCellRenderer();
45
46 public
47 JSSamplerTable(final JSSamplerTree samplerTree) {
48 this.samplerTree = samplerTree;
49 setShowGrid(false);
50 getColumnModel().setColumnMargin(0);
51
52 addMouseListener(new MouseAdapter() {
53 public void
54 mouseClicked(MouseEvent e) {
55 if(e.getButton() != e.BUTTON1) return;
56 int r = rowAtPoint(e.getPoint());
57 if(r == -1) {
58 clearSelection();
59 return;
60 }
61
62 if(e.getClickCount() < 2) return;
63
64 openNode();
65 }
66 });
67
68 addMouseListener(new MouseAdapter() {
69 public void
70 mousePressed(MouseEvent e) {
71 int r = rowAtPoint(e.getPoint());
72
73 if(e.getButton() != e.BUTTON1 && e.getButton() != e.BUTTON3) return;
74 if(r == -1) {
75 clearSelection();
76 return;
77 }
78
79 if(e.getButton() != e.BUTTON3) return;
80 if(getSelectionModel().isSelectedIndex(r)) {
81 getSelectionModel().addSelectionInterval(r, r);
82 } else {
83 getSelectionModel().setSelectionInterval(r, r);
84 }
85 }
86 });
87
88 addMouseListener(new SamplerBrowser.ContextMenu(this));
89
90 installKeyboardListeners();
91 }
92
93 private void
94 openNode() {
95 TreeNodeBase node = getSelectedNode();
96 if(node == null) return;
97 if(node.isLink()) {
98 samplerTree.setSelectedNode(node.getLink());
99 }else if(node.isLeaf()) {
100 node.edit();
101 } else {
102 samplerTree.setSelectedNode(node);
103 }
104 }
105
106 private void
107 installKeyboardListeners() {
108 getInputMap().put (
109 KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0),
110 "OpenNode"
111 );
112
113 getActionMap().put ("OpenNode", new AbstractAction() {
114 public void
115 actionPerformed(ActionEvent e) {
116 openNode();
117 }
118 });
119 }
120
121 @Override
122 public TableCellRenderer
123 getCellRenderer(int row, int column) {
124 return cellRenderer;
125 }
126
127 @Override
128 public Object
129 getSelectedItem() {
130 int idx = getSelectedRow();
131 if(idx == -1) return null;
132 idx = convertRowIndexToModel(idx);
133 return getModel().getValueAt(idx, 0);
134 }
135
136 @Override
137 public Object
138 getSelectedParent() { return getNode(); }
139
140
141 class SamplerTableCellRenderer extends JLabel implements TableCellRenderer {
142
143 SamplerTableCellRenderer() {
144 setOpaque(true);
145 setBorder(BorderFactory.createEmptyBorder(0, 3, 0, 3));
146 }
147
148 @Override
149 public Component
150 getTableCellRendererComponent (
151 JTable table,
152 Object value,
153 boolean isSelected,
154 boolean hasFocus,
155 int row,
156 int column
157 ) {
158 if(column == 0 && value != null) {
159 setIcon(getView().getIcon(value, false));
160 } else {
161 setIcon(null);
162 setToolTipText(null);
163 }
164
165 if(value != null) setText(value.toString());
166 else setText("");
167
168 if (isSelected) {
169 setBackground(table.getSelectionBackground());
170 setForeground(table.getSelectionForeground());
171 } else {
172 setBackground(table.getBackground());
173 setForeground(table.getForeground());
174 }
175
176 if(getNode() != null) {
177 setHorizontalAlignment(getNode().getHorizontalAlignment(column));
178 }
179
180 return this;
181 }
182 }
183 }

  ViewVC Help
Powered by ViewVC