mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-19 21:11:28 +07:00
don't require JDK where it can be null (EA-31649 - IAE: JdkChooserPanel.<init>), move declaration and registration of OrderEntryAppearanceService to correct place
This commit is contained in:
@@ -198,7 +198,7 @@ public class LibraryOptionsPanel implements Disposable {
|
||||
else if (value instanceof ExistingLibraryEditor) {
|
||||
final Library library = ((ExistingLibraryEditor)value).getLibrary();
|
||||
final boolean invalid = !((LibraryEx)library).getInvalidRootUrls(OrderRootType.CLASSES).isEmpty();
|
||||
OrderEntryAppearanceService.getInstance(getProject()).forLibrary(library, invalid).customize(this);
|
||||
OrderEntryAppearanceService.getInstance().forLibrary(getProject(), library, invalid).customize(this);
|
||||
}
|
||||
else if (value instanceof NewLibraryEditor) {
|
||||
setIcon(PlatformIcons.LIBRARY_ICON);
|
||||
|
||||
@@ -34,7 +34,6 @@ import com.intellij.ui.ScrollPaneFactory;
|
||||
import com.intellij.ui.components.JBList;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import gnu.trove.TIntArrayList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -50,16 +49,16 @@ public class JdkChooserPanel extends JPanel {
|
||||
private JList myList = null;
|
||||
private DefaultListModel myListModel = null;
|
||||
private Sdk myCurrentJdk;
|
||||
private final Project myProject;
|
||||
@Nullable private final Project myProject;
|
||||
private SdkType[] myAllowedJdkTypes = null;
|
||||
|
||||
public JdkChooserPanel(@NotNull final Project project) {
|
||||
public JdkChooserPanel(@Nullable final Project project) {
|
||||
super(new BorderLayout());
|
||||
myProject = project;
|
||||
myListModel = new DefaultListModel();
|
||||
myList = new JBList(myListModel);
|
||||
myList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
||||
myList.setCellRenderer(new ProjectJdkListRenderer(myList.getCellRenderer(), project));
|
||||
myList.setCellRenderer(new ProjectJdkListRenderer(myList.getCellRenderer()));
|
||||
//noinspection HardCodedStringLiteral
|
||||
myList.setPrototypeCellValue("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
|
||||
|
||||
|
||||
@@ -15,12 +15,10 @@
|
||||
*/
|
||||
package com.intellij.ide.util.projectWizard;
|
||||
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.roots.ui.OrderEntryAppearanceService;
|
||||
import com.intellij.ui.HtmlListCellRenderer;
|
||||
import com.intellij.ui.SimpleTextAttributes;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
@@ -29,17 +27,14 @@ import javax.swing.*;
|
||||
* @since May 18, 2005
|
||||
*/
|
||||
public class ProjectJdkListRenderer extends HtmlListCellRenderer {
|
||||
private final Project myProject;
|
||||
|
||||
public ProjectJdkListRenderer(final ListCellRenderer listCellRenderer, @NotNull final Project project) {
|
||||
public ProjectJdkListRenderer(final ListCellRenderer listCellRenderer) {
|
||||
super(listCellRenderer);
|
||||
myProject = project;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doCustomize(JList list, Object value, int index, boolean selected, boolean hasFocus) {
|
||||
if (value == null || value instanceof Sdk) {
|
||||
OrderEntryAppearanceService.getInstance(myProject).forJdk((Sdk)value, false, selected, index != -1).customize(this);
|
||||
OrderEntryAppearanceService.getInstance().forJdk((Sdk)value, false, selected, index != -1).customize(this);
|
||||
}
|
||||
else {
|
||||
final String str = value.toString();
|
||||
|
||||
@@ -57,7 +57,7 @@ public class OrderEntryAppearanceServiceImpl extends OrderEntryAppearanceService
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public CellAppearanceEx forOrderEntry(@NotNull final OrderEntry orderEntry, final boolean selected) {
|
||||
public CellAppearanceEx forOrderEntry(Project project, @NotNull final OrderEntry orderEntry, final boolean selected) {
|
||||
if (orderEntry instanceof JdkOrderEntry) {
|
||||
JdkOrderEntry jdkLibraryEntry = (JdkOrderEntry)orderEntry;
|
||||
Sdk jdk = jdkLibraryEntry.getJdk();
|
||||
@@ -77,7 +77,7 @@ public class OrderEntryAppearanceServiceImpl extends OrderEntryAppearanceService
|
||||
}
|
||||
Library library = libraryOrderEntry.getLibrary();
|
||||
assert library != null : libraryOrderEntry;
|
||||
return forLibrary(library, false);
|
||||
return forLibrary(project, library, false);
|
||||
}
|
||||
else if (orderEntry.isSynthetic()) {
|
||||
String presentableName = orderEntry.getPresentableName();
|
||||
@@ -95,7 +95,7 @@ public class OrderEntryAppearanceServiceImpl extends OrderEntryAppearanceService
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public CellAppearanceEx forLibrary(@NotNull final Library library, final boolean hasInvalidRoots) {
|
||||
public CellAppearanceEx forLibrary(Project project, @NotNull final Library library, final boolean hasInvalidRoots) {
|
||||
final StructureConfigurableContext context = ProjectStructureConfigurable.getInstance(myProject).getContext();
|
||||
final Icon icon = LibraryPresentationManager.getInstance().getCustomIcon(library, context);
|
||||
|
||||
|
||||
@@ -50,9 +50,9 @@ import java.util.Comparator;
|
||||
class JdkComboBox extends ComboBoxWithWidePopup {
|
||||
private final JButton myEditButton = new JButton(ApplicationBundle.message("button.edit"));
|
||||
|
||||
public JdkComboBox(@NotNull final ProjectSdksModel jdkModel, @NotNull final Project project) {
|
||||
public JdkComboBox(@NotNull final ProjectSdksModel jdkModel) {
|
||||
super(new JdkComboBoxModel(jdkModel));
|
||||
setRenderer(new ProjectJdkListRenderer(getRenderer(), project) {
|
||||
setRenderer(new ProjectJdkListRenderer(getRenderer()) {
|
||||
@Override
|
||||
public void doCustomize(JList list, Object value, int index, boolean selected, boolean hasFocus) {
|
||||
if (JdkComboBox.this.isEnabled()) {
|
||||
|
||||
@@ -101,7 +101,7 @@ public abstract class ModuleJdkConfigurable implements Disposable {
|
||||
|
||||
private void init() {
|
||||
myJdkPanel = new JPanel(new GridBagLayout());
|
||||
myCbModuleJdk = new JdkComboBox(myJdksModel, myModuleEditor.myProject);
|
||||
myCbModuleJdk = new JdkComboBox(myJdksModel);
|
||||
myCbModuleJdk.insertItemAt(new JdkComboBox.ProjectJdkComboBoxItem(), 0);
|
||||
myCbModuleJdk.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
|
||||
@@ -102,7 +102,7 @@ public class ProjectJdkConfigurable implements UnnamedConfigurable {
|
||||
|
||||
private void init() {
|
||||
myJdkPanel = new JPanel(new GridBagLayout());
|
||||
myCbProjectJdk = new JdkComboBox(myJdksModel, myProject);
|
||||
myCbProjectJdk = new JdkComboBox(myJdksModel);
|
||||
myCbProjectJdk.insertItemAt(new JdkComboBox.NoneJdkComboBoxItem(), 0);
|
||||
myCbProjectJdk.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
|
||||
@@ -604,14 +604,14 @@ public class ClasspathPanelImpl extends JPanel implements ClasspathPanel {
|
||||
private static CellAppearanceEx getCellAppearance(final ClasspathTableItem<?> item,
|
||||
final StructureConfigurableContext context,
|
||||
final boolean selected) {
|
||||
final OrderEntryAppearanceService service = OrderEntryAppearanceService.getInstance(context.getProject());
|
||||
final OrderEntryAppearanceService service = OrderEntryAppearanceService.getInstance();
|
||||
if (item instanceof InvalidJdkItem) {
|
||||
return service.forJdk(null, false, selected, true);
|
||||
}
|
||||
else {
|
||||
final OrderEntry entry = item.getEntry();
|
||||
assert entry != null : item;
|
||||
return service.forOrderEntry(entry, selected);
|
||||
return service.forOrderEntry(context.getProject(), entry, selected);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -636,10 +636,10 @@ public class AnalyzeDependenciesComponent extends MasterDetailsComponent {
|
||||
};
|
||||
}
|
||||
else {
|
||||
return OrderEntryAppearanceService.getInstance(myModule.getProject()).forModule(e.getOwnerModule());
|
||||
return OrderEntryAppearanceService.getInstance().forModule(e.getOwnerModule());
|
||||
}
|
||||
}
|
||||
return OrderEntryAppearanceService.getInstance(myModule.getProject()).forOrderEntry(myExplanation.entry(), selected);
|
||||
return OrderEntryAppearanceService.getInstance().forOrderEntry(myModule.getProject(), myExplanation.entry(), selected);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -369,7 +369,7 @@ public class ModuleDependenciesAnalyzer {
|
||||
@NotNull
|
||||
@Override
|
||||
public CellAppearanceEx getAppearance(boolean isSelected) {
|
||||
return OrderEntryAppearanceService.getInstance(myEntry.getOwnerModule().getProject()).forOrderEntry(myEntry, isSelected);
|
||||
return OrderEntryAppearanceService.getInstance().forOrderEntry(myEntry.getOwnerModule().getProject(), myEntry, isSelected);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -314,7 +314,7 @@ public abstract class ChooseLibrariesDialogBase extends DialogWrapper {
|
||||
private static class LibraryDescriptor extends LibrariesTreeNodeBase<Library> {
|
||||
protected LibraryDescriptor(final Project project, final NodeDescriptor parentDescriptor, final Library element) {
|
||||
super(project, parentDescriptor, element);
|
||||
final CellAppearanceEx appearance = OrderEntryAppearanceService.getInstance(project).forLibrary(element, false);
|
||||
final CellAppearanceEx appearance = OrderEntryAppearanceService.getInstance().forLibrary(project, element, false);
|
||||
final SimpleColoredComponent coloredComponent = new SimpleColoredComponent();
|
||||
appearance.customize(coloredComponent);
|
||||
final PresentationData templatePresentation = getTemplatePresentation();
|
||||
@@ -26,15 +26,15 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public abstract class OrderEntryAppearanceService {
|
||||
public static OrderEntryAppearanceService getInstance(@NotNull final Project project) {
|
||||
return ServiceManager.getService(project, OrderEntryAppearanceService.class);
|
||||
public static OrderEntryAppearanceService getInstance() {
|
||||
return ServiceManager.getService(OrderEntryAppearanceService.class);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public abstract CellAppearanceEx forOrderEntry(@NotNull OrderEntry orderEntry, boolean selected);
|
||||
public abstract CellAppearanceEx forOrderEntry(Project project, @NotNull OrderEntry orderEntry, boolean selected);
|
||||
|
||||
@NotNull
|
||||
public abstract CellAppearanceEx forLibrary(@NotNull Library library, boolean hasInvalidRoots);
|
||||
public abstract CellAppearanceEx forLibrary(Project project, @NotNull Library library, boolean hasInvalidRoots);
|
||||
|
||||
@NotNull
|
||||
public abstract CellAppearanceEx forJdk(@Nullable Sdk jdk, boolean isInComboBox, boolean selected, boolean showVersion);
|
||||
@@ -178,9 +178,6 @@
|
||||
<projectService serviceInterface="com.intellij.execution.testframework.autotest.AutoTestManager"
|
||||
serviceImplementation="com.intellij.execution.testframework.autotest.AutoTestManager"/>
|
||||
|
||||
<projectService serviceInterface="com.intellij.openapi.roots.ui.OrderEntryAppearanceService"
|
||||
serviceImplementation="com.intellij.openapi.roots.ui.OrderEntryAppearanceServiceImpl"/>
|
||||
|
||||
<projectService serviceInterface="com.intellij.openapi.vcs.VcsFileListenerContextHelper"
|
||||
serviceImplementation="com.intellij.openapi.vcs.VcsFileListenerContextHelper"/>
|
||||
|
||||
|
||||
@@ -22,7 +22,6 @@ import com.intellij.lang.ant.config.impl.AntInstallation;
|
||||
import com.intellij.lang.ant.config.impl.AntReference;
|
||||
import com.intellij.lang.ant.config.impl.GlobalAntConfiguration;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.roots.ui.OrderEntryAppearanceService;
|
||||
import com.intellij.openapi.ui.FixedSizeButton;
|
||||
@@ -35,7 +34,6 @@ import com.intellij.util.PlatformIcons;
|
||||
import com.intellij.util.config.AbstractProperty;
|
||||
import com.intellij.util.ui.AbstractTableCellEditor;
|
||||
import com.intellij.util.ui.CellEditorComponentWithBrowseButton;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.text.BadLocationException;
|
||||
@@ -165,12 +163,10 @@ public class AntUIUtil {
|
||||
}
|
||||
|
||||
public static class ProjectJdkRenderer extends ColoredListCellRenderer {
|
||||
private final Project myProject;
|
||||
private final boolean myInComboBox;
|
||||
private final String myProjectJdkName;
|
||||
|
||||
public ProjectJdkRenderer(@NotNull final Project project, boolean inComboBox, String projectJdkName) {
|
||||
myProject = project;
|
||||
public ProjectJdkRenderer(boolean inComboBox, String projectJdkName) {
|
||||
myInComboBox = inComboBox;
|
||||
myProjectJdkName = projectJdkName != null ? projectJdkName : "";
|
||||
}
|
||||
@@ -190,7 +186,7 @@ public class AntUIUtil {
|
||||
}
|
||||
}
|
||||
else {
|
||||
OrderEntryAppearanceService.getInstance(myProject).forJdk(jdk, myInComboBox, selected, true).customize(this);
|
||||
OrderEntryAppearanceService.getInstance().forJdk(jdk, myInComboBox, selected, true).customize(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -433,7 +433,7 @@ public class BuildFilePropertiesPanel {
|
||||
|
||||
public void reset(AbstractProperty.AbstractPropertyContainer options) {
|
||||
String projectJdkName = AntConfigurationImpl.DEFAULT_JDK_NAME.get(options);
|
||||
myJDKsController.setRenderer(new AntUIUtil.ProjectJdkRenderer(myProject, true, projectJdkName));
|
||||
myJDKsController.setRenderer(new AntUIUtil.ProjectJdkRenderer(true, projectJdkName));
|
||||
super.reset(options);
|
||||
myJDKsController.resetList(null);
|
||||
myProjectDefaultAnt = AntConfigurationImpl.DEFAULT_ANT.get(options);
|
||||
|
||||
@@ -156,6 +156,9 @@
|
||||
<applicationService serviceInterface="com.intellij.psi.impl.file.PsiPackageImplementationHelper"
|
||||
serviceImplementation="com.intellij.psi.impl.file.PsiPackageImplementationHelperImpl"/>
|
||||
|
||||
<applicationService serviceInterface="com.intellij.openapi.roots.ui.OrderEntryAppearanceService"
|
||||
serviceImplementation="com.intellij.openapi.roots.ui.OrderEntryAppearanceServiceImpl"/>
|
||||
|
||||
<projectService serviceInterface="com.intellij.packaging.artifacts.ArtifactPointerManager"
|
||||
serviceImplementation="com.intellij.packaging.impl.artifacts.ArtifactPointerManagerImpl"/>
|
||||
<projectService serviceInterface="com.intellij.packaging.impl.artifacts.ArtifactBySourceFileFinder"
|
||||
|
||||
Reference in New Issue
Block a user