Package de.sciss.util

Examples of de.sciss.util.Flag


//    final AudioFileDescr  displayAFD  = doc.getDisplayDescr();
    final String      name;
    final JOptionPane    op;
    final JDialog       d;
    final JRootPane      rp;
    final Flag        dont    = new Flag( false );
    AudioFileDescr[]    afds    = doc.getDescr();
   
    if( doc.getName() == null ) {
      name = getResourceString( "frameUntitled" );
    } else {
      name = doc.getName();
    }
   
//    choice = JOptionPane.showOptionDialog( getWindow(), name + " :\n" + getResourceString( "optionDlgUnsaved" ),
//                         actionName, JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE, null,
//                         options, options[1] );
    op = new JOptionPane( name + " :\n" + getResourceString( "optionDlgUnsaved" ),
                          JOptionPane.WARNING_MESSAGE, JOptionPane.YES_NO_CANCEL_OPTION, null,
                          options, options[ 1 ]);
    d = op.createDialog( getWindow(), actionName );
    rp = d.getRootPane();
    if( rp != null ) {
      rp.getInputMap( JComponent.WHEN_IN_FOCUSED_WINDOW ).put(
        KeyStroke.getKeyStroke( KeyEvent.VK_D, BasicMenuFactory.MENU_SHORTCUT ), "dont" );
      rp.getActionMap().put( "dont", new AbstractAction() {
        public void actionPerformed( ActionEvent e )
        {
          dont.settrue );
          d.dispose();
        }
      });
    }
    BasicWindowHandler.showDialog( d );
