Package de.sciss.meloncillo.receiver

Examples of de.sciss.meloncillo.receiver.Receiver


  private boolean editCopy()
  {
    final List      v    = new ArrayList();
    final Application  app    = AbstractApplication.getApplication();
    Object        o;
    Receiver      rcv;
    List        collSelection;
    boolean        success = false;

    try {
      doc.bird.waitShared( Session.DOOR_RCV );
View Full Code Here


   */
  private boolean editPaste()
  {
    Transferable          t;
    java.util.List          coll, coll2, coll3;
    Receiver            rcv, rcv2;
    Transferable          o;
    Point2D              pt, pt2;
    boolean              success  = false;
    boolean              retry;
    AbstractCompoundEdit      edit;
    Object[]            args;
    final Application        app    = AbstractApplication.getApplication();
 
    try {
      t = app.getClipboard().getContents( this );
      if( t == null ) return false;
     
      if( t.isDataFlavorSupported( TransferableCollection.collectionFlavor )) {
        coll = (java.util.List) t.getTransferData( TransferableCollection.collectionFlavor );
      } else if( t.isDataFlavorSupported( Receiver.receiverFlavor )) {
        rcv = (Receiver ) t.getTransferData( Receiver.receiverFlavor );
        coll = new Vector( 1 );
        coll.add( rcv );
      } else {
        return false;
      }

      try {
        args = new Object[ 3 ];
       
        doc.bird.waitExclusive( Session.DOOR_RCV | Session.DOOR_GRP );
        coll2   = doc.getReceivers().getAll();
        coll3  = new ArrayList( coll2 );
        for( int i = 0; i < coll.size(); i++ ) {
          o = (Transferable) coll.get( i );
          if( o.isDataFlavorSupported( Receiver.receiverFlavor )) {
            rcv = (Receiver) o.getTransferData( Receiver.receiverFlavor );
            do {
              retry = false;
              for( int j = 0; j < coll3.size(); j++ ) {
                rcv2 = (Receiver) coll3.get( j );
                pt = rcv.getAnchor();
                if( pt.distance( rcv2.getAnchor() ) < 0.05 ) {
                  pt2 = new Point2D.Double( Math.min( 1.0, pt.getX() + 0.05 ),
                                Math.min( 1.0, pt.getY() + 0.05 ));
                  rcv.setAnchor( pt2 );
                  if( pt2.distance( pt ) > 0.05 ) retry = true;
                }
              }
            } while( retry );
            coll3.add( rcv );
          }
        } // for( i = 0; i < coll.size(); i++ )
        coll3.removeAll( coll2 ); // now only the new ones remain

        // ensure unique names
        for( int i = 0; i < coll3.size(); i++ ) {
          rcv = (Receiver) coll3.get( i );
          if( doc.getReceivers().findByName( rcv.getName() ) != null ) {
            Session.makeNamePattern( rcv.getName(), args );
            rcv.setName( BasicSessionCollection.createUniqueName( Session.SO_NAME_PTRN, args, coll2 ));
          }
          coll2.add( rcv );
        }
       
        if( !coll3.isEmpty() ) {
View Full Code Here

    //      a new related method createUniqueName( Collection theseNot );
    // @todo  should select new receives
    public void actionPerformed( ActionEvent e )
    {
      int        numi, result;
      Receiver    rcv;
      List      collNewRcv, coll2;
      Point2D      anchor;
      double      d1;
      Class      c;

      final List        collTypes  = Main.getReceiverTypes();
      final JPanel      msgPane    = new JPanel( new SpringLayout() );
      final NumberField    ggNum    = new NumberField( NumberSpace.createIntSpace( 1, 0x10000 ));
      final JComboBox      ggType    = new JComboBox();

      for( int i = 0; i < collTypes.size(); i++ ) {
        ggType.addItem( collTypes.get( i ));
      }
     
      ggNum.setNumber( num );
      if( type != null ) ggType.setSelectedItem( type );

      msgPane.add( ggNum );
      msgPane.add( ggType );
      GUIUtil.makeCompactSpringGrid( msgPane, 1, 2, 4, 2, 4, 2 )// #row #col initx inity padx pady
//      HelpGlassPane.setHelp( msgPane, getValue( NAME ).toString() );  // EEE
   
      result = JOptionPane.showOptionDialog( null, msgPane,
        AbstractApplication.getApplication().getResourceString( "inputDlgNewReceivers" ),
        JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE,
        null, queryOptions, queryOptions[ 1 ]);
       
      if( result != 1 ) return;

      num    = ggNum.getNumber();
      type  = (StringItem) ggType.getSelectedItem();
      numi  = num.intValue();
     
      try {
        doc.bird.waitExclusive( Session.DOOR_RCV | Session.DOOR_GRP );
        // we get a list of known receivers from the main class
        // and create a new instance of the first receiver class
        // in the list; in the future when there are more types
        // apart from SigmaReceiver, we could display a selection
        // dialog or the like...
        c    = Class.forName( type.getKey() );
        collNewRcv  = new ArrayList();
        coll2  = doc.getReceivers().getAll();
        for( int i = 0; i < numi; i++ ) {
          d1  = ((double) i / (double) numi - 0.25) * Math.PI * -2;
//          anchor = new Point2D.Double( 0.25 * (2.0 + Math.cos( d1 )), 0.25 * (2.0 + Math.sin( d1 )));
          anchor = new Point2D.Double( 0.5 * + Math.cos( d1 ), 0.5 * Math.sin( d1 ));
          rcv = (Receiver) c.newInstance();
          rcv.setAnchor( anchor );
//          rcv.setSize( new Dimension2DDouble( 0.5, 0.5 ));
          rcv.setName( BasicSessionCollection.createUniqueName( Session.SO_NAME_PTRN,
            new Object[] { new Integer( 1 ), Session.RCV_NAME_PREFIX, Session.RCV_NAME_SUFFIX },
            coll2 ));
          doc.getReceivers().getMap().copyContexts( this, MapManager.Context.FLAG_DYNAMIC,
                             MapManager.Context.NONE_EXCLUSIVE, rcv.getMap() );
          collNewRcv.add( rcv );
          coll2.add( rcv );
        }
        final BasicCompoundEdit edit = new BasicCompoundEdit( getValue( NAME ).toString() );
        if( !doc.getSelectedGroups().isEmpty() ) {
View Full Code Here

    {
      int      rcvIdx, i;
      int      numRcv = doc.getActiveReceivers().size();
      float    f1 = 0.0f, f2 = 0.0f, f3 = 0.0f, f4;
      String    loudest1 = null, loudest2 = null;
      Receiver  rcv;
      float[]    sense  = new float[1];
      float[][]  points  = new float[2][1];
     
      points[0][0] = (float) ptCurrentMouse.getX();
      points[1][0] = (float) ptCurrentMouse.getY();
     
      for( rcvIdx = 0; rcvIdx < numRcv; rcvIdx++ ) {
        rcv = (Receiver) doc.getActiveReceivers().get( rcvIdx );
        rcv.getSensitivities( points, sense, 0, 1, 1 );
        f4  = sense[0];
        if( f4 > f1 ) {
          f2      = f1;
          loudest2  = loudest1;
          f1      = f4;
          loudest1  = rcv.getName();
        } else if( f4 > f2 ) {
          f2      = f4;
          loudest2  = rcv.getName();
        }
        if( prefRcvEqP ) {
          f3 += f4*f4;
        } else {
          f3 += f4;
View Full Code Here

   */
  private Receiver createReceiver( Point2D anchor)
  {
    final List    collTypes  = Main.getReceiverTypes();
    final List    collNewRcv;
    Receiver    rcv      = null;
    Class      c;

    try {
//      doc.bird.waitExclusive( Session.DOOR_RCV | Session.DOOR_GRP );
      // we get a list of known receivers from the main class
      // and create a new instance of the first receiver class
      // in the list; in the future when there are more types
      // apart from SigmaReceiver, we could display a selection
      // dialog or the like...
      c   = Class.forName( (String) ((StringItem) collTypes.get( 0 )).getKey() );
      rcv = (Receiver) c.newInstance();
      rcv.setAnchor( anchor );
//      rcv.setSize( new Dimension2DDouble( 0.5, 0.5 ));
      rcv.setName( BasicSessionCollection.createUniqueName( Session.SO_NAME_PTRN,
        new Object[] { new Integer( 1 ), Session.RCV_NAME_PREFIX, Session.RCV_NAME_SUFFIX },
        doc.getReceivers().getAll() ));
      doc.getReceivers().getMap().copyContexts( this, MapManager.Context.FLAG_DYNAMIC,
                         MapManager.Context.NONE_EXCLUSIVE, rcv.getMap() );         
      collNewRcv = Collections.singletonList( rcv );

      if( doc.getSelectedGroups().isEmpty() ) {
        final PerformableEdit edit;
        edit  = new EditAddSessionObjects( this, doc.getMutableReceivers(), collNewRcv );
View Full Code Here

   *
   *  @synchronization  waitShared on DOOR_RCV + DOOR_GRP
   */
    private void updateReceiverShapes()
    {
        Receiver    rcv;
        final List    collRcv;
    final List    collRcvSel;

    collRcvSel  = doc.getSelectedReceivers().getAll();
    collRcv    = doc.getActiveReceivers().getAll();
    collReceiverShapes.clear();
    for( int i = 0; i < collRcv.size(); i++ ) {
      rcv = (Receiver) collRcv.get( i );
      collReceiverShapes.add( new ReceiverShape(
                rcv.getAnchor(), rcv.getOutline(), rcv.getName(), collRcvSel.contains( rcv )));
    }
    }
View Full Code Here

    public void mousePressed( MouseEvent e )
    {
      Point2D      ptMouse      = e.getPoint();
      Point2D      ptReceiver;
      Point2D      ptReceiverTrns;
      Receiver    rcv;
      Rectangle2D    clipRect, clipRect2;
      double      distanceSq;
      double      hitDistSq    = 51.0;    // Mouse must be as close at 5 pixels delta-h and delta-v
      Receiver    hitReceiver    = null;
      int        i;
      List       coll;
      PerformableEdit  edit;
      List      collRcv;

      e.getComponent().requestFocus()// otherwise keyboard shortcuts etc. don't work

      if( !doc.bird.attemptShared( Session.DOOR_RCV | Session.DOOR_GRP, 250 )) return;
      try {
        collRcv = doc.getActiveReceivers().getAll();
        for( i = 0; i < collRcv.size(); i++ ) {
          rcv = (Receiver) collRcv.get( i );
          ptReceiver = rcv.getAnchor();
          ptReceiverTrns = virtualToScreen( ptReceiver );
          distanceSq = ptReceiverTrns.distanceSq( ptMouse );
          if( distanceSq < hitDistSq ) {
            hitDistSq   = distanceSq;
            hitReceiver  = rcv;
          }
        }

        // prepare DnD
        if( hitReceiver != null ) {
          dndFirstEvent   = e;    // mouseDragged() will detect this
          dndDragging    = false// a follow-up mouse move is still required to start the drag
        } else {
          dndFirstEvent   = null;
        }

        // manage (de)selection
        if( e.isShiftDown() || e.isMetaDown() ) {    // multi-selection by holding down the shift or cmd key
          if( hitReceiver != null ) {          // selection changed indeed
            coll = doc.getSelectedReceivers().getAll();
            if( !coll.contains( hitReceiver )) {  // add object to selection
              coll.add( hitReceiver );
            } else {                // remove object from selection
              coll.remove( hitReceiver );
            }
            edit = new EditSetSessionObjects( this, doc.getMutableSelectedReceivers(), coll );
            doc.getUndoManager().addEdit( edit.perform() );
            updateReceiverShapes();
            redrawImage();
            repaint( virtualToScreenClip( hitReceiver.getBounds() ));
          }
        } else {        // single-selection
          coll = doc.getSelectedReceivers().getAll();
          if( (hitReceiver == null && !coll.isEmpty()) ||
            (hitReceiver != null && !coll.contains( hitReceiver ))) {  // selection changed indeed
           
            clipRect = getUnionRect( coll );
            coll.clear();
            if( hitReceiver != null ) {
              coll.add( hitReceiver );
              clipRect2 = hitReceiver.getBounds();
            } else {
              clipRect2 = null;
            }
            edit = new EditSetSessionObjects( this, doc.getMutableSelectedReceivers(), coll );
            doc.getUndoManager().addEdit( edit.perform() );
View Full Code Here

      finishGesture();
    } // mouseReleased( MouseEvent e )

    public void mouseClicked( MouseEvent e )
    {
      Receiver    rcv;
      Rectangle2D    clipRect;
      ReceiverEditor  rcvEdit;
      AbstractWindow  rcvEditFrame;
      List      coll;
      PerformableEdit  edit;

      if( !doc.bird.attemptShared( Session.DOOR_RCV, 250 )) return;
      try {
        if( doc.getSelectedReceivers().isEmpty() ) {
          if( e.getClickCount() == 2 ) {  // double click creates new Receiver
            rcv = createReceiver( screenToVirtual( e.getPoint() ));
            if( rcv != null ) {
              coll = doc.getSelectedReceivers().getAll();
              coll.add( rcv );
              edit = new EditSetSessionObjects( this, doc.getMutableSelectedReceivers(), coll );
              doc.getUndoManager().addEdit( edit.perform() );
              clipRect = rcv.getBounds();
              updateSurfacePaneImage( clipRect );
              updateReceiverShapes();
              redrawImage();
              repaint( virtualToScreenClip( clipRect ));
            }
          }
         
        } else { // items have been selected
          if( e.getClickCount() == 2 && doc.getSelectedReceivers().size() == 1 ) {  // double click opens editor
            rcv    = (Receiver) doc.getSelectedReceivers().get( 0 );
            final Class clz = rcv.getDefaultEditor();
            final Constructor cons = clz.getConstructor( new Class[] { Session.class });
            rcvEdit = (ReceiverEditor) cons.newInstance( new Object[] { doc })// XXX deligate to SurfacePaneFrame
            rcvEdit.init( rcv );
            rcvEditFrame = rcvEdit.getView();
            rcvEditFrame.setVisible( true );
View Full Code Here

      Point2D      ptDeltaMouse  = new Point2D.Double( e.getPoint().getX() - dndFirstEvent.getPoint().getX(),
                                  e.getPoint().getY() - dndFirstEvent.getPoint().getY() );
      Point2D      ptMouseTrns, ptAnchor;
      Rectangle2D    dndCurrentRect;
      int        i;
      Receiver    rcv;
      List      dndColl;
      PerformableEdit  edit;
     
      if( !dndDragging ) {  // test if mouse move was sufficient
        if( ptDeltaMouse.getX()*ptDeltaMouse.getX()+ptDeltaMouse.getY()*ptDeltaMouse.getY() <= 25.0 ) return;
      }

      dndColl = doc.getSelectedReceivers().getAll();
      if( !dndDragging ) {
        dndDragging    = true;
        dndRecentRect   = getUnionRect( dndColl );
        dndAnchorRef.clear();
        for( i = 0; i < dndColl.size(); i++ ) {
          rcv = (Receiver) dndColl.get( i );
          dndAnchorRef.put( rcv, rcv.getAnchor() );
        }
      }
//      ptMouseTrns = screenToVirtual( ptDeltaMouse );
      final Point2D ptTrns1 = screenToVirtual( dndFirstEvent.getPoint() );
      final Point2D ptTrns2 = screenToVirtual( e.getPoint() );
View Full Code Here

TOP

Related Classes of de.sciss.meloncillo.receiver.Receiver

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.