mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Use LanguageTextField for regexp
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
<orderEntry type="library" name="Velocity" level="project" />
|
||||
<orderEntry type="module" module-name="platform-impl" />
|
||||
<orderEntry type="module" module-name="java-impl" />
|
||||
<orderEntry type="module" module-name="RegExpSupport" />
|
||||
</component>
|
||||
</module>
|
||||
|
||||
|
||||
+2
-15
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2001-2007 the original author or authors.
|
||||
* Copyright 2001-2012 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -15,8 +15,6 @@
|
||||
*/
|
||||
package org.jetbrains.generate.tostring;
|
||||
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiClass;
|
||||
|
||||
@@ -28,22 +26,11 @@ import com.intellij.psi.PsiClass;
|
||||
public interface GenerateToStringActionHandler {
|
||||
|
||||
/**
|
||||
* The action that does the actual generation of the code.
|
||||
* <p/>
|
||||
* This is called automatically by IDEA when user invokes the plugin from the generate menu.
|
||||
*
|
||||
* @param editor the current editor.
|
||||
* @param dataContext the current data context.
|
||||
*/
|
||||
void executeWriteAction(Editor editor, DataContext dataContext);
|
||||
|
||||
|
||||
/**
|
||||
* Action to be executed from quick fix.
|
||||
*
|
||||
* @param project the current project.
|
||||
* @param clazz the class.
|
||||
*/
|
||||
void executeActionQickFix(Project project, PsiClass clazz);
|
||||
void executeActionQuickFix(Project project, PsiClass clazz);
|
||||
|
||||
}
|
||||
|
||||
+4
-6
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2001-2007 the original author or authors.
|
||||
* Copyright 2001-2012 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -40,8 +40,6 @@ import com.intellij.psi.util.PsiUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.generate.tostring.config.Config;
|
||||
import org.jetbrains.generate.tostring.psi.PsiAdapter;
|
||||
import org.jetbrains.generate.tostring.psi.PsiAdapterFactory;
|
||||
import org.jetbrains.generate.tostring.template.TemplateResource;
|
||||
import org.jetbrains.generate.tostring.template.TemplatesManager;
|
||||
import org.jetbrains.generate.tostring.view.TemplatesPanel;
|
||||
@@ -72,7 +70,7 @@ public class GenerateToStringActionHandlerImpl extends EditorWriteActionHandler
|
||||
}
|
||||
|
||||
|
||||
public void executeActionQickFix(final Project project, final PsiClass clazz) {
|
||||
public void executeActionQuickFix(final Project project, final PsiClass clazz) {
|
||||
doExecuteAction(project, clazz, null);
|
||||
}
|
||||
|
||||
@@ -218,7 +216,7 @@ public class GenerateToStringActionHandlerImpl extends EditorWriteActionHandler
|
||||
Configurable composite = new TabbedConfigurable(disposable) {
|
||||
protected List<Configurable> createConfigurables() {
|
||||
List<Configurable> res = new ArrayList<Configurable>();
|
||||
res.add(new GenerateToStringConfigurable());
|
||||
res.add(new GenerateToStringConfigurable(clazz.getProject()));
|
||||
res.add(ui);
|
||||
return res;
|
||||
}
|
||||
@@ -227,7 +225,7 @@ public class GenerateToStringActionHandlerImpl extends EditorWriteActionHandler
|
||||
return "toString() Generation Settings";
|
||||
}
|
||||
|
||||
public String getHelpTopic() {
|
||||
public String getHelpTopic() {
|
||||
return null; // TODO:
|
||||
}
|
||||
|
||||
|
||||
+8
-5
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2009 JetBrains s.r.o.
|
||||
* Copyright 2000-2012 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.
|
||||
@@ -18,6 +18,7 @@ package org.jetbrains.generate.tostring;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.options.Configurable;
|
||||
import com.intellij.openapi.options.ConfigurationException;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import org.jetbrains.generate.tostring.config.Config;
|
||||
import org.jetbrains.generate.tostring.view.ConfigUI;
|
||||
|
||||
@@ -30,6 +31,11 @@ public class GenerateToStringConfigurable implements Configurable {
|
||||
private static final Logger log = Logger.getInstance("#org.jetbrains.generate.tostring.GenerateToStringConfigurable");
|
||||
|
||||
private ConfigUI configUI;
|
||||
private final Project myProject;
|
||||
|
||||
public GenerateToStringConfigurable(Project project) {
|
||||
myProject = project;
|
||||
}
|
||||
|
||||
public String getDisplayName() {
|
||||
return "Settings";
|
||||
@@ -40,7 +46,7 @@ public class GenerateToStringConfigurable implements Configurable {
|
||||
}
|
||||
|
||||
public JComponent createComponent() {
|
||||
return configUI = new ConfigUI(GenerateToStringContext.getConfig());
|
||||
return configUI = new ConfigUI(GenerateToStringContext.getConfig(), myProject);
|
||||
}
|
||||
|
||||
public boolean isModified() {
|
||||
@@ -49,7 +55,6 @@ public class GenerateToStringConfigurable implements Configurable {
|
||||
|
||||
public void apply() throws ConfigurationException {
|
||||
Config config = configUI.getConfig();
|
||||
|
||||
GenerateToStringContext.setConfig(config); // update context
|
||||
|
||||
if (log.isDebugEnabled()) log.debug("Config updated:\n" + config);
|
||||
@@ -62,6 +67,4 @@ public class GenerateToStringConfigurable implements Configurable {
|
||||
public void disposeUIResources() {
|
||||
configUI = null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2001-2007 the original author or authors.
|
||||
* Copyright 2001-2012 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -89,6 +89,9 @@ public class Config {
|
||||
}
|
||||
|
||||
public String getFilterFieldName() {
|
||||
if (filterFieldName == null) {
|
||||
return "";
|
||||
}
|
||||
return filterFieldName;
|
||||
}
|
||||
|
||||
@@ -113,6 +116,9 @@ public class Config {
|
||||
}
|
||||
|
||||
public String getFilterMethodName() {
|
||||
if (filterMethodName == null) {
|
||||
return "";
|
||||
}
|
||||
return filterMethodName;
|
||||
}
|
||||
|
||||
@@ -145,6 +151,9 @@ public class Config {
|
||||
}
|
||||
|
||||
public String getFilterFieldType() {
|
||||
if (filterFieldType == null) {
|
||||
return "";
|
||||
}
|
||||
return filterFieldType;
|
||||
}
|
||||
|
||||
@@ -161,6 +170,9 @@ public class Config {
|
||||
}
|
||||
|
||||
public String getFilterMethodType() {
|
||||
if (filterMethodType == null) {
|
||||
return "";
|
||||
}
|
||||
return filterMethodType;
|
||||
}
|
||||
|
||||
@@ -169,7 +181,7 @@ public class Config {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get's the filter pattern that this configuration represent.
|
||||
* Gets the filter pattern that this configuration represent.
|
||||
*
|
||||
* @return the filter pattern.
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2001-2007 the original author or authors.
|
||||
* Copyright 2001-2012 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -15,11 +15,14 @@
|
||||
*/
|
||||
package org.jetbrains.generate.tostring.view;
|
||||
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.ui.IdeBorderFactory;
|
||||
import com.intellij.ui.LanguageTextField;
|
||||
import org.apache.velocity.VelocityContext;
|
||||
import org.apache.velocity.app.VelocityEngine;
|
||||
import org.apache.velocity.exception.ParseErrorException;
|
||||
import org.intellij.lang.regexp.RegExpLanguage;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.generate.tostring.config.Config;
|
||||
import org.jetbrains.generate.tostring.config.DuplicatonPolicy;
|
||||
@@ -30,8 +33,6 @@ import org.jetbrains.generate.tostring.template.TemplateResource;
|
||||
import org.jetbrains.generate.tostring.velocity.VelocityFactory;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.border.Border;
|
||||
import javax.swing.border.EtchedBorder;
|
||||
import java.awt.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
@@ -43,36 +44,38 @@ import java.io.StringWriter;
|
||||
* The configuration is in the menu <b>File - Settings - GenerateToString</b>
|
||||
*/
|
||||
public class ConfigUI extends JPanel {
|
||||
private final Border etched = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
|
||||
|
||||
private final JCheckBox fullyQualifiedName = new JCheckBox("Use fully qualified classname in code generation ($classname)");
|
||||
private final JCheckBox fullyQualifiedName = new JCheckBox("Use fully qualified class name in code generation ($classname)");
|
||||
private final JCheckBox enableMethods = new JCheckBox("Enable getters in code generation ($methods)");
|
||||
private final JCheckBox moveCaretToMethod = new JCheckBox("Move caret to generated method");
|
||||
|
||||
private JRadioButton[] initialValueForReplaceDialog;
|
||||
private JRadioButton[] initialValueForNewMethodDialog;
|
||||
|
||||
private final JCheckBox filterConstant = new JCheckBox("Exclude all constant fields");
|
||||
private final JCheckBox filterEnum = new JCheckBox("Exclude all enum fields");
|
||||
private final JCheckBox filterStatic = new JCheckBox("Exclude all static fields");
|
||||
private final JCheckBox filterTransient = new JCheckBox("Exclude all transient fields");
|
||||
private final JCheckBox filterLoggers = new JCheckBox("Exclude all logger fields (Log4j, JDK Logging, Jakarta Commons Logging)");
|
||||
private final JTextField filterFieldName = new JTextField();
|
||||
private final JTextField filterFieldType = new JTextField();
|
||||
private final JTextField filterMethodName = new JTextField();
|
||||
private final JTextField filterMethodType = new JTextField();
|
||||
private final JCheckBox filterConstant = new JCheckBox("Exclude constant fields");
|
||||
private final JCheckBox filterEnum = new JCheckBox("Exclude enum fields");
|
||||
private final JCheckBox filterStatic = new JCheckBox("Exclude static fields");
|
||||
private final JCheckBox filterTransient = new JCheckBox("Exclude transient fields");
|
||||
private final JCheckBox filterLoggers = new JCheckBox("Exclude logger fields (Log4j, JDK Logging, Jakarta Commons Logging)");
|
||||
private final LanguageTextField filterFieldName;
|
||||
private final LanguageTextField filterFieldType;
|
||||
private final LanguageTextField filterMethodName;
|
||||
private final LanguageTextField filterMethodType;
|
||||
private final JComboBox sortElementsComboBox = new JComboBox();
|
||||
private final JCheckBox sortElements = new JCheckBox("Sort elements");
|
||||
|
||||
private final JCheckBox autoAddImplementsSerializable = new JCheckBox("Automatic add implements java.io.Serializable");
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param config Configuration for this UI to display.
|
||||
* @param project
|
||||
*/
|
||||
public ConfigUI(Config config) {
|
||||
public ConfigUI(Config config, Project project) {
|
||||
super(new BorderLayout());
|
||||
filterFieldName = new LanguageTextField(RegExpLanguage.INSTANCE, project, config.getFilterFieldName());
|
||||
filterFieldType = new LanguageTextField(RegExpLanguage.INSTANCE, project, config.getFilterFieldType());
|
||||
filterMethodName = new LanguageTextField(RegExpLanguage.INSTANCE, project, config.getFilterMethodName());
|
||||
filterMethodType = new LanguageTextField(RegExpLanguage.INSTANCE, project, config.getFilterMethodType());
|
||||
init();
|
||||
setConfig(config);
|
||||
}
|
||||
@@ -95,8 +98,7 @@ public class ConfigUI extends JPanel {
|
||||
*/
|
||||
private JPanel initSettingPanel() {
|
||||
GridBagConstraints constraint = new GridBagConstraints();
|
||||
JPanel outer = new JPanel();
|
||||
outer.setLayout(new GridBagLayout());
|
||||
JPanel outer = new JPanel(new GridBagLayout());
|
||||
|
||||
// UI Layout - Settings
|
||||
JPanel panel = new JPanel();
|
||||
@@ -126,6 +128,8 @@ public class ConfigUI extends JPanel {
|
||||
constraint.fill = GridBagConstraints.BOTH;
|
||||
constraint.gridx = 0;
|
||||
constraint.gridy = 0;
|
||||
constraint.insets.left = 5;
|
||||
constraint.insets.right = 5;
|
||||
outer.add(panel, constraint);
|
||||
|
||||
// UI Layout - Conflict Resolution
|
||||
@@ -195,7 +199,7 @@ public class ConfigUI extends JPanel {
|
||||
filterFieldName.setMinimumSize(new Dimension(100, 20)); // avoid input field to small
|
||||
panel.add(innerPanel);
|
||||
innerPanel = Box.createHorizontalBox();
|
||||
innerPanel.add(new JLabel("Exclude fields by typename (reg exp)"));
|
||||
innerPanel.add(new JLabel("Exclude fields by type name (reg exp)"));
|
||||
innerPanel.add(Box.createHorizontalStrut(3));
|
||||
innerPanel.add(filterFieldType);
|
||||
filterFieldType.setMinimumSize(new Dimension(100, 20)); // avoid input field to small
|
||||
@@ -207,7 +211,7 @@ public class ConfigUI extends JPanel {
|
||||
filterMethodName.setMinimumSize(new Dimension(100, 20)); // avoid input field to small
|
||||
panel.add(innerPanel);
|
||||
innerPanel = Box.createHorizontalBox();
|
||||
innerPanel.add(new JLabel("Exclude methods by return typename (reg exp)"));
|
||||
innerPanel.add(new JLabel("Exclude methods by return type name (reg exp)"));
|
||||
innerPanel.add(Box.createHorizontalStrut(3));
|
||||
innerPanel.add(filterMethodType);
|
||||
filterMethodType.setMinimumSize(new Dimension(100, 20)); // avoid input field to small
|
||||
@@ -245,12 +249,7 @@ public class ConfigUI extends JPanel {
|
||||
filterStatic.setSelected(config.isFilterStaticModifier());
|
||||
filterTransient.setSelected(config.isFilterTransientModifier());
|
||||
filterLoggers.setSelected(config.isFilterLoggers());
|
||||
filterFieldName.setText(config.getFilterFieldName());
|
||||
filterFieldType.setText(config.getFilterFieldType());
|
||||
filterMethodName.setText(config.getFilterMethodName());
|
||||
filterMethodType.setText(config.getFilterMethodType());
|
||||
|
||||
autoAddImplementsSerializable.setSelected(config.isAddImplementSerializable());
|
||||
enableMethods.setSelected(config.isEnableMethods());
|
||||
moveCaretToMethod.setSelected(config.isJumpToMethod());
|
||||
|
||||
@@ -301,7 +300,6 @@ public class ConfigUI extends JPanel {
|
||||
config.setFilterMethodName(emptyToNull(filterMethodName.getText()));
|
||||
config.setFilterMethodType(emptyToNull(filterMethodType.getText()));
|
||||
|
||||
config.setAddImplementSerializable(autoAddImplementsSerializable.isSelected());
|
||||
config.setEnableMethods(enableMethods.isSelected());
|
||||
config.setJumpToMethod(moveCaretToMethod.isSelected());
|
||||
|
||||
@@ -355,39 +353,4 @@ public class ConfigUI extends JPanel {
|
||||
sortElementsComboBox.setEnabled(sortElements.isSelected());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Action listener for user clicking syntax check
|
||||
*/
|
||||
private class OnSyntaxCheck implements ActionListener {
|
||||
private final JTextArea methodBody = new JTextArea();
|
||||
public void actionPerformed(ActionEvent event) {
|
||||
|
||||
// validate template first
|
||||
if (!TemplateResource.isValidTemplate(methodBody.getText())) {
|
||||
Messages.showWarningDialog("The template is incompatible with this version of the plugin.", "Incompatible Template");
|
||||
return;
|
||||
}
|
||||
|
||||
// okay let veloicty do it's syntax check
|
||||
try {
|
||||
StringWriter sw = new StringWriter();
|
||||
VelocityContext vc = new VelocityContext();
|
||||
|
||||
// velocity
|
||||
VelocityEngine velocity = VelocityFactory.getVelocityEngine();
|
||||
velocity.evaluate(vc, sw, "org.intellij.idea.plugin.tostring.view.ConfigUI$OnSyntaxCheck", methodBody.getText());
|
||||
|
||||
// no errors
|
||||
Messages.showMessageDialog("Syntax check complete - no errors found", "Syntax Check", Messages.getInformationIcon());
|
||||
|
||||
} catch (ParseErrorException e) {
|
||||
// Syntax Error - display to user
|
||||
Messages.showMessageDialog("Syntax Error:\n" + e.getMessage(), "Syntax Error", Messages.getErrorIcon());
|
||||
} catch (Exception e) {
|
||||
throw new PluginException("Error syntax checking template", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user