//    d.setVisible( true );
    if( dont.isSet() ) {
      choice = 2;
    } else {
      final Object value = op.getValue();
      if( (value == null) || (value == options[ 1 ])) {
        choice = 1;
View Full Code Here


      perform();
    }
   
    public void perform()
    {
      final ProcessingThread pt = closeDocument( false, new Flag( false ));
      if( pt != null ) doc.start( pt );
    }
View Full Code Here

 
  private boolean forcedQuit = false;

  public synchronized void quit()
  {
    final Flag        confirmed  = new Flag( false );
    final ProcessingThread  pt      = getMenuFactory().closeAll( forcedQuit, confirmed );

    if( pt != null ) {
      pt.addListener( quitAfterSaveListener );
      ((BasicDocument) pt.getClientArg( "doc" )).start( pt );
    } else if( confirmed.isSet() ) {
      OSCRoot.getInstance().quit();
      SuperColliderClient.getInstance().quit();
      super.quit();
    }
  }
View Full Code Here

    hideAndDispose();
 
    if( (context == null) || (plugIn == null) || !doc.checkProcess() ) return;
 
    final ConsumerContext  consc;
    final Flag        hasSelectedAudio  = new Flag( false );
    final RenderSource    source;
    final List        tis          = context.getTrackInfos();
    final int        inTrnsLen, outTrnsLen;
    final int        minBlockSize, maxBlockSize, prefBlockSize;
    final Set        newOptions;
    final RandomAccessRequester rar;
    final long        pasteLength, preMaxLen, postMaxLen;
    final Span        span;
//    final int        numClipChannels    = 0;
    boolean          hasSelectedMarkers  = false;
    Track.Info        ti;
    Object          val;

    consc      = new ConsumerContext();
    consc.plugIn  = plugIn;
    consc.doc    = doc;
    context.setOption( KEY_CONSC, consc );
   
    source      = new RenderSource( context );
   
    if( !AudioTracks.checkSyncedAudio( tis, consc.plugIn.getLengthPolicy() == RenderPlugIn.POLICY_MODIFY, null, hasSelectedAudio )) {
      return; // FAILED;
    }
    source.validAudio = (consc.plugIn.getAudioPolicy() == RenderPlugIn.POLICY_MODIFY) && hasSelectedAudio.isSet();
    for( int i = 0; i < tis.size(); i++ ) {
      ti = (Track.Info) tis.get( i );
      if( (ti.trail instanceof MarkerTrail) && ti.selected ) {
        hasSelectedMarkers = true;
        break;
View Full Code Here

      if( rom.msg.getArgCount() > 1 ) {
        force = ((Number) rom.msg.getArg( 1 )).intValue() != 0;
      } else {
        force = false;
      }
      proc = closeDocument( force, new Flag( false ));
      if( proc != null ) start( proc );
    }
    catch( IndexOutOfBoundsException e1 ) {
      OSCRoot.failedArgCount( rom );
      return;
View Full Code Here

      if( (insertPos < 0) || (insertPos > timeline.getLength()) ) throw new IllegalArgumentException( String.valueOf( insertPos ));
     
      final ProcessingThread    proc;
      final Span          oldSelSpan, insertSpan, copySpan, cutTimelineSpan;
      final AbstractCompoundEdit  edit;
      final Flag          hasSelectedAudio;
      final List          tis;
      final boolean        expTimeline, cutTimeline;
      final long          docLength, pasteLength, preMaxLen, postMaxLen;
      final BlendContext      bcPre, bcPost;
     
      hasSelectedAudio  = new Flag( false );
      tis          = Track.getInfos( selectedTracks.getAll(), tracks.getAll() );
      if( !AudioTracks.checkSyncedAudio( tis, mode == EDIT_INSERT, null, hasSelectedAudio )) return null;

      expTimeline      = (mode == EDIT_INSERT) && hasSelectedAudio.isSet();
      docLength      = timeline.getLength();
      pasteLength      = expTimeline ? tl.getSpan().getLength() :
        Math.min( tl.getSpan().getLength(), docLength - insertPos );
      if( pasteLength == 0 ) return null;
     
      if( mode == EDIT_INSERT ) {
        /*
         *  before paste:
         *
         *   maxRight / post   maxLeft / pre
         *
         *  |                 |              |
         *  |                 |              |
         *  |                 |              |
         *  |        A        |     B        |
         *  +-----------------+--------------+
         *                    |
         *                 insertPos
         *
         *  after paste:
         *
         *  |                 | B #$$$$# A |              |
         *  |                 |  ##$$$$##  |              |
         *  |                 | ###$$$$### |              |
         *  |        A        |####$$$$####|      B       |
         *  +-----------------+------------+--------------+
         *                    |
         *                 insertPos
         */
        // note: now the discrepancy between postMaxLen and preMaxLen is
        // limited to 100%, so pasting at the very end or beginning of
        // a doc will not produce a single sided xfade any more
        // (answering bug 1922862)
        if( insertPos < (docLength - insertPos) ) {
          postMaxLen  = Math.min( insertPos, pasteLength >> 1 );
//          preMaxLen  = Math.min( docLength - insertPos, pasteLength - postMaxLen );
          preMaxLen  = Math.min( postMaxLen << 1, Math.min( docLength - insertPos, pasteLength - postMaxLen ));
//System.out.println( "A" );
        } else {
          preMaxLen  = Math.min( docLength - insertPos, pasteLength >> 1 );
          postMaxLen  = Math.min( preMaxLen << 1, Math.min( insertPos, pasteLength - preMaxLen ));
//System.out.println( "B" );
        }
      } else {
        preMaxLen  = pasteLength >> 1// note: pasteLength already clipped to be <= docLength - insertPos !
        postMaxLen  = pasteLength - preMaxLen;
//System.out.println( "C" );
      }
      bcPre      = createBlendContext( preMaxLen, 0, hasSelectedAudio.isSet() );
      bcPost      = createBlendContext( postMaxLen, 0, hasSelectedAudio.isSet() );
//System.out.println( "D ; preMaxLen = " + preMaxLen + "; postMaxLen = " + postMaxLen + "; bcPre.getLeftLen() = " + (bcPre == null ? null : String.valueOf( bcPre.getLeftLen())) + "; bcPre.getRightLen() = " + (bcPre == null ? null : String.valueOf( bcPre.getRightLen() )) + "; bcPost.getLeftLen() = " + (bcPost == null ? null : String.valueOf( bcPost.getLeftLen() )) + "; bcPost.getRightLen() = " + (bcPost == null ? null : String.valueOf( bcPost.getRightLen() )));

//      if( bcPre != null )  System.out.println( "bcPre  : " + bcPre.getLen() + ", " + bcPre.getLeftLen() + ", "+ bcPre.getRightLen() );
//      if( bcPost != null ) System.out.println( "bcPost : " + bcPost.getLen() + ", " + bcPost.getLeftLen() + ", "+ bcPost.getRightLen() );
     
      insertSpan      = new Span( insertPos, insertPos + pasteLength );
      copySpan      = new Span( tl.getSpan().start, tl.getSpan().start + pasteLength );
      cutTimeline      = (mode == EDIT_INSERT) && !hasSelectedAudio.isSet();
      cutTimelineSpan    = cutTimeline ? new Span( docLength, docLength + pasteLength ) : null;
     
      edit      = new BasicCompoundEdit( procName );
      oldSelSpan    = timeline.getSelectionSpan();
      if( !oldSelSpan.isEmpty() ) { // deselect
View Full Code Here

    {
      if( !checkProcess() ) return null;

      final BlendContext      bc;
      final long          cutLength, docLength, newDocLength, maxLen;
      final Flag          hasSelectedAudio;
      final List          tis;
      final AbstractCompoundEdit  edit;
      final boolean         cutTimeline;
      final Span          cutTimelineSpan, selSpan;
      Span            visiSpan;

      hasSelectedAudio  = new Flag( false );
      tis          = Track.getInfos( selectedTracks.getAll(), tracks.getAll() );
      if( !AudioTracks.checkSyncedAudio( tis, mode == EDIT_INSERT, null, hasSelectedAudio )) return null;
     
      docLength      = timeline.getLength();
      cutLength      = span.getLength();
      if( mode == EDIT_INSERT ) {
        /*
         *  before delete:
         *
         *  |,,,,,,,,,,,,,,,,,|$$$$$$$#######|............|
         *  |,,,,,,,,,,,,,,,,,|$$$$$$$#######|............|
         *  |,,,,,,,,,,,,,,,,,|$$$$$$$#######|............|
         *  |,,,,,,,,A,,,,,,,,|$$B1$$$###B2##|......C.....|
         *  +-----------------+--------------+------------+
         *                    |     span     |
         *
         *  after delete:
         *                left right
         *  |,,,,,,,,,,,,,    |            |
         *  |,,,,,,,,,,,,,,,  |            |
         *  |,,,,,,,,,,,,,,,,,|            |
         *  |,,,,,,,,,,,,,,,,,|$$          |
         *  |,,,,,,,,,,,,,,,,,|$$$$        |
         *  |,,,,,,,,A,,,,,,,,|$B2$$$      |
         *  +-----------------+------------+
         *                    |
         *      plus
         *  |                 |    ........|
         *  |                 |  ..........|
         *  |                 |............|
         *  |               ##|............|
         *  |             ####|............|
         *  |           ###B2#|......C.....|
         *  +-----------------+------------+
         *                    |
         *                span.start
         */
        maxLen        = Math.min( cutLength, Math.min( span.start, docLength - span.stop ) << 1 );
        bc          = createBlendContext( maxLen >> 1, (maxLen + 1) >> 1, hasSelectedAudio.isSet() );
      } else {
        /*
         *  after delete:
         *                     blend-   blend-
         *                     Len      Len
         *  |,,,,,,,,,,,,,,,,,|$            #|............|
         *  |,,,,,,,,,,,,,,,,,|$$          ##|............|
         *  |,,,,,,,,,,,,,,,,,|$$$        ###|............|
         *  |,,,,,,,,A,,,,,,,,|$B1$      #B2#|......C.....|
         *  +-----------------+--------------+------------+
         *                    |     span     |
         */
        maxLen        = cutLength >> 1;
        bc          = createBlendContext( maxLen, 0, hasSelectedAudio.isSet() );
      }
//      bc          = createBlendContext( Math.min( cutLength, span.start ), Math.min( cutLength, docLength - span.stop ), hasSelectedAudio );
      edit        = new BasicCompoundEdit( procName );

//      if( bc != null )  System.out.println( "bc  : " + bc.getLen() + ", " + bc.getLeftLen() + ", "+ bc.getRightLen() );
     
      cutTimeline      = (mode == EDIT_INSERT) && hasSelectedAudio.isSet();
      newDocLength    = cutTimeline ? docLength - cutLength : docLength;
      cutTimelineSpan    = cutTimeline ? new Span( newDocLength, docLength ) : null;
      selSpan        = timeline.getSelectionSpan();
     
      if( (mode == EDIT_INSERT) && !selSpan.isEmpty() ) {
View Full Code Here

    final Container          cp          = getContentPane();
    final Application        app          = AbstractApplication.getApplication();
//    final ActionListener      lafActionListener;
    final OSCRoot          osc;
    final PrefCacheManager      cm;
    final Flag            haveWarned      = new Flag( false );
    final String          txtWarnLookAndFeel  = getResourceString( "warnLookAndFeelUpdate" );

    final TreeExpanderButton    ggTreeAudio;
    final List            collAudioAdvanced;
    SpringPanel            tab;
View Full Code Here

//  }
 
  protected void showAudioBoxAssistent()
  {
    final String        scsynthPath;
    final Flag          keepThreadRunning  = new Flag( true );
    final Flag          threadRunning    = new Flag( true );
//    final JOptionPane      op;
//    final JDialog        dlg;
//    final SpringPanel      pane;
    final JPanel        pane;
    final SpringPanel      pane2;
    final Thread        testThread;
    final Runnable        runResult;
    final IndeterminateSpinner  ggSpinner;
    final JLabel        ggLabel;
    final JList          ggListAdd, ggListActivate, ggListRemove;
    final Box          b;
    final JComboBox        ggComboAdd, ggComboActivate, ggComboRemove;
    final int          result;
    JScrollPane          ggScroll;
//    JSeparator          ggSep;
    int              row, action;
    AudioBoxConfig        cfg;
   
    final List          collDetected    = Collections.synchronizedList( new ArrayList() );
    final List           collAdd        = new ArrayList();
    final List           collActivate    = new ArrayList();
    final List           collRemove      = new ArrayList();
   
    // this doesn't show up obivously, so we add it manually...
    collDetected.add( new AudioBoxConfig( AudioBoxConfig.ID_DEFAULT, "Default", 8, 8, true ));
   
    scsynthPath = audioPrefs.get( PrefsUtil.KEY_SUPERCOLLIDERAPP, null );
    if( scsynthPath == null ) {
      System.err.println( getResourceString( "errSCSynthAppNotFound" ));
      return;
    }
   
    pane = new JPanel( new BorderLayout() );
//pane.setBackground( Color.white );
    ggSpinner = new IndeterminateSpinner( 24 );
    b = Box.createHorizontalBox();
//    pane.gridAdd( ggSpinner, 0, 0 );
    b.add( ggSpinner );
    b.add( Box.createHorizontalStrut( 4 ));
    ggLabel = new JLabel( "Searching for Audio Devices..." );
//    ggLabel.setBorder( BorderFactory.createEmptyBorder( 0, 4, 0, 0 ));
//    pane.gridAdd( ggLabel, 1, 0 );
    b.add( ggLabel );
    pane.add( b, BorderLayout.NORTH );
   
    pane2 = new SpringPanel( 0, 0, 4, 2 );
    row = 0;
    ggListAdd = new JList();
    ggScroll = new JScrollPane( ggListAdd );
    pane2.gridAdd( new JLabel( "Detected new devices:" ), 0, row++, 2, 1 );
    pane2.gridAdd( ggScroll, 0, row++, 2, 1 );
    pane2.gridAdd( new JLabel( "Action:", RIGHT ), 0, row );
    ggComboAdd = new JComboBox( new Object[] { "Ignore", "Add to list" });
    pane2.gridAdd( ggComboAdd, 1, row++ );
    pane2.gridAdd( createVSep(), 0, row++, 2, 1 );

    ggListActivate = new JList();
    ggScroll = new JScrollPane( ggListActivate );
    pane2.gridAdd( new JLabel( "Detected deactivated devices:" ), 0, row++, 2, 1 );
    pane2.gridAdd( ggScroll, 0, row++, 2, 1 );
    pane2.gridAdd( new JLabel( "Action:", RIGHT ), 0, row );
    ggComboActivate = new JComboBox( new Object[] { "Ignore", "Make active" });
    pane2.gridAdd( ggComboActivate, 1, row++ );
    pane2.gridAdd( createVSep(), 0, row++, 2, 1 );

//    ggSep  = new JSeparator();
//    ggSep.setBorder( BorderFactory.createEmptyBorder( 8, 0, 8, 0 ));
//    pane2.gridAdd( ggSep, 0, row++, 2, 1 );
    ggListRemove = new JList();
    ggScroll = new JScrollPane( ggListRemove );
    pane2.gridAdd( new JLabel( "Devices not found:" ), 0, row++, 2, 1 );
    pane2.gridAdd( ggScroll, 0, row++, 2, 1 );
    pane2.gridAdd( new JLabel( "Action:", RIGHT ), 0, row );
    ggComboRemove = new JComboBox( new Object[] { "Ignore", "Make inactive", "Remove from list" });   
    pane2.gridAdd( ggComboRemove, 1, row++ );
    pane2.setVisible( false );
    pane.add( pane2, BorderLayout.CENTER );
    AbstractWindowHandler.setDeepFont( pane );
   
//    op = new JOptionPane( pane, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION,
//        new ImageIcon( GUIUtil.class.getResource( "assistent_64x64.png" )));
//    dlg = op.createDialog( getWindow(), getResourceString( "prefsAudioDevicesAssistent" ) );

    runResult = new Runnable() {
      public void run()
      {
//        String      name;
        AudioBoxConfig  cfg3, cfg2;

        for( Iterator iter = collDetected.iterator(); iter.hasNext(); ) {
          cfg2 = (AudioBoxConfig) iter.next();
          if( !setAudioBoxNames.contains( cfg2.name )) {
            collAdd.add( cfg2 );
          } else {
            cfg3 = boxForName( cfg2.name );
            if( (cfg3 != null) && !cfg3.active ) collActivate.add( cfg3 );
          }
        }
iterRemove:    for( Iterator iter = collAudioBoxConfigs.iterator(); iter.hasNext(); ) {
          cfg3 = (AudioBoxConfig) iter.next();
          for( Iterator iter2 = collDetected.iterator(); iter2.hasNext(); ) {
            cfg2 = (AudioBoxConfig) iter2.next();
            if( cfg2.name.equals( cfg3.name )) continue iterRemove;
          }
          collRemove.add( cfg3 );
        }
       
        Collections.sort( collAdd );
        Collections.sort( collActivate );
        Collections.sort( collRemove );
       
        ggListAdd.setListData( collAdd.toArray() );
        ggListAdd.setVisibleRowCount( Math.max( 1, Math.min( collAdd.size(), 6 )));
        if( collAdd.isEmpty() ) {
          ggComboAdd.setEnabled( false );
        } else {
          ggComboAdd.setSelectedIndex( 1 );
        }
        ggListActivate.setListData( collActivate.toArray() );
        ggListActivate.setVisibleRowCount( Math.max( 1, Math.min( collActivate.size(), 6 )));
        ggListAdd.setVisibleRowCount( Math.max( 1, Math.min( collAdd.size(), 6 )));
        if( collActivate.isEmpty() ) {
          ggComboActivate.setEnabled( false );
        } else {
          ggComboActivate.setSelectedIndex( 1 );
        }
        ggListRemove.setListData( collRemove.toArray() );
        ggListRemove.setVisibleRowCount( Math.max( 1, Math.min( collRemove.size(), 6 )));
        if( collRemove.isEmpty() ) {
          ggComboRemove.setEnabled( false );
        } else {
          ggComboRemove.setSelectedIndex( 1 );
        }
        pane2.makeCompactGrid();
        b.setVisible( false );
        pane2.setVisible( true );
//        pane.makeCompactGrid();
       
//        dlg.pack();
        ((JDialog) SwingUtilities.getAncestorOfClass( JDialog.class, pane2 )).pack();
      }
    };
   
    testThread = new Thread( new Runnable() {
      public void run()
      {
        final InputStream      inStream; // , errStream;
 
        final byte[]        inBuf    = new byte[128];
//        final byte[]        errBuf    = new byte[128];
        final File          cwd      = new File( scsynthPath ).getParentFile();
        final ByteArrayOutputStream  baos    = new ByteArrayOutputStream();
        final Pattern        ptrn1    = Pattern.compile( "Number of Devices: \\d+\\n(   \\d+ : \".+\" \\(\\d+ ins, \\d+ outs\\)\\n)+\\n" );
//        final Pattern        ptrn2    = Pattern.compile( "\".+\"" );
        final Pattern        ptrn2    = Pattern.compile( "\"(.+)\" \\((\\d+) ins, (\\d+) outs()" ); // the trailing () makes the numOuts not disappear (why?!)
        final Matcher        m1      = ptrn1.matcher( "" );
        Matcher            m2;
        String            name;
        Process            p      = null;
        int              len, ins, outs; // , resultCode    = -1;
        boolean            pRunning  = true;

        try {
          p      = Runtime.getRuntime().exec( new String[] { scsynthPath, "-u", "0" }, null, cwd );
          // "Implementation note: It is a good idea for the input stream to be buffered."
          inStream  = new BufferedInputStream( p.getInputStream() );
//          errStream  = new BufferedInputStream( p.getErrorStream() );
 
          while( keepThreadRunning.isSet() && pRunning ) {
            try {
              Thread.sleep( 250 );   // a kind of cheesy way to wait for the program to end
            }
            catch( InterruptedException e5 ) { /* ignore */ }
 
            if( inStream.available() > 0 ) {
              try {
                while( inStream.available() > 0 ) {
                  len = Math.min( inBuf.length, inStream.available() );
                  inStream.read( inBuf, 0, len );
                  baos.write( inBuf, 0, len );
                }
              }
              catch( IOException e1 ) { /* ignore for now XXX */ }
             
              m1.reset( baos.toString() );
              if( m1.find() ) {
                pRunning = false;
//                keepThreadRunning.set( false );
                m2 = ptrn2.matcher( m1.group() );
                while( m2.find() ) {
//                  s = m2.group();
//                  System.out.println( "'" + s.substring( 1, s.length() - 1 ) + "'" );
//                  collDetected.add( s.substring( 1, s.length() - 1 ));
                  if( m2.groupCount() == 4 ) {
                    name  = m2.group( 1 );
                    ins    = Integer.parseInt( m2.group( 2 ));
                    outs  = Integer.parseInt( m2.group( 3 ));
                    if( (ins > 0) && (outs > 0) ) { // filter out single direction devices (like mac os x built-in mic and output)
                      collDetected.add( new AudioBoxConfig(
                          null, name, ins, outs, true ));
                    }
                  }
                }
              }
            }

//            handleConsole( errStream, errBuf );
            try {
//              resultCode  =
                p.exitValue();
              pRunning  = false;
              p      = null;
//              printStream.println( "scsynth terminated (" + resultCode +")" );
            }
            // gets thrown if we call exitValue() while sc still running
            catch( IllegalThreadStateException e1 ) { /* ignore */ }
          } // while( keepThreadRunning && pRunning )
        }
        catch( IOException e3 ) {
          // XXX
          System.err.println( "BootThread.run " + e3 );
        }
        finally {
          if( p != null ) {
//            System.err.println( "scsynth didn't quit. we're killing it!" );
            p.destroy();       
          }
         
          // not when user has cancelled thread!
          if( keepThreadRunning.isSet() ) EventQueue.invokeLater( runResult );
     
          synchronized( threadRunning ) {
            threadRunning.set( false );
            threadRunning.notifyAll();
          }
        }
      }
    });

    testThread.start();
    ggSpinner.setActive( true );
//    dlg.setVisible( true );   

    final JOptionPane op = new JOptionPane( pane,
                                            JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION,
                                            new ImageIcon( GUIUtil.class.getResource( "assistent_64x64.png" )));
//    result = JOptionPane.showOptionDialog( getWindow(), pane,
//        getResourceString( "prefsAudioDevicesAssistent" ),
//        JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE,
//        new ImageIcon( GUIUtil.class.getResource( "assistent_64x64.png" )),
//        null, null );
//    dlg = op.createDialog( getWindow(), getResourceString( "prefsAudioDevicesAssistent" ) );
    result = BasicWindowHandler.showDialog( op, getWindow(), getResourceString( "prefsAudioDevicesAssistent" ));

    synchronized( threadRunning ) {
      if( threadRunning.isSet() ) {  // i.e. premature dialog cancel
        keepThreadRunning.set( false );
        try {
          threadRunning.wait();
        }
        catch( InterruptedException e1 ) { /* ignore */ }
        return;
      }
    }
View Full Code Here

    {
      if( selection && !asCopy ) throw new IllegalArgumentException();

      this.asCopy    = asCopy;
      this.selection  = selection;
      openAfterSave  = new Flag( false );
    }
View Full Code Here

TOP

Related Classes of de.sciss.util.Flag

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.