| /* |
| * Copyright 2000-2009 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. |
| */ |
| |
| /* |
| * @author: Eugene Zhuravlev |
| * Date: Sep 11, 2002 |
| * Time: 5:23:47 PM |
| */ |
| package com.intellij.ui.classFilter; |
| |
| import com.intellij.ide.util.TreeClassChooser; |
| import com.intellij.ide.util.TreeClassChooserFactory; |
| import com.intellij.openapi.project.Project; |
| import com.intellij.openapi.ui.DialogWrapper; |
| import com.intellij.openapi.ui.Messages; |
| import com.intellij.openapi.ui.TextFieldWithBrowseButton; |
| import com.intellij.psi.*; |
| import com.intellij.psi.search.GlobalSearchScope; |
| import com.intellij.ui.UIBundle; |
| import org.jetbrains.annotations.Nullable; |
| |
| import javax.swing.*; |
| import java.awt.*; |
| import java.awt.event.ActionEvent; |
| import java.awt.event.ActionListener; |
| |
| class ClassFilterEditorAddDialog extends DialogWrapper { |
| private final Project myProject; |
| private TextFieldWithBrowseButton myClassName; |
| @Nullable |
| private final String myHelpId; |
| |
| public ClassFilterEditorAddDialog(Project project, @Nullable String helpId) { |
| super(project, true); |
| myProject = project; |
| myHelpId = helpId; |
| setTitle(UIBundle.message("class.filter.editor.add.dialog.title")); |
| init(); |
| } |
| |
| protected JComponent createCenterPanel() { |
| final JPanel panel = new JPanel(new GridBagLayout()); |
| final JLabel header = new JLabel(UIBundle.message("label.class.filter.editor.add.dialog.filter.pattern")); |
| myClassName = new TextFieldWithBrowseButton(new JTextField(35)); |
| final JLabel iconLabel = new JLabel(Messages.getQuestionIcon()); |
| |
| panel.add(header, new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5, 10, 0, 0), 0, 0)); |
| panel.add(myClassName, new GridBagConstraints(1, 1, 1, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5, 10, 0, 0), 0, 0)); |
| panel.add(iconLabel, new GridBagConstraints(0, 0, 1, 2, 0.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(15, 0, 0, 0), 0, 0)); |
| |
| myClassName.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent e) { |
| PsiClass currentClass = getSelectedClass(); |
| TreeClassChooser chooser = TreeClassChooserFactory.getInstance(myProject).createNoInnerClassesScopeChooser( |
| UIBundle.message("class.filter.editor.choose.class.title"), GlobalSearchScope.allScope(myProject), null, null); |
| if (currentClass != null) { |
| PsiFile containingFile = currentClass.getContainingFile(); |
| if (containingFile != null) { |
| PsiDirectory containingDirectory = containingFile.getContainingDirectory(); |
| if (containingDirectory != null) { |
| chooser.selectDirectory(containingDirectory); |
| } |
| } |
| } |
| chooser.showDialog(); |
| PsiClass selectedClass = chooser.getSelected(); |
| if (selectedClass != null) { |
| myClassName.setText(selectedClass.getQualifiedName()); |
| } |
| } |
| }); |
| |
| myClassName.setEnabled(myProject != null); |
| |
| return panel; |
| } |
| |
| private PsiClass getSelectedClass() { |
| final PsiManager psiManager = PsiManager.getInstance(myProject); |
| String classQName = myClassName.getText(); |
| if ("".equals(classQName)) { |
| return null; |
| } |
| return JavaPsiFacade.getInstance(psiManager.getProject()).findClass(classQName, GlobalSearchScope.allScope(myProject)); |
| } |
| |
| public JComponent getPreferredFocusedComponent() { |
| return myClassName.getTextField(); |
| } |
| |
| public String getPattern() { |
| return myClassName.getText(); |
| } |
| |
| protected String getDimensionServiceKey(){ |
| return "#com.intellij.debugger.ui.breakpoints.BreakpointsConfigurationDialogFactory.BreakpointsConfigurationDialog.AddFieldBreakpointDialog"; |
| } |
| |
| @Override @Nullable |
| protected String getHelpId() { |
| return myHelpId; |
| } |
| } |