Search in sources :

Example 1 with Preset

use of blue.orchestra.blueSynthBuilder.Preset in project blue by kunstmusik.

the class PresetPane method setPresetsMenu.

private void setPresetsMenu(PresetGroup pGroup, Menu parent) {
    for (PresetGroup subGroup : pGroup.getSubGroups()) {
        Menu menu = new Menu(subGroup.getPresetGroupName());
        setPresetsMenu(subGroup, menu);
        if (parent == null) {
            rootMenu.getItems().add(menu);
        } else {
            parent.getItems().add(menu);
        }
    }
    for (Preset preset : pGroup.getPresets()) {
        MenuItem item = new MenuItem(preset.getPresetName());
        item.setUserData(preset);
        item.setOnAction(presetSelectedAction);
        if (parent == null) {
            rootMenu.getItems().add(item);
        } else {
            parent.getItems().add(item);
        }
    }
    if (parent == null) {
        rootMenu.getItems().add(new SeparatorMenuItem());
    } else {
        parent.getItems().add(new SeparatorMenuItem());
    }
    MenuItem addFolder = new MenuItem("Add Folder");
    addFolder.setUserData(pGroup);
    addFolder.setOnAction(addFolderAction);
    MenuItem addPreset = new MenuItem("Add Preset");
    addPreset.setUserData(pGroup);
    addPreset.setOnAction(addPresetAction);
    if (parent == null) {
        MenuItem syncPresets = new MenuItem("Synchronize Presets");
        syncPresets.setOnAction(e -> {
            PresetsUtilities.synchronizePresets(getPresetGroup(), bsbInterface);
        });
        MenuItem managePresets = new MenuItem("Manage Presets");
        managePresets.setOnAction(e -> {
            PresetGroup[] retVal = new PresetGroup[1];
            CountDownLatch latch = new CountDownLatch(1);
            SwingUtilities.invokeLater(() -> {
                try {
                    if (presetsManager == null) {
                        presetsManager = new PresetsManagerDialog(WindowManager.getDefault().getMainWindow());
                    }
                    retVal[0] = presetsManager.editPresetGroup(pGroup);
                } finally {
                    latch.countDown();
                }
            });
            try {
                latch.await();
            } catch (InterruptedException ex) {
                Exceptions.printStackTrace(ex);
            }
            if (retVal[0] != null) {
                pGroup.setPresets(retVal[0].getPresets());
                pGroup.setSubGroups(retVal[0].getSubGroups());
                updatePresetMenu();
                Preset preset = pGroup.findPresetByUniqueId(pGroup.getCurrentPresetUniqueId());
                if (preset == null) {
                    pGroup.setCurrentPresetUniqueId(null);
                    pGroup.setCurrentPresetModified(false);
                }
                updateCurrentPresetUI();
            }
        });
        rootMenu.getItems().addAll(addFolder, addPreset, new SeparatorMenuItem(), syncPresets, managePresets);
    } else {
        parent.getItems().addAll(addFolder, addPreset);
    }
}
Also used : Preset(blue.orchestra.blueSynthBuilder.Preset) PresetGroup(blue.orchestra.blueSynthBuilder.PresetGroup) MenuItem(javafx.scene.control.MenuItem) SeparatorMenuItem(javafx.scene.control.SeparatorMenuItem) ContextMenu(javafx.scene.control.ContextMenu) Menu(javafx.scene.control.Menu) SeparatorMenuItem(javafx.scene.control.SeparatorMenuItem) CountDownLatch(java.util.concurrent.CountDownLatch) PresetsManagerDialog(blue.orchestra.editor.blueSynthBuilder.PresetsManagerDialog)

Example 2 with Preset

use of blue.orchestra.blueSynthBuilder.Preset in project blue by kunstmusik.

the class TransferablePreset method dragGestureRecognized.

@Override
public void dragGestureRecognized(DragGestureEvent dge) {
    TreePath path = sourceTree.getSelectionPath();
    if ((path == null) || (path.getPathCount() <= 1)) {
        // We can't really move the root node (or an empty selection).
        return;
    }
    if (path.getLastPathComponent() instanceof Preset || path.getLastPathComponent() instanceof PresetGroup) {
        oldNode = path.getLastPathComponent();
        transferable = new TransferablePreset(oldNode);
        source.startDrag(dge, null, transferable, this);
    }
}
Also used : TreePath(javax.swing.tree.TreePath) Preset(blue.orchestra.blueSynthBuilder.Preset) PresetGroup(blue.orchestra.blueSynthBuilder.PresetGroup)

