use of blue.score.layers.audio.core.AudioLayer in project blue by kunstmusik.
the class AudioHeaderListPanel method layersAdded.
public void layersAdded(LayerGroupDataEvent e) {
final int index = e.getStartIndex();
final AudioLayer sLayer = layerGroup.get(index);
SwingUtilities.invokeLater(() -> {
Channel c = mixer.findChannelById(sLayer.getUniqueId());
AudioHeaderLayerPanel panel = new AudioHeaderLayerPanel(sLayer, c);
add(panel, index);
checkSize();
});
}
use of blue.score.layers.audio.core.AudioLayer in project blue by kunstmusik.
the class AudioLayersPanel method layerGroupChanged.
@Override
public void layerGroupChanged(final LayerGroupDataEvent event) {
final ArrayList<Layer> layers = event.getLayers();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
if (event.getType() == LayerGroupDataEvent.DATA_ADDED) {
for (Layer layer : layers) {
((AudioLayer) layer).addPropertyChangeListener(heightListener);
((AudioLayer) layer).addAudioLayerListener(AudioLayersPanel.this);
for (AudioClip clip : (AudioLayer) layer) {
addClipPanel(clip, timeState, 0, 0);
}
}
} else if (event.getType() == LayerGroupDataEvent.DATA_REMOVED) {
for (Layer layer : layers) {
((AudioLayer) layer).removePropertyChangeListener(heightListener);
((AudioLayer) layer).removeAudioLayerListener(AudioLayersPanel.this);
for (AudioClip clip : (AudioLayer) layer) {
removeClipPanel(clip);
}
}
}
updateAudioClipYandHeight();
checkSize();
repaint();
}
});
}
use of blue.score.layers.audio.core.AudioLayer in project blue by kunstmusik.
the class AudioLayersPanel method addNotify.
@Override
public void addNotify() {
super.addNotify();
if (layerGroup == null) {
return;
}
layerGroup.addLayerGroupListener(this);
timeState.addPropertyChangeListener(this);
for (AudioLayer layer : layerGroup) {
layer.addPropertyChangeListener(heightListener);
layer.addAudioLayerListener(this);
}
}
use of blue.score.layers.audio.core.AudioLayer in project blue by kunstmusik.
the class AudioHeaderListLayout method layoutContainer.
@Override
public void layoutContainer(Container parent) {
int count = parent.getComponentCount();
if (count == 0) {
return;
}
if (parent.getParent() == null) {
return;
}
if (audioLayerGroup == null) {
return;
}
int w = parent.getWidth();
int runningY = 0;
int size = Math.min(count, audioLayerGroup.size());
for (int i = 0; i < size; i++) {
Component temp = parent.getComponent(i);
AudioLayer layer = audioLayerGroup.get(i);
int h = (layer.getHeightIndex() + 1) * Layer.LAYER_HEIGHT;
temp.setLocation(0, runningY);
temp.setSize(w, h);
runningY += h;
}
}
use of blue.score.layers.audio.core.AudioLayer in project blue by kunstmusik.
the class AudioLayersDropTargetListener method drop.
/*
* (non-Javadoc)
*
* @see java.awt.dnd.DropTargetListener#drop(java.awt.dnd.DropTargetDropEvent)
*/
@Override
public void drop(DropTargetDropEvent dtde) {
Node node = NodeTransfer.node(dtde.getTransferable(), NodeTransfer.DND_COPY);
if (node != null) {
File f = node.getLookup().lookup(File.class);
if (f == null || !f.isFile()) {
dtde.dropComplete(false);
return;
}
dtde.acceptDrop(DnDConstants.ACTION_COPY);
Point p = dtde.getLocation();
AudioLayerGroup audioLayerGroup = audioLayersPanel.getAudioLayerGroup();
int index = audioLayerGroup.getLayerNumForY(p.y);
AudioClip af = new AudioClip();
af.setName(f.getName());
af.setAudioFile(f);
float startTime = (float) p.x / audioLayersPanel.getTimeState().getPixelSecond();
af.setStartTime(startTime);
af.setSubjectiveDuration(af.getAudioDuration());
AudioLayer layer = audioLayerGroup.get(index);
layer.add(af);
dtde.dropComplete(true);
}
try {
Transferable tr = dtde.getTransferable();
if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
dtde.acceptDrop(DnDConstants.ACTION_LINK);
List<?> list = (List<?>) tr.getTransferData(DataFlavor.javaFileListFlavor);
if (list.size() != 1) {
dtde.dropComplete(false);
return;
}
String s = list.get(0).toString().trim();
System.out.println("file flavor found: " + s);
if (!s.toLowerCase().endsWith("wav") && !s.toLowerCase().endsWith("aif") && !s.toLowerCase().endsWith("aiff")) {
dtde.dropComplete(false);
return;
}
String sObjName = s.substring(s.lastIndexOf(File.separator) + 1);
Point p = dtde.getLocation();
AudioLayerGroup audioLayerGroup = audioLayersPanel.getAudioLayerGroup();
int index = audioLayerGroup.getLayerNumForY(p.y);
AudioClip af = new AudioClip();
af.setName(sObjName);
af.setAudioFile(new File(s));
float startTime = (float) p.x / audioLayersPanel.getTimeState().getPixelSecond();
af.setStartTime(startTime);
af.setSubjectiveDuration(af.getAudioDuration());
AudioLayer layer = audioLayerGroup.get(index);
layer.add(af);
dtde.dropComplete(true);
return;
} else if (dtde.isDataFlavorSupported(DataFlavor.stringFlavor)) {
dtde.acceptDrop(DnDConstants.ACTION_LINK);
String str = (String) tr.getTransferData(DataFlavor.stringFlavor);
System.out.println("String flavor found: " + str);
if (!str.startsWith("file://")) {
dtde.dropComplete(false);
return;
}
str = str.substring(7).trim();
if (!str.toLowerCase().endsWith("wav") && !str.toLowerCase().endsWith("aif") && !str.toLowerCase().endsWith("aiff")) {
System.err.println("Could not open file: " + str);
dtde.dropComplete(false);
return;
}
str = URLDecoder.decode(str);
str = str.replaceAll(" ", "\\ ");
File f = new File(str);
if (!f.exists()) {
dtde.dropComplete(false);
return;
}
String sObjName = str.substring(str.lastIndexOf(File.separator) + 1);
Point p = dtde.getLocation();
AudioLayerGroup audioLayerGroup = audioLayersPanel.getAudioLayerGroup();
int index = audioLayerGroup.getLayerNumForY(p.y);
AudioClip af = new AudioClip();
af.setName(sObjName);
af.setAudioFile(f);
float startTime = (float) p.x / audioLayersPanel.getTimeState().getPixelSecond();
af.setStartTime(startTime);
af.setSubjectiveDuration(af.getAudioDuration());
AudioLayer layer = audioLayerGroup.get(index);
layer.add(af);
dtde.dropComplete(true);
return;
}
dtde.rejectDrop();
} catch (UnsupportedFlavorException | IOException | InvalidDnDOperationException e) {
e.printStackTrace();
dtde.rejectDrop();
}
}
Aggregations