change signature: setup default type value as default type; setup selection
[idea/community.git] / platform / lang-impl / src / com / intellij / refactoring / changeSignature / DefaultValueChooser.java
1 /*
2  * Copyright 2000-2010 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.refactoring.changeSignature;
17
18 import com.intellij.openapi.project.Project;
19 import com.intellij.openapi.ui.DialogWrapper;
20 import com.intellij.openapi.ui.MultiLineLabelUI;
21 import com.intellij.refactoring.util.RadioUpDownListener;
22 import com.intellij.ui.EditorTextField;
23
24 import javax.swing.*;
25 import java.awt.event.ActionEvent;
26 import java.awt.event.ActionListener;
27
28 /**
29  * User: anna
30  * Date: Sep 13, 2010
31  */
32 public class DefaultValueChooser extends DialogWrapper{
33   private JRadioButton myLeaveBlankRadioButton;
34   private JRadioButton myFeelLuckyRadioButton;
35   private JLabel myFeelLuckyDescription;
36   private JRadioButton myUseValueRadioButton;
37   private EditorTextField myValueEditor;
38   private JPanel myWholePanel;
39   private JLabel myBlankDescription;
40
41   public DefaultValueChooser(Project project, String name, String defaultValue) {
42     super(project);
43     new RadioUpDownListener(myLeaveBlankRadioButton, myFeelLuckyRadioButton, myUseValueRadioButton);
44     final ActionListener actionListener = new ActionListener() {
45       @Override
46       public void actionPerformed(ActionEvent e) {
47         myValueEditor.setEnabled(myUseValueRadioButton.isSelected());
48         if (myUseValueRadioButton.isSelected()) {
49           myValueEditor.selectAll();
50           myValueEditor.requestFocus();
51         }
52       }
53     };
54     myLeaveBlankRadioButton.addActionListener(actionListener);
55     myFeelLuckyRadioButton.addActionListener(actionListener);
56     myUseValueRadioButton.addActionListener(actionListener);
57     setTitle("Default value for parameter \"" + name + "\" needed");
58     myLeaveBlankRadioButton.setSelected(true);
59     myValueEditor.setEnabled(false);
60     myFeelLuckyDescription.setText("In method call place variable of the same type would be searched.\n" +
61                                    "When exactly one is found - it would be used.\n" +
62                                    "Blank place would be used otherwise");
63     myFeelLuckyDescription.setUI(new MultiLineLabelUI());
64     myBlankDescription.setUI(new MultiLineLabelUI());
65     myValueEditor.setText(defaultValue);
66     init();
67   }
68
69   public boolean feelLucky() {
70     return myFeelLuckyRadioButton.isSelected();
71   }
72
73
74   public String getDefaultValue() {
75     if (myLeaveBlankRadioButton.isSelected()) {
76       return "";
77     }
78     return myValueEditor.getText();
79   }
80
81   @Override
82   public JComponent getPreferredFocusedComponent() {
83     return myLeaveBlankRadioButton;
84   }
85
86   @Override
87   protected JComponent createCenterPanel() {
88     return myWholePanel;
89   }
90 }