Example 3 with Preset

use of blue.orchestra.blueSynthBuilder.Preset in project blue by kunstmusik.

the class PresetsTreeModel method valueForPathChanged.

/*
     * (non-Javadoc)
     * 
     * @see javax.swing.tree.TreeModel#valueForPathChanged(javax.swing.tree.TreePath,
     *      java.lang.Object)
     */
@Override
public void valueForPathChanged(TreePath path, Object newValue) {
    Object obj = path.getLastPathComponent();
    if (obj instanceof PresetGroup) {
        ((PresetGroup) obj).setPresetGroupName(newValue.toString());
    } else if (obj instanceof Preset) {
        ((Preset) obj).setPresetName(newValue.toString());
    }
    TreeModelEvent e = new TreeModelEvent(this, path);
    fireNodesChanged(e);
}
Also used : TreeModelEvent(javax.swing.event.TreeModelEvent) Preset(blue.orchestra.blueSynthBuilder.Preset) PresetGroup(blue.orchestra.blueSynthBuilder.PresetGroup)

Example 4 with Preset

use of blue.orchestra.blueSynthBuilder.Preset in project blue by kunstmusik.

the class PresetPane method updateCurrentPresetUI.

protected void updateCurrentPresetUI() {
    if (getPresetGroup() == null) {
        return;
    }
    if (getPresetGroup().getCurrentPresetUniqueId() == null) {
        currentPresetText.setText(" No Preset Selected");
        updateButton.setDisable(true);
        ;
    } else {
        PresetGroup pGroup = getPresetGroup();
        Preset preset = pGroup.findPresetByUniqueId(pGroup.getCurrentPresetUniqueId());
        String presetText = " Current Preset: ";
        if (preset != null) {
            String presetPath = pGroup.getPresetFullPathName(pGroup.getCurrentPresetUniqueId());
            presetText += presetPath;
        }
        currentPresetText.setText(presetText);
        updateButton.setDisable(false);
    }
}
Also used : Preset(blue.orchestra.blueSynthBuilder.Preset) PresetGroup(blue.orchestra.blueSynthBuilder.PresetGroup)

Example 5 with Preset

use of blue.orchestra.blueSynthBuilder.Preset in project blue by kunstmusik.

the class PresetPane method addPreset.

/**
 * @param currentPresetGroup
 */
private void addPreset(PresetGroup currentPresetGroup) {
    TextInputDialog dlg = new TextInputDialog();
    dlg.setTitle("Enter Preset Name");
    dlg.setHeaderText("Enter Preset Name");
    dlg.setGraphic(null);
    BlueFX.style(dlg.getDialogPane());
    Optional<String> str = dlg.showAndWait();
    if (!str.isPresent() || str.get().length() == 0) {
        return;
    }
    Preset preset = Preset.createPreset(bsbInterface);
    preset.setPresetName(str.get());
    currentPresetGroup.getPresets().add(preset);
    Collections.sort(currentPresetGroup.getPresets());
    getPresetGroup().setCurrentPresetUniqueId(preset.getUniqueId());
    getPresetGroup().setCurrentPresetModified(false);
    updatePresetMenu();
    updateCurrentPresetUI();
}
Also used : Preset(blue.orchestra.blueSynthBuilder.Preset) TextInputDialog(javafx.scene.control.TextInputDialog)

Aggregations

Preset (blue.orchestra.blueSynthBuilder.Preset)7 PresetGroup (blue.orchestra.blueSynthBuilder.PresetGroup)6 TreePath (javax.swing.tree.TreePath)2 PresetsManagerDialog (blue.orchestra.editor.blueSynthBuilder.PresetsManagerDialog)1 Point (java.awt.Point)1 DataFlavor (java.awt.datatransfer.DataFlavor)1 Transferable (java.awt.datatransfer.Transferable)1 UnsupportedFlavorException (java.awt.datatransfer.UnsupportedFlavorException)1 DropTargetContext (java.awt.dnd.DropTargetContext)1 IOException (java.io.IOException)1 CountDownLatch (java.util.concurrent.CountDownLatch)1 ContextMenu (javafx.scene.control.ContextMenu)1 Menu (javafx.scene.control.Menu)1 MenuItem (javafx.scene.control.MenuItem)1 SeparatorMenuItem (javafx.scene.control.SeparatorMenuItem)1 TextInputDialog (javafx.scene.control.TextInputDialog)1 JTree (javax.swing.JTree)1 TreeModelEvent (javax.swing.event.TreeModelEvent)1