| /* |
| * Copyright 2000-2013 JetBrains s.r.o. |
| * |
| * Licensed 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 com.intellij.codeInspection.java15api; |
| |
| import com.intellij.openapi.ui.VerticalFlowLayout; |
| import com.intellij.pom.java.LanguageLevel; |
| import com.intellij.ui.ListCellRendererWrapper; |
| import com.intellij.util.ui.UIUtil; |
| |
| import javax.swing.*; |
| import java.awt.*; |
| import java.awt.event.ActionEvent; |
| import java.awt.event.ActionListener; |
| |
| /** |
| * @author max |
| */ |
| public class Java15APIUsageInspection extends Java15APIUsageInspectionBase { |
| @Override |
| public JComponent createOptionsPanel() { |
| final JPanel panel = new JPanel(new VerticalFlowLayout(VerticalFlowLayout.TOP, 0, 5, true, false)); |
| panel.add(new JLabel("Forbid API usages:")); |
| |
| final JRadioButton projectRb = new JRadioButton("Respecting to project language level settings"); |
| panel.add(projectRb); |
| final JRadioButton customRb = new JRadioButton("Higher than:"); |
| panel.add(customRb); |
| final ButtonGroup gr = new ButtonGroup(); |
| gr.add(projectRb); |
| gr.add(customRb); |
| |
| final DefaultComboBoxModel cModel = new DefaultComboBoxModel(); |
| for (LanguageLevel level : LanguageLevel.values()) { |
| //noinspection unchecked |
| cModel.addElement(level); |
| } |
| |
| @SuppressWarnings("unchecked") final JComboBox llCombo = new JComboBox(cModel) { |
| @Override |
| public void setEnabled(boolean b) { |
| if (b == customRb.isSelected()) { |
| super.setEnabled(b); |
| } |
| } |
| }; |
| llCombo.setSelectedItem(myEffectiveLanguageLevel != null ? myEffectiveLanguageLevel : LanguageLevel.JDK_1_3); |
| //noinspection unchecked |
| llCombo.setRenderer(new ListCellRendererWrapper<LanguageLevel>() { |
| @Override |
| public void customize(JList list, LanguageLevel value, int index, boolean selected, boolean hasFocus) { |
| if (value != null) { |
| setText(value.getPresentableText()); |
| } |
| } |
| }); |
| llCombo.addActionListener(new ActionListener() { |
| @Override |
| public void actionPerformed(ActionEvent e) { |
| myEffectiveLanguageLevel = (LanguageLevel)llCombo.getSelectedItem(); |
| } |
| }); |
| final JPanel comboPanel = new JPanel(new BorderLayout()); |
| comboPanel.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0)); |
| comboPanel.add(llCombo, BorderLayout.WEST); |
| panel.add(comboPanel); |
| |
| final ActionListener actionListener = new ActionListener() { |
| @Override |
| public void actionPerformed(ActionEvent e) { |
| if (projectRb.isSelected()) { |
| myEffectiveLanguageLevel = null; |
| } |
| else { |
| myEffectiveLanguageLevel = (LanguageLevel)llCombo.getSelectedItem(); |
| } |
| UIUtil.setEnabled(comboPanel, !projectRb.isSelected(), true); |
| } |
| }; |
| projectRb.addActionListener(actionListener); |
| customRb.addActionListener(actionListener); |
| projectRb.setSelected(myEffectiveLanguageLevel == null); |
| customRb.setSelected(myEffectiveLanguageLevel != null); |
| UIUtil.setEnabled(comboPanel, !projectRb.isSelected(), true); |
| return panel; |
| } |
| } |