All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.netbeans.api.project.Sources Maven / Gradle / Ivy

The newest version!
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

package org.netbeans.api.project;

import javax.swing.event.ChangeListener;

/**
 * Optional interface for a project to enumerate folders containing sources
 * of various kinds.
 * Use {@link ProjectUtils#getSources} as a client.
 * Use {@link Project#getLookup} as a provider.
 * 

* May be used by the New File wizard, Find in Files, to-do task scanning, * the Files tab, etc. *

* @see SourcesHelper * @author Jesse Glick */ public interface Sources { /** * Generic source folders containing any source files at all. * Generally should be a superset of all other kinds of source folders. * Usually the project directory is the only such folder listed. */ String TYPE_GENERIC = "generic"; // NOI18N /** * Find all root source folders matching a given type. *

For a given type, the returned source folders must not overlap, i.e. * there may be no duplicates and no folder may be a descendant of another. *

In the case of {@link #TYPE_GENERIC} source folders, the project must * contain at least one such folder (a nonempty array must be returned), and * the {@link Project#getProjectDirectory project directory} must either be * one of the returned folders, or a descendant of one of the returned folders. * @param type a kind of folder, e.g. {@link #TYPE_GENERIC} or * JavaProjectConstants.SOURCES_TYPE_JAVA * @return a list of top-level source folders of that kind (may be empty but not null) */ SourceGroup[] getSourceGroups(String type); /** * Add a listener to changes in the source groups. * Any change in the result of {@link #getSourceGroups} should * cause a change event to be fired. * @param listener a listener to add */ public void addChangeListener(ChangeListener listener); /** * Remove a listener to changes in the source groups. * @param listener a listener to remove */ public void removeChangeListener(ChangeListener listener); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy