Custom folding classes moved to platform, other refactoring
[idea/community.git] / platform / lang-impl / src / com / intellij / lang / customFolding / CustomFoldingSettingsPanel.java
1 package com.intellij.lang.customFolding;
2
3 import com.intellij.ui.components.JBCheckBox;
4
5 import javax.swing.*;
6 import java.awt.event.ActionEvent;
7 import java.awt.event.ActionListener;
8
9 /**
10  * @author Rustam Vishnyakov
11  */
12 public class CustomFoldingSettingsPanel {
13   private JPanel mySettingsPanel;
14   private JTextField myFoldingStartField;
15   private JTextField myFoldingEndField;
16   private JBCheckBox myEnabledBox;
17   private JTextField myCollapsedStateField;
18   private JRadioButton myVisualStudioRadioButton;
19   private JRadioButton myNetBeansRadioButton;
20   private JPanel myPredefinedPatternsPanel;
21
22   public CustomFoldingSettingsPanel() {
23     myEnabledBox.addActionListener(new ActionListener() {
24       @Override
25       public void actionPerformed(ActionEvent e) {
26         boolean isEnabled = myEnabledBox.isSelected();
27         setFieldsEnabled(isEnabled);
28       }
29     });
30     ButtonGroup predefinedSettingsGroup = new ButtonGroup();
31     predefinedSettingsGroup.add(myNetBeansRadioButton);
32     predefinedSettingsGroup.add(myVisualStudioRadioButton);
33     myVisualStudioRadioButton.setSelected(false);
34     myNetBeansRadioButton.setSelected(false);
35     
36     myNetBeansRadioButton.addActionListener(new ActionListener() {
37       @Override
38       public void actionPerformed(ActionEvent e) {
39         myFoldingStartField.setText(".*<editor-fold .*desc=\"(.*)\".*$");
40         myFoldingEndField.setText(".*</editor-fold>");
41         myCollapsedStateField.setText("defaultstate=\"collapsed\"");
42       }
43     });
44
45     myVisualStudioRadioButton.addActionListener(new ActionListener() {
46       @Override
47       public void actionPerformed(ActionEvent e) {
48         myFoldingStartField.setText(".*region (.*)$");
49         myFoldingEndField.setText(".*endregion");
50         myCollapsedStateField.setText("");
51       }
52     });
53   }
54
55   public JComponent getComponent() {
56     return mySettingsPanel;
57   }
58   
59   public String getStartPattern() {
60     return myFoldingStartField.getText();
61   }
62   
63   public String getEndPattern() {
64     return myFoldingEndField.getText();
65   }
66   
67   public void setStartPattern(String startPattern) {
68     myFoldingStartField.setText(startPattern);
69   }
70   
71   public void setEndPattern(String endPattern) {
72     myFoldingEndField.setText(endPattern);
73   }
74   
75   public void setEnabled(boolean enabled) {
76     myEnabledBox.setSelected(enabled);
77     setFieldsEnabled(enabled);
78   }
79   
80   public boolean isEnabled() {
81     return myEnabledBox.isSelected();
82   }
83   
84   public void setCollapsedStatePattern(String pattern) {
85     myCollapsedStateField.setText(pattern);
86   }
87   
88   public String getCollapsedStatePattern() {
89     return myCollapsedStateField.getText();
90   }
91
92   private void setFieldsEnabled(boolean enabled) {
93     myFoldingStartField.setEnabled(enabled);
94     myFoldingEndField.setEnabled(enabled);
95     myCollapsedStateField.setEnabled(enabled);
96     myPredefinedPatternsPanel.setEnabled(enabled);
97     myNetBeansRadioButton.setEnabled(enabled);
98     myVisualStudioRadioButton.setEnabled(enabled);
99   }
100 }