package com.intellij.lang.javascript.flex.projectStructure.ui; import com.intellij.lang.javascript.flex.projectStructure.options.FlexProjectRootsUtil; import com.intellij.openapi.roots.impl.libraries.LibraryTableImplUtil; import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.*; import javax.swing.*; public abstract class UsageInBcDependencies extends ProjectStructureElementUsage { private final BuildConfigurationProjectStructureElement myContainingElement; private final ProjectStructureElement mySourceElement; public UsageInBcDependencies(final BuildConfigurationProjectStructureElement containingElement, final ProjectStructureElement sourceElement) { myContainingElement = containingElement; mySourceElement = sourceElement; } @Override public ProjectStructureElement getSourceElement() { return mySourceElement; } @Override public ProjectStructureElement getContainingElement() { return myContainingElement; } @Override public String getPresentableName() { return myContainingElement.getBC().getName(); } @Override public PlaceInProjectStructure getPlace() { if (mySourceElement instanceof LibraryProjectStructureElement) { Library library = ((LibraryProjectStructureElement)mySourceElement).getLibrary(); final DependenciesConfigurable.Location.TableEntry tableEntry; if (LibraryTableImplUtil.MODULE_LEVEL.equals(library.getTable().getTableLevel())) { tableEntry = DependenciesConfigurable.Location.TableEntry.forModuleLibrary(FlexProjectRootsUtil.getLibraryId(library)); } else { tableEntry = DependenciesConfigurable.Location.TableEntry.forSharedLibrary(library); } return new PlaceInBuildConfiguration(myContainingElement, DependenciesConfigurable.TAB_NAME, tableEntry); } else if (mySourceElement instanceof BuildConfigurationProjectStructureElement) { BuildConfigurationProjectStructureElement bcElement = (BuildConfigurationProjectStructureElement)mySourceElement; String moduleName = bcElement.getModule().getName(); String bcName = bcElement.getBC().getName(); DependenciesConfigurable.Location.TableEntry tableEntry = DependenciesConfigurable.Location.TableEntry.forBc(moduleName, bcName); return new PlaceInBuildConfiguration(myContainingElement, DependenciesConfigurable.TAB_NAME, tableEntry); } else if (mySourceElement instanceof SdkProjectStructureElement) { return new PlaceInBuildConfiguration(myContainingElement, DependenciesConfigurable.TAB_NAME, DependenciesConfigurable.Location.SDK); } assert false : mySourceElement; return null; } @Override public int hashCode() { return myContainingElement.hashCode() & mySourceElement.hashCode(); } @Override public boolean equals(final Object obj) { return obj instanceof UsageInBcDependencies && ((UsageInBcDependencies)obj).getContainingElement().equals(getContainingElement()) && ((UsageInBcDependencies)obj).getSourceElement().equals(getSourceElement()); } @Override public Icon getIcon() { return myContainingElement.getBC().getIcon(); } }