| /* |
| * |
| * 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.apache.flex.compiler.common; |
| |
| import org.apache.flex.compiler.definitions.INamespaceDefinition; |
| |
| /** |
| * Represents the target of an import statement (e.g. import mx.controls.Button or import mx.controls.*) |
| * and encapsulates the logic involved in combining a reference (Button or mx.controls.Button) with |
| * the import target to get a fully qualified name. You can create import targets from the import |
| * target string (with the constructor), from a package name, or from an XML namespace. |
| */ |
| public interface IImportTarget { |
| |
| /** |
| * Interpret the reference based on this import target, and try to build a qualified |
| * class name for it. If no logical path can be constructed from the two (because the |
| * reference contains package information that doesn't match the import target, or |
| * because the reference class doesn't match the import target class), this method |
| * returns null. The one exception to this rule (for convenience) is the import target |
| * "*", which will always return the reference itself |
| * Examples (import target + reference): |
| * mx.controls.* + Button => mx.controls.Button |
| * mx.core.* + Button => mx.core.Button |
| * mx.controls.Button + Button => mx.controls.Button |
| * mx.controls.RadioButton + Button => (null) |
| * * + Button => Button |
| * mx.controls.* + mx.controls.Button => mx.controls.Button |
| * mx.core.* + mx.controls.Button => (null) |
| * mx.controls.Button + mx.controls.Button => mx.controls.Button |
| * mx.controls.RadioButton + mx.controls.Button => (null) |
| * * + mx.controls.Button => mx.controls.Button |
| * @param reference the reference as it appears in the document |
| * @return a qualified name for the reference if it makes sense; null if it doesn't |
| */ |
| String getQualifiedName(String reference); |
| |
| /** |
| * Returns the name of the target package we are targeting |
| * @return the target package |
| */ |
| String getTargetPackage(); |
| |
| /** |
| * True if this import is a wild card |
| * @return true if we are a wild card |
| */ |
| boolean isWildcard(); |
| |
| /** |
| * Gets the name of the target in our import. In flash.events.EventDispatcher, it would be EventDispatcher |
| * @return the target name. |
| */ |
| String getTargetName(); |
| |
| /** |
| * Gets the {@link INamespaceDefinition} for the imported package's public namespace. |
| * @return The {@link INamespaceDefinition} for the imported package's public namespace. |
| */ |
| INamespaceDefinition getNamespace(); |
| } |