Search in sources :

Example 6 with Layer

use of blue.score.layers.Layer in project blue by kunstmusik.

the class MoveScoreObjectsListener method mousePressed.

@Override
public void mousePressed(MouseEvent e) {
    if (currentScoreObjectView == null || !SwingUtilities.isLeftMouseButton(e)) {
        return;
    }
    ScoreObject scoreObj = currentScoreObjectView.getScoreObject();
    Collection<? extends ScoreObject> temp = ScoreController.getInstance().getSelectedScoreObjects();
    if (!temp.contains(scoreObj)) {
        return;
    }
    e.consume();
    ScorePath scorePath = ScoreController.getInstance().getScorePath();
    startPoint = e.getPoint();
    selectedScoreObjects = temp.toArray(new ScoreObject[0]);
    startTimes = new double[selectedScoreObjects.length];
    startLayerIndices = new int[selectedScoreObjects.length];
    currentLayerIndices = new int[selectedScoreObjects.length];
    minDiffTime = Double.MAX_VALUE;
    startLayer = scorePath.getGlobalLayerIndexForY(e.getY());
    lastLayerAdjust = 0;
    minYAdjust = Integer.MIN_VALUE;
    maxYAdjust = Integer.MAX_VALUE;
    initialDrag = true;
    List<Layer> allLayers = scorePath.getAllLayers();
    for (int i = 0; i < selectedScoreObjects.length; i++) {
        startTimes[i] = selectedScoreObjects[i].getStartTime();
        if (startTimes[i] < minDiffTime) {
            minDiffTime = startTimes[i];
        }
        startLayerIndices[i] = currentLayerIndices[i] = scorePath.getGlobalLayerIndexForScoreObject(selectedScoreObjects[i]);
        int minY = getMinYAdjust(allLayers, scoreObj, startLayerIndices[i]);
        int maxY = getMaxYAdjust(allLayers, scoreObj, startLayerIndices[i]);
        minYAdjust = (minY > minYAdjust) ? minY : minYAdjust;
        maxYAdjust = (maxY < maxYAdjust) ? maxY : maxYAdjust;
    }
    minDiffTime = -minDiffTime;
}
Also used : ScorePath(blue.ui.core.score.ScorePath) ScoreObject(blue.score.ScoreObject) Layer(blue.score.layers.Layer) ScoreObjectLayer(blue.score.layers.ScoreObjectLayer) Point(java.awt.Point)

Example 7 with Layer

use of blue.score.layers.Layer in project blue by kunstmusik.

the class ImportSoundObjectAction method actionPerformed.

