SwingOSC – Java-based GUI classes

This class is meant as an emulation of SCDragSource / SCDragSink / SCDragBoth. last mod: 17-jul-09 sciss
Also refer to JSCView for different behaviour affecting all widgets

different behaviour
string compilationthe compilation of a string dragged from an external application happens at the end of the dnd gesture ; in cocoa gui, the string is compiled as soon as the mouse is moved over a gui component.
extended functionality
string compilationstring compilation can be switched off by calling interpretDroppedStrings_( false ).

 

JSCDragSink, JSCDragSink, JSCDragBoth

Note: please use the abstraction layer DragSource / DragSink / DragBoth if possible!

Drag+Drop Gadgets ; JSCDragSource can be a source of a drag gesture, JSCDragSink can be a target of a drag gesture. JSCDragBoth combines both a source and a target.

(
    var w, f, r;

    w = JSCWindow.new;
    f = FlowLayout( w.view.bounds );
    r = Rect( 0, 0, 150, 30 );
    w.view.decorator = f;
    JSCStaticText( w, r ).string_( "JSCDragSource" );
    x = JSCDragSource( w, r );
    f.nextLine;
    JSCStaticText( w, r ).string_( "JSCDragSink" );
    y = JSCDragSink( w, r );
    f.nextLine;
    JSCStaticText( w, r ).string_( "JSCDragBoth" );
    z = JSCDragBoth( w, r );
    w.front;
    f.nextLine;
    JSCStaticText( w, r ).string_( "Ctrl+Press+Move" );
    JSCSlider( w, r );
)

// detect drops
y.action = { arg butt;
    ("Woooha! We got "++butt.object).postln;
}

// set the object that can be dragged
x.object = "Schnucki 3000";
z.object = "Haschimoto";

External applications


Example: boot the local server, select the following code snipped and drag it onto the drag sink in the window created above:

(
    { Pan2.ar( SinOsc.ar( 220.5, mul: 0.5 ))}.play;
)

Example: drag the following snipped onto the slider:

(
    sqrt( 0.5 );
)

This automatic compilation can be switched off, by calling interpretDroppedStrings_( false ) (works with SwingOSC only!):

y.interpretDroppedStrings = false;
// now try again to drop a string onto the drag sink!