blob: 9f46a7121956c3743634838e489a79e9d7388985 [file] [log] [blame]
/*
* 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.
*/
package com.intellij.ide.todo.configurable;
import com.intellij.application.options.colors.ColorAndFontDescription;
import com.intellij.application.options.colors.ColorAndFontDescriptionPanel;
import com.intellij.application.options.colors.TextAttributesDescription;
import com.intellij.icons.AllIcons;
import com.intellij.ide.IdeBundle;
import com.intellij.openapi.editor.colors.EditorColorsManager;
import com.intellij.openapi.editor.colors.EditorColorsScheme;
import com.intellij.openapi.editor.markup.TextAttributes;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.psi.search.TodoAttributes;
import com.intellij.psi.search.TodoAttributesUtil;
import com.intellij.psi.search.TodoPattern;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* @author Vladimir Kondratyev
*/
class PatternDialog extends DialogWrapper{
private final TodoPattern myPattern;
private final JComboBox myIconComboBox;
private final JCheckBox myCaseSensitiveCheckBox;
private final JTextField myPatternStringField;
private final ColorAndFontDescriptionPanel myColorAndFontDescriptionPanel;
private final ColorAndFontDescription myColorAndFontDescription;
private final JCheckBox myUsedDefaultColorsCeckBox;
public PatternDialog(Component parent, TodoPattern pattern){
super(parent, true);
final TodoAttributes attrs = pattern.getAttributes();
myPattern=pattern;
myIconComboBox=new JComboBox(
new Icon[]{AllIcons.General.TodoDefault, AllIcons.General.TodoQuestion, AllIcons.General.TodoImportant}
);
myIconComboBox.setSelectedItem(attrs.getIcon());
myIconComboBox.setRenderer(new TodoTypeListCellRenderer());
myCaseSensitiveCheckBox=new JCheckBox(IdeBundle.message("checkbox.case.sensitive"),pattern.isCaseSensitive());
myPatternStringField=new JTextField(pattern.getPatternString());
// use default colors check box
myUsedDefaultColorsCeckBox = new JCheckBox(IdeBundle.message("checkbox.todo.use.default.colors"));
myUsedDefaultColorsCeckBox.setSelected(!attrs.shouldUseCustomTodoColor());
myColorAndFontDescriptionPanel = new ColorAndFontDescriptionPanel();
TextAttributes attributes = myPattern.getAttributes().getCustomizedTextAttributes();
myColorAndFontDescription = new TextAttributesDescription(null, null, attributes, null, EditorColorsManager.getInstance().getGlobalScheme(),
null, null) {
@Override
public void apply(EditorColorsScheme scheme) {
}
@Override
public boolean isErrorStripeEnabled() {
return true;
}
};
myColorAndFontDescriptionPanel.reset(myColorAndFontDescription);
updateCustomColorsPanel();
myUsedDefaultColorsCeckBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
updateCustomColorsPanel();
}
});
init();
}
private void updateCustomColorsPanel() {
final boolean useCustomColors = useCustomTodoColor();
if (useCustomColors) {
// restore controls
myColorAndFontDescriptionPanel.reset(myColorAndFontDescription);
} else {
// disable controls
myColorAndFontDescriptionPanel.resetDefault();
}
}
@Override
public JComponent getPreferredFocusedComponent(){
return myPatternStringField;
}
@Override
protected void doOKAction(){
myPattern.setPatternString(myPatternStringField.getText().trim());
myPattern.setCaseSensitive(myCaseSensitiveCheckBox.isSelected());
final TodoAttributes attrs = myPattern.getAttributes();
attrs.setIcon((Icon)myIconComboBox.getSelectedItem());
attrs.setUseCustomTodoColor(useCustomTodoColor(), TodoAttributesUtil.getDefaultColorSchemeTextAttributes());
if (useCustomTodoColor()) {
myColorAndFontDescriptionPanel.apply(myColorAndFontDescription, null);
}
super.doOKAction();
}
private boolean useCustomTodoColor() {
return !myUsedDefaultColorsCeckBox.isSelected();
}
@Override
protected JComponent createCenterPanel(){
JPanel panel=new JPanel(new GridBagLayout());
GridBagConstraints gb = new GridBagConstraints(0,0,1,1,0,0,GridBagConstraints.NORTHWEST,GridBagConstraints.HORIZONTAL,new Insets(0,0,5,10),0,0);
JLabel patternLabel=new JLabel(IdeBundle.message("label.todo.pattern"));
panel.add(patternLabel, gb);
Dimension oldPreferredSize=myPatternStringField.getPreferredSize();
myPatternStringField.setPreferredSize(new Dimension(300,oldPreferredSize.height));
gb.gridx = 1;
gb.gridwidth = GridBagConstraints.REMAINDER;
gb.weightx = 1;
panel.add(myPatternStringField,gb);
JLabel iconLabel=new JLabel(IdeBundle.message("label.todo.icon"));
gb.gridy++;
gb.gridx = 0;
gb.gridwidth = 1;
gb.weightx = 0;
panel.add(iconLabel, gb);
gb.gridx = 1;
gb.fill = GridBagConstraints.NONE;
gb.gridwidth = GridBagConstraints.REMAINDER;
gb.weightx = 0;
panel.add(myIconComboBox, gb);
gb.gridy++;
gb.gridx = 0;
gb.fill = GridBagConstraints.HORIZONTAL;
gb.gridwidth = GridBagConstraints.REMAINDER;
gb.weightx = 1;
panel.add(myCaseSensitiveCheckBox, gb);
gb.gridy++;
gb.gridx = 0;
gb.fill = GridBagConstraints.HORIZONTAL;
gb.gridwidth = GridBagConstraints.REMAINDER;
gb.weightx = 1;
panel.add(myUsedDefaultColorsCeckBox, gb);
gb.gridy++;
gb.gridx = 0;
gb.gridwidth = GridBagConstraints.REMAINDER;
gb.weightx = 1;
panel.add(myColorAndFontDescriptionPanel, gb);
return panel;
}
}