Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   *
   * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
   *
   * The contents of this file are subject to the terms of either the GNU
   * General Public License Version 2 only ("GPL") or the Common
   * Development and Distribution License("CDDL") (collectively, the
   * "License"). You may not use this file except in compliance with the
  * License. You can obtain a copy of the License at
  * http://www.netbeans.org/cddl-gplv2.html
  * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
  * specific language governing permissions and limitations under the
  * License.  When distributing the software, include this License Header
  * Notice in each file and include the License file at
  * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
  * particular file as subject to the "Classpath" exception as provided
  * by Sun in the GPL Version 2 section of the License file that
  * accompanied this code. If applicable, add the following below the
  * License Header, with the fields enclosed by brackets [] replaced by
  * your own identifying information:
  * "Portions Copyrighted [year] [name of copyright owner]"
  *
  * Contributor(s):
  *
  * The Original Software is NetBeans. The Initial Developer of the Original
  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
  * Microsystems, Inc. All Rights Reserved.
  *
  * If you wish your version of this file to be governed by only the CDDL
  * or only the GPL Version 2, indicate your decision by adding
  * "[Contributor] elects to include this software in this distribution
  * under the [CDDL or GPL Version 2] license." If you do not indicate a
  * single choice of license, a recipient has the option to distribute
  * your version of this file under either the CDDL, the GPL Version 2 or
  * to extend the choice of license to its licensees as provided above.
  * However, if you add GPL Version 2 code and therefore, elected the GPL
  * Version 2 license, then the option applies only if the new code is
  * made subject to such option by the copyright holder.
  */
 package org.netbeans.modules.cnd.makeproject.api.configurations;
 
 import java.util.List;
 
 public final class Configurations {
 
     public static final String PROP_DEFAULT = "default"// NOI18N
     public static final String PROP_ACTIVE_CONFIGURATION = "activeconfiguration"// NOI18N
     private final PropertyChangeSupport pcs;
     private final List<Configurationconfigurations = new ArrayList<Configuration>();
     private final ReadWriteLock configurationsLock = new ReentrantReadWriteLock();
     private final List<Runnabletasks = new ArrayList<Runnable>();
 
     public Configurations() {
          = new PropertyChangeSupport(this);
     }
 
         .addPropertyChangeListener(l);
     }
 
         .removePropertyChangeListener(l);
     }
 
     public Configurations init(Configuration[] confsint defaultConf) {
         List<RunnabletoRun = new ArrayList<Runnable>();
         Configuration def = null;
         .writeLock().lock();
         try {
             .clear();
             if (confs != null) {
                 int current = 0;
                 for (int i = 0; i < confs.lengthi++) {
                     if (confs[i] != null) {
                         .add(confs[i]);
                         if (current == defaultConf) {
                             confs[i].setDefault(true);
                             def = confs[i];
                         } else {
                             confs[i].setDefault(false);
                         }
                         current++;
                     } else {
                         new Exception("Configuration["+i+"]==null").printStackTrace(); // NOI18N
                     }
                 }
                 if (def != null) {
                     toRun.addAll();
                     .clear();
                 }
            }
        } finally {
            .writeLock().unlock();
        }
//        if (def != null) {
//            pcs.firePropertyChange(PROP_ACTIVE_CONFIGURATION, null, def);
//            pcs.firePropertyChange(PROP_DEFAULT, null, null);
//        }
        for (Runnable task : toRun) {
            runOnCodeModelReadiness(taskfalse);
        }
        return this;
    }
    public void runOnCodeModelReadiness(Runnable task) {
        runOnCodeModelReadiness(tasktrue);
    }
    private void runOnCodeModelReadiness(Runnable taskboolean postpone) {
        MakeConfiguration active = null;
        .writeLock().lock();
        try {
            active = (MakeConfigurationgetActive();
            if (active == null) {
                if (postpone) {
                    .add(task);
                }
            }
        } finally {
            .writeLock().unlock();
        }
        if (active != null) {
            DevelopmentHostConfiguration host = active.getDevelopmentHost();
            CompilerSetManagerEvents.get(host.getExecutionEnvironment()).runOnCodeModelReadiness(task);
        }
    }
    public int size() {
        .readLock().lock();
        try {
            return .size();
        } finally {
            .readLock().unlock();
        }
    }
    /*
     * Get all configurations
     */
    public Configuration[] getConfs() {
        .readLock().lock();
        try {
            return .toArray(new Configuration[size()]);
        } finally {
            .readLock().unlock();
        }
    }
    public List<ConfigurationgetConfigurtions() {
        .readLock().lock();
        try {
            return new ArrayList<Configuration>();
        } finally {
            .readLock().unlock();
        }
    }
        Collection<Configurationcollection = new LinkedHashSet<Configuration>();
        .readLock().lock();
        try {
            collection.addAll();
            return collection;
        } finally {
            .readLock().unlock();
        }
    }
    public Configuration[] getClonedConfs() {
        .readLock().lock();
        try {
            Configuration[] cs = new Configuration[size()];
            for (int i = 0; i < size(); i++) {
                Configuration c = .get(i);
                cs[i] = c.cloneConf();
            }
            return cs;
        } finally {
            .readLock().unlock();
        }
    }
    public String[] getConfsAsDisplayNames() {
        .readLock().lock();
        try {
            String[] names = new String[size()];
            for (int i = 0; i < size(); i++) {
                Configuration configuration = .get(i);
                names[i] = configuration.toString();
            }
            return names;
        } finally {
            .readLock().unlock();
        }
    }
    public String[] getConfsAsNames() {
        .readLock().lock();
        try {
            String[] names = new String[size()];
            for (int i = 0; i < size(); i++) {
                Configuration configuration = .get(i);
                names[i] = configuration.getName();
            }
            return names;
        } finally {
            .readLock().unlock();
        }
    }
    /*
     * Get a specific configuration
     */
    public Configuration getConf(int index) {
        .readLock().lock();
        try {
            if (checkValidIndex(index)) {
                return .get(index);
            }
        } finally {
            .readLock().unlock();
        }
        return null;
    }
    public Configuration getConfByDisplayName(String displayName) {
        Configuration ret = null;
        .readLock().lock();
        try {
            for (Configuration c : ) {
                if (c.getDisplayName().equals(displayName)) {
                    ret = c;
                    break;
                }
            }
        } finally {
            .readLock().unlock();
        }
        return ret;
    }
    public Configuration getConf(String name) {
        Configuration ret = null;
        .readLock().lock();
        try {
            for (Configuration c : ) {
                if (c.getName().equals(name)) {
                    ret = c;
                    break;
                }
            }
        } finally {
            .readLock().unlock();
        }
        return ret;
    }
    /*
     * Set default configuration
     */
    public void setActive(Configuration def) {
        if (def == null) {
            return;
        }
        Configuration old;
        boolean fire = false;
        .readLock().lock();
        try {
            old = getActive();
            if (def == old) {
                return// Nothing has changed
            }
            for (Configuration c : ) {
                c.setDefault(false);
                if (c == def) {
                    def.setDefault(true);
                    fire = true;
                }
            }
        } finally {
            .readLock().unlock();
        }
        if (fire) {
            .firePropertyChange(olddef);
            .firePropertyChange(nullnull);
        }
    }
    /*
     * Set default configuration
     */
    public void setActive(String name) {
        setActive(getConf(name));
    }
    public void setActive(int index) {
        if (index < 0) {
            return;
        }
        Configuration old;
        Configuration def;
        .readLock().lock();
        try {
            old = getActive();
            if (!checkValidIndex(index)){
                return;
            }
            def = .get(index);
            if (def != null) {
                for (Configuration c : ) {
                    c.setDefault(false);
                }
                def.setDefault(true);
            }
        } finally {
            .readLock().unlock();
        }
        .firePropertyChange(nullnull);
    }
    /*
     * Get default configuration
     */
    public String getActiveDisplayName() {
        String defDisplayName = null;
        Configuration def = getActive();
        if (def != null) {
            defDisplayName = def.getDisplayName();
        }
        return defDisplayName;
    }

    

Deprecated.:
Use getActive()
    public Configuration getDefault() {
        return getActive();
    }
    public Configuration getActive() {
        .readLock().lock();
        try {
            for (Configuration c : ) {
                if (c.isDefault()) {
                    return c;
                }
            }
        } finally {
            .readLock().unlock();
        }
        return null;
    }
    public int getActiveAsIndex() {
        .readLock().lock();
        try {
            int index = -1;
            for (Configuration c : ) {
                index++;
                if (c.isDefault()) {
                    return index;
                }
            }
        } finally {
            .readLock().unlock();
        }
        return -1;
    }
    /*
     * Check valid index
     */
    private boolean checkValidIndex(int index) {
        if (index < 0 || index >= size()) {
            new ArrayIndexOutOfBoundsException(index).printStackTrace(); // NOI18N
            // Error ???
            // FIXUP ???
        }
        return true;
    }
    public Configurations cloneConfs() {
        Configurations clone = new Configurations();
        .readLock().lock();
        try {
            clone.init(getClonedConfs(), getActiveAsIndex());
        } finally {
            .readLock().unlock();
        }
        return clone;
    }
New to GrepCode? Check out our FAQ X