@Override
public void actionPerformed(ActionEvent e) {
    ScoreTimeCanvas sCanvas = (ScoreTimeCanvas) lGroupPanel;
    List<File> retVal = FileChooserManager.getDefault().showOpenDialog(IMPORT_DIALOG, WindowManager.getDefault().getMainWindow());
    if (!retVal.isEmpty()) {
        File f = retVal.get(0);
        Document doc;
        try {
            doc = new Document(f);
            Element root = doc.getRoot();
            if (root.getName().equals("soundObject")) {
                SoundObject tempSobj = (SoundObject) ObjectUtilities.loadFromXML(root, null);
                int start = p.x;
                Layer layer = scorePath.getGlobalLayerForY(p.y);
                if (timeState.isSnapEnabled()) {
                    int snapPixels = (int) (timeState.getSnapValue() * timeState.getPixelSecond());
                    start = start - (start % snapPixels);
                }
                float startTime = (float) start / timeState.getPixelSecond();
                tempSobj.setStartTime(startTime);
                ((SoundLayer) layer).add(tempSobj);
                AddScoreObjectEdit edit = new AddScoreObjectEdit((ScoreObjectLayer) layer, tempSobj);
                BlueUndoManager.setUndoManager("score");
                BlueUndoManager.addEdit(edit);
            } else {
                JOptionPane.showMessageDialog(WindowManager.getDefault().getMainWindow(), "Error: File did not contain Sound Object", "Error", JOptionPane.ERROR_MESSAGE);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
            JOptionPane.showMessageDialog(WindowManager.getDefault().getMainWindow(), "Error: Could not read Sound Object from file", "Error", JOptionPane.ERROR_MESSAGE);
        }
    }
}
Also used : SoundObject(blue.soundObject.SoundObject) AddScoreObjectEdit(blue.ui.core.score.undo.AddScoreObjectEdit) SoundLayer(blue.SoundLayer) Element(electric.xml.Element) ScoreTimeCanvas(blue.ui.core.score.layers.soundObject.ScoreTimeCanvas) Document(electric.xml.Document) File(java.io.File) SoundLayer(blue.SoundLayer) ScoreObjectLayer(blue.score.layers.ScoreObjectLayer) Layer(blue.score.layers.Layer) Point(java.awt.Point)

Example 8 with Layer

use of blue.score.layers.Layer in project blue by kunstmusik.

the class SelectAllAfterAction method actionPerformed.

@Override
public void actionPerformed(ActionEvent e) {
    // FIXME -
    // if (p.y < 0 || p.y > comp.getHeight()) {
    // return;
    // }
    float pointTime = (float) p.x / timeState.getPixelSecond();
    List<ScoreObject> newSelected = new ArrayList<>();
    List<Layer> allLayers = scorePath.getAllLayers();
    for (Layer layer : allLayers) {
        if (layer instanceof ScoreObjectLayer) {
            ScoreObjectLayer<ScoreObject> sLayer = (ScoreObjectLayer) layer;
            for (ScoreObject scoreObject : sLayer) {
                if (scoreObject.getStartTime() >= pointTime) {
                    newSelected.add(scoreObject);
                }
            }
        }
    }
    ScoreController.getInstance().setSelectedScoreObjects(newSelected);
}
Also used : ScoreObjectLayer(blue.score.layers.ScoreObjectLayer) ScoreObject(blue.score.ScoreObject) ArrayList(java.util.ArrayList) Layer(blue.score.layers.Layer) ScoreObjectLayer(blue.score.layers.ScoreObjectLayer)

Example 9 with Layer

use of blue.score.layers.Layer in project blue by kunstmusik.

the class SelectAllBeforeAction method actionPerformed.

@Override
public void actionPerformed(ActionEvent e) {
    // FIXME
    // JComponent comp = ((JComponent) lgPanel);
    // 
    // if (p.y < 0 || p.y > comp.getHeight()) {
    // return;
    // }
    float pointTime = (float) p.x / timeState.getPixelSecond();
    List<ScoreObject> newSelected = new ArrayList<>();
    List<Layer> allLayers = scorePath.getAllLayers();
    for (Layer layer : allLayers) {
        if (layer instanceof ScoreObjectLayer) {
            ScoreObjectLayer<ScoreObject> sLayer = (ScoreObjectLayer) layer;
            for (ScoreObject scoreObject : sLayer) {
                if (scoreObject.getStartTime() + scoreObject.getSubjectiveDuration() <= pointTime) {
                    newSelected.add(scoreObject);
                }
            }
        }
    }
    ScoreController.getInstance().setSelectedScoreObjects(newSelected);
}
Also used : ScoreObjectLayer(blue.score.layers.ScoreObjectLayer) ScoreObject(blue.score.ScoreObject) ArrayList(java.util.ArrayList) Layer(blue.score.layers.Layer) ScoreObjectLayer(blue.score.layers.ScoreObjectLayer)

Example 10 with Layer

use of blue.score.layers.Layer in project blue by kunstmusik.

the class ScoreController method deleteScoreObjects.

public void deleteScoreObjects() {
    if (lookup == null || content == null) {
        return;
    }
    Collection<? extends ScoreObject> scoreObjects = ScoreController.getInstance().getSelectedScoreObjects();
    Score score = lookup.lookup(Score.class);
    if (score == null) {
        throw new RuntimeException("Score object not set in ScoreController: internal error");
    }
    if (scoreObjects.isEmpty()) {
        return;
    }
    List<Layer> layers = getScorePath().getAllLayers();
    RemoveScoreObjectEdit top = null;
    for (ScoreObject scoreObj : scoreObjects) {
        RemoveScoreObjectEdit edit = null;
        for (Layer layer : layers) {
            if (layer.remove(scoreObj)) {
                edit = new RemoveScoreObjectEdit((ScoreObjectLayer) layer, scoreObj);
                break;
            }
        }
        if (edit == null) {
            throw new RuntimeException("Error: Unable to find Layer to remove ScoreObject: Internal Error");
        }
        if (top == null) {
            top = edit;
        } else {
            top.appendNextEdit(edit);
        }
        content.remove(scoreObj);
    }
    BlueUndoManager.setUndoManager("score");
    BlueUndoManager.addEdit(top);
}
Also used : Score(blue.score.Score) ScoreObjectLayer(blue.score.layers.ScoreObjectLayer) ScoreObject(blue.score.ScoreObject) RemoveScoreObjectEdit(blue.ui.core.score.undo.RemoveScoreObjectEdit) Layer(blue.score.layers.Layer) ScoreObjectLayer(blue.score.layers.ScoreObjectLayer)

Aggregations

Layer (blue.score.layers.Layer)33 ScoreObjectLayer (blue.score.layers.ScoreObjectLayer)18 ArrayList (java.util.ArrayList)17 ScoreObject (blue.score.ScoreObject)13 Point (java.awt.Point)10 SoundLayer (blue.SoundLayer)9 LayerGroupDataEvent (blue.score.layers.LayerGroupDataEvent)6 ScorePath (blue.ui.core.score.ScorePath)6 SoundObject (blue.soundObject.SoundObject)4 BlueData (blue.BlueData)3 ScoreController (blue.ui.core.score.ScoreController)3 AddScoreObjectEdit (blue.ui.core.score.undo.AddScoreObjectEdit)3 MoveScoreObjectsEdit (blue.ui.core.score.undo.MoveScoreObjectsEdit)3 SoundObjectLibrary (blue.SoundObjectLibrary)2 AlphaMarquee (blue.components.AlphaMarquee)2 Score (blue.score.Score)2 LayerGroup (blue.score.layers.LayerGroup)2 GenericScore (blue.soundObject.GenericScore)2 Instance (blue.soundObject.Instance)2 PolyObject (blue.soundObject.PolyObject)2