From ccd81f5a343864f09cb27d7cef6f03243dca5edf Mon Sep 17 00:00:00 2001 From: Vladimir Kravets Date: Sat, 30 Mar 2013 00:19:34 +0200 Subject: [PATCH 01/10] IDEA-104221 Console folding rules allow to add empty substring and after this console folding is not working anymore --- .../console/ConsoleFoldingConfigurable.java | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/execution/console/ConsoleFoldingConfigurable.java b/platform/lang-impl/src/com/intellij/execution/console/ConsoleFoldingConfigurable.java index 71773a6cde8f..fec681a2cbd5 100644 --- a/platform/lang-impl/src/com/intellij/execution/console/ConsoleFoldingConfigurable.java +++ b/platform/lang-impl/src/com/intellij/execution/console/ConsoleFoldingConfigurable.java @@ -1,10 +1,13 @@ package com.intellij.execution.console; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.options.SearchableConfigurable; +import com.intellij.openapi.ui.InputValidator; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.Splitter; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.ui.AddEditDeleteListPanel; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; @@ -30,7 +33,8 @@ public class ConsoleFoldingConfigurable implements SearchableConfigurable, Confi myMainComponent = new JPanel(new BorderLayout()); Splitter splitter = new Splitter(true); myMainComponent.add(splitter); - myPositivePanel = new MyAddDeleteListPanel("Fold console lines that contain", "Enter a substring of a console line you'd like to see folded:"); + myPositivePanel = + new MyAddDeleteListPanel("Fold console lines that contain", "Enter a substring of a console line you'd like to see folded:"); myNegativePanel = new MyAddDeleteListPanel("Exceptions", "Enter a substring of a console line you don't want to fold:"); splitter.setFirstComponent(myPositivePanel); splitter.setSecondComponent(myNegativePanel); @@ -101,7 +105,26 @@ public class ConsoleFoldingConfigurable implements SearchableConfigurable, Confi @Nullable private String showEditDialog(final String initialValue) { - return Messages.showInputDialog(this, myQuery, "Folding pattern", Messages.getQuestionIcon(), initialValue, null); + return Messages.showInputDialog(this, myQuery, "Folding pattern", Messages.getQuestionIcon(), initialValue, new InputValidator() { + @Override + public boolean checkInput(String inputString) { + return true; + } + + @Override + public boolean canClose(String inputString) { + if (StringUtil.isEmpty(inputString)) { + ApplicationManager.getApplication().invokeLater(new Runnable() { + @Override + public void run() { + Messages.showErrorDialog("Console folding rule string cannot be empty", "Console Folding Rule Adding Error"); + } + }); + return false; + } + return true; + } + }); } void resetFrom(List patterns) { From 1656fe0e433b85f542db57d4090dff8f7513e3c7 Mon Sep 17 00:00:00 2001 From: Vladimir Kravets Date: Sun, 31 Mar 2013 15:03:37 +0300 Subject: [PATCH 02/10] IDEA-104221 Console folding rules allow to add empty substring and after this console folding is not working anymore. Use InputValidatorEx instead of InputValidator --- .../console/ConsoleFoldingConfigurable.java | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/execution/console/ConsoleFoldingConfigurable.java b/platform/lang-impl/src/com/intellij/execution/console/ConsoleFoldingConfigurable.java index fec681a2cbd5..471082275eea 100644 --- a/platform/lang-impl/src/com/intellij/execution/console/ConsoleFoldingConfigurable.java +++ b/platform/lang-impl/src/com/intellij/execution/console/ConsoleFoldingConfigurable.java @@ -1,10 +1,9 @@ package com.intellij.execution.console; -import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.options.SearchableConfigurable; -import com.intellij.openapi.ui.InputValidator; +import com.intellij.openapi.ui.InputValidatorEx; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.Splitter; import com.intellij.openapi.util.text.StringUtil; @@ -105,24 +104,24 @@ public class ConsoleFoldingConfigurable implements SearchableConfigurable, Confi @Nullable private String showEditDialog(final String initialValue) { - return Messages.showInputDialog(this, myQuery, "Folding pattern", Messages.getQuestionIcon(), initialValue, new InputValidator() { + return Messages.showInputDialog(this, myQuery, "Folding pattern", Messages.getQuestionIcon(), initialValue, new InputValidatorEx() { @Override public boolean checkInput(String inputString) { - return true; + return !StringUtil.isEmpty(inputString); } @Override public boolean canClose(String inputString) { - if (StringUtil.isEmpty(inputString)) { - ApplicationManager.getApplication().invokeLater(new Runnable() { - @Override - public void run() { - Messages.showErrorDialog("Console folding rule string cannot be empty", "Console Folding Rule Adding Error"); - } - }); - return false; + return !StringUtil.isEmpty(inputString); + } + + @Nullable + @Override + public String getErrorText(String inputString) { + if (!checkInput(inputString)) { + return "Console folding rule string cannot be empty"; } - return true; + return null; } }); } From 49fceab86487a7cbe4480f574cd8ede7e3892317 Mon Sep 17 00:00:00 2001 From: Vladimir Kravets Date: Tue, 2 Apr 2013 11:03:12 +0300 Subject: [PATCH 03/10] IDEA-104221 Console folding rules allow to add empty substring and after this console folding is not working anymore. Prevent loading of empty substring. Adding the user-defined strings to the end of substring's list --- .../console/ConsoleFoldingSettings.java | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/execution/console/ConsoleFoldingSettings.java b/platform/lang-impl/src/com/intellij/execution/console/ConsoleFoldingSettings.java index 20f96b7af132..ca986f020cdc 100644 --- a/platform/lang-impl/src/com/intellij/execution/console/ConsoleFoldingSettings.java +++ b/platform/lang-impl/src/com/intellij/execution/console/ConsoleFoldingSettings.java @@ -15,13 +15,14 @@ */ package com.intellij.execution.console; +import com.google.common.base.Predicate; +import com.google.common.collect.Collections2; import com.intellij.openapi.components.*; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.containers.ContainerUtil; +import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; /** * @author peter @@ -89,13 +90,19 @@ public class ConsoleFoldingSettings implements PersistentStateComponent filterEmptyStringsFromCollection(Collection collection) { + return Collections2.filter(collection, new Predicate() { + @Override + public boolean apply(@Nullable String input) { + return !StringUtil.isEmpty(input); + } + }); + } + public void loadState(MyBean state) { myPositivePatterns.clear(); myNegativePatterns.clear(); - myPositivePatterns.addAll(state.addedPositive); - myNegativePatterns.addAll(state.addedNegative); - Set removedPositive = new HashSet(state.removedPositive); Set removedNegative = new HashSet(state.removedNegative); @@ -104,6 +111,10 @@ public class ConsoleFoldingSettings implements PersistentStateComponent Date: Tue, 2 Apr 2013 15:16:26 +0400 Subject: [PATCH 04/10] IDEA-76475 Maven bom's (bill of materials) should work properly with the "navigate to managing dependency" functionality --- .../dom/MavenDomProjectProcessorUtils.java | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/MavenDomProjectProcessorUtils.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/MavenDomProjectProcessorUtils.java index a3b3cd35e410..246897a2cb53 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/MavenDomProjectProcessorUtils.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/MavenDomProjectProcessorUtils.java @@ -315,27 +315,25 @@ public class MavenDomProjectProcessorUtils { SearchProcessor processor = new SearchProcessor() { @Override protected MavenDomDependency find(MavenDomDependencies mavenDomDependencies) { - if (!model.equals(mavenDomDependencies.getParentOfType(MavenDomProjectModel.class, true))) { - for (MavenDomDependency domDependency : mavenDomDependencies.getDependencies()) { - if (artifactId.equals(domDependency.getArtifactId().getStringValue()) && - groupId.equals(domDependency.getGroupId().getStringValue())) { - return domDependency; - } + for (MavenDomDependency domDependency : mavenDomDependencies.getDependencies()) { + if (artifactId.equals(domDependency.getArtifactId().getStringValue()) && + groupId.equals(domDependency.getGroupId().getStringValue())) { + return domDependency; + } - if ("import".equals(domDependency.getScope().getRawText())) { - GenericDomValue version = domDependency.getVersion(); - if (version.getXmlElement() != null) { - GenericDomValueReference reference = new GenericDomValueReference(version); - PsiElement resolve = reference.resolve(); + if ("import".equals(domDependency.getScope().getRawText())) { + GenericDomValue version = domDependency.getVersion(); + if (version.getXmlElement() != null) { + GenericDomValueReference reference = new GenericDomValueReference(version); + PsiElement resolve = reference.resolve(); - if (resolve instanceof XmlFile) { - MavenDomProjectModel dependModel = MavenDomUtil.getMavenDomModel((PsiFile)resolve, MavenDomProjectModel.class); - if (dependModel != null) { - for (MavenDomDependency dep : dependModel.getDependencyManagement().getDependencies().getDependencies()) { - if (artifactId.equals(dep.getArtifactId().getStringValue()) && - groupId.equals(dep.getGroupId().getStringValue())) { - return domDependency; - } + if (resolve instanceof XmlFile) { + MavenDomProjectModel dependModel = MavenDomUtil.getMavenDomModel((PsiFile)resolve, MavenDomProjectModel.class); + if (dependModel != null) { + for (MavenDomDependency dep : dependModel.getDependencyManagement().getDependencies().getDependencies()) { + if (artifactId.equals(dep.getArtifactId().getStringValue()) && + groupId.equals(dep.getGroupId().getStringValue())) { + return domDependency; } } } From c0a68251733403d83fd08817642e64cae56817d1 Mon Sep 17 00:00:00 2001 From: Alexander Zolotov Date: Tue, 2 Apr 2013 15:19:29 +0400 Subject: [PATCH 05/10] IDEA-104390 Update some ToD --- resources-en/src/tips/SelectTasks.html | 15 +++++++++++++++ resources-en/src/tips/ShowAppliedStyles.html | 16 ++++++++++++++++ .../src/tips/images/hierarchy_browser.gif | Bin 5291 -> 6069 bytes .../src/tips/images/issueNavigation.png | Bin 0 -> 8314 bytes .../src/tips/images/issueNavigation1.png | Bin 0 -> 30810 bytes .../src/tips/images/show_applied_styles.gif | Bin 0 -> 10623 bytes resources-en/src/tips/tips.xml | 2 ++ 7 files changed, 33 insertions(+) create mode 100644 resources-en/src/tips/SelectTasks.html create mode 100644 resources-en/src/tips/ShowAppliedStyles.html create mode 100644 resources-en/src/tips/images/issueNavigation.png create mode 100644 resources-en/src/tips/images/issueNavigation1.png create mode 100644 resources-en/src/tips/images/show_applied_styles.gif diff --git a/resources-en/src/tips/SelectTasks.html b/resources-en/src/tips/SelectTasks.html new file mode 100644 index 000000000000..ad431a0be71b --- /dev/null +++ b/resources-en/src/tips/SelectTasks.html @@ -0,0 +1,15 @@ + + + + + + +

When working with a lengthy list of tasks, you don't need to delete them one by one. +Select several tasks, using Shift +or Control keys, click the right arrow, and then click +Remove. +

+

+ + + diff --git a/resources-en/src/tips/ShowAppliedStyles.html b/resources-en/src/tips/ShowAppliedStyles.html new file mode 100644 index 000000000000..7418eacc97a9 --- /dev/null +++ b/resources-en/src/tips/ShowAppliedStyles.html @@ -0,0 +1,16 @@ + + + + + + + +

You can quickly review all styles currently applied to an HTML tag, by right-clicking the tag name and selecting + Show Applied Styles For Tag + from the context menu:

+

+ + + + + diff --git a/resources-en/src/tips/images/hierarchy_browser.gif b/resources-en/src/tips/images/hierarchy_browser.gif index 10c37fa747e609dcd3cc111abe089182d47ba050..12cd66595aab4e9caa0e91597858a4b826f0b651 100644 GIT binary patch literal 6069 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 literal 5291 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 diff --git a/resources-en/src/tips/images/issueNavigation.png b/resources-en/src/tips/images/issueNavigation.png new file mode 100644 index 0000000000000000000000000000000000000000..adca4befad2722e32248677c57af6fa0713777b0 GIT binary patch literal 8314 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 literal 0 HcmV?d00001 diff --git a/resources-en/src/tips/images/issueNavigation1.png b/resources-en/src/tips/images/issueNavigation1.png new file mode 100644 index 0000000000000000000000000000000000000000..f6df06364c37a6f3c23d81f703373c6d7a833a46 GIT binary patch literal 30810 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 ZXRHsBMcnUj*;e6cK>Uh;UcZ0<06PY=gq{EZ literal 0 HcmV?d00001 diff --git a/resources-en/src/tips/tips.xml b/resources-en/src/tips/tips.xml index 7ec9c5674ff4..31e7da271e5c 100644 --- a/resources-en/src/tips/tips.xml +++ b/resources-en/src/tips/tips.xml @@ -159,4 +159,6 @@ + + From 7815c8090ae906d54f4b75e7e50bce7cb93a2da0 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Tue, 2 Apr 2013 00:34:51 +0400 Subject: [PATCH 06/10] artifact borders --- .../artifacts/ArtifactEditorImpl.java | 16 ++++++++++++---- .../artifacts/LayoutTreeComponent.java | 6 ++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactEditorImpl.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactEditorImpl.java index 717c7904ba09..8fe693c6460c 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactEditorImpl.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactEditorImpl.java @@ -63,6 +63,7 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import javax.swing.border.CompoundBorder; import javax.swing.border.EmptyBorder; +import javax.swing.border.LineBorder; import javax.swing.event.HyperlinkEvent; import java.awt.*; import java.awt.event.ActionEvent; @@ -206,6 +207,8 @@ public class ArtifactEditorImpl implements ArtifactEditorEx { JPanel treePanel = myLayoutTreeComponent.getTreePanel(); if (UIUtil.isUnderDarcula()) { treePanel.setBorder(new EmptyBorder(3, 0, 0, 0)); + } else { + treePanel.setBorder(new LineBorder(UIUtil.getBorderColor())); } leftPanel.add(treePanel, BorderLayout.CENTER); if (UIUtil.isUnderDarcula()) { @@ -219,8 +222,9 @@ public class ArtifactEditorImpl implements ArtifactEditorEx { final JPanel rightPanel = new JPanel(new BorderLayout()); final JPanel rightTopPanel = new JPanel(new BorderLayout()); - final JPanel labelPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 5, 0)); - labelPanel.add(new JLabel("Available Elements")); + final JPanel labelPanel = new JPanel(); + labelPanel.setLayout(new BoxLayout(labelPanel, BoxLayout.X_AXIS)); + labelPanel.add(new JLabel("Available Elements ")); final HyperlinkLabel link = new HyperlinkLabel(""); link.setIcon(AllIcons.General.Help); link.setUseIconAsLink(true); @@ -235,12 +239,16 @@ public class ArtifactEditorImpl implements ArtifactEditorEx { } }); labelPanel.add(link); - rightTopPanel.add(labelPanel, BorderLayout.SOUTH); + rightTopPanel.add(labelPanel, BorderLayout.CENTER); rightPanel.add(rightTopPanel, BorderLayout.NORTH); JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(mySourceItemsTree, UIUtil.isUnderDarcula()); JPanel scrollPaneWrap = new JPanel(new BorderLayout()); scrollPaneWrap.add(scrollPane, BorderLayout.CENTER); - scrollPaneWrap.setBorder(new EmptyBorder(3, 0, 0, 0)); + if (UIUtil.isUnderDarcula()) { + scrollPaneWrap.setBorder(new EmptyBorder(3, 0, 0, 0)); + } else { + scrollPaneWrap.setBorder(new LineBorder(UIUtil.getBorderColor())); + } rightPanel.add(scrollPaneWrap, BorderLayout.CENTER); if (UIUtil.isUnderDarcula()) { diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/LayoutTreeComponent.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/LayoutTreeComponent.java index 1575a273e46f..d778e881b0a0 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/LayoutTreeComponent.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/LayoutTreeComponent.java @@ -132,9 +132,7 @@ public class LayoutTreeComponent implements DnDTarget, Disposable { emptyPanel.setPreferredSize(new Dimension(0, 0)); myPropertiesPanelWrapper = new JPanel(new CardLayout()); - if (UIUtil.isUnderDarcula()) { - myPropertiesPanel.setBorder(new CustomLineBorder(UIUtil.getBorderColor(), 1, 0, 0, 0)); - } + myPropertiesPanel.setBorder(new CustomLineBorder(UIUtil.getBorderColor(), 1, 0, 0, 0)); myPropertiesPanelWrapper.add(EMPTY_CARD, emptyPanel); myPropertiesPanelWrapper.add(PROPERTIES_CARD, myPropertiesPanel); } @@ -614,7 +612,7 @@ public class LayoutTreeComponent implements DnDTarget, Disposable { myCurrentPanel = element.getType().createElementPropertiesPanel(myElement, myContext); myPropertiesPanel.removeAll(); if (myCurrentPanel != null) { - myPropertiesPanel.add(BorderLayout.CENTER, ScrollPaneFactory.createScrollPane(myCurrentPanel.createComponent(), UIUtil.isUnderDarcula())); + myPropertiesPanel.add(BorderLayout.CENTER, ScrollPaneFactory.createScrollPane(myCurrentPanel.createComponent(), true)); myCurrentPanel.reset(); myPropertiesPanel.revalidate(); } From 249c3ecb8aa7cb97e02ee899a283f9c6a8a6f18c Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Tue, 2 Apr 2013 15:34:03 +0400 Subject: [PATCH 07/10] IDEA-102899 Convert to Java: don't unescape symbols --- .../convertToJava/ExpressionGenerator.java | 40 +++++++++++-------- .../CodeBlockGenerationTest.groovy | 4 +- .../codeBlock/stringConverting.groovy | 12 ++++++ .../codeBlock/stringConverting.java | 12 ++++++ .../codeBlock/switch3.java | 2 +- .../codeBlock/switch4.java | 2 +- 6 files changed, 52 insertions(+), 20 deletions(-) create mode 100644 plugins/groovy/testdata/refactoring/convertGroovyToJava/codeBlock/stringConverting.groovy create mode 100644 plugins/groovy/testdata/refactoring/convertGroovyToJava/codeBlock/stringConverting.java diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/convertToJava/ExpressionGenerator.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/convertToJava/ExpressionGenerator.java index 82037294d532..98e2de75d35d 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/convertToJava/ExpressionGenerator.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/convertToJava/ExpressionGenerator.java @@ -73,6 +73,7 @@ import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.ClosureSyntheticPara import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GrLightLocalVariable; import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GroovyScriptClass; import org.jetbrains.plugins.groovy.lang.psi.typeEnhancers.ClosureParameterEnhancer; +import org.jetbrains.plugins.groovy.lang.psi.util.GrStringUtil; import org.jetbrains.plugins.groovy.lang.psi.util.GroovyCommonClassNames; import org.jetbrains.plugins.groovy.lang.psi.util.GroovyPropertyUtils; import org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil; @@ -896,32 +897,37 @@ public class ExpressionGenerator extends Generator { public void visitLiteralExpression(GrLiteral literal) { final TypeConstraint[] constraints = GroovyExpectedTypesProvider.calculateTypeConstraints(literal); - final String text = literal.getText(); - final Object value; - if (text.startsWith("'''") || text.startsWith("\"\"\"")) { - String string = ((String)literal.getValue()); - LOG.assertTrue(string != null); - string = string.replace("\n", "\\n").replace("\r", "\\r"); - value = string; - } - else { - value = literal.getValue(); - } - boolean isChar = false; for (TypeConstraint constraint : constraints) { if (constraint instanceof SubtypeConstraint && TypesUtil.unboxPrimitiveTypeWrapper(constraint.getDefaultType()) == PsiType.CHAR) { isChar = true; } } - if (isChar) { - builder.append('\'').append(StringUtil.escapeQuotes(String.valueOf(value))).append('\''); + + final String text = literal.getText(); + final Object value; + if (text.startsWith("'''") || text.startsWith("\"\"\"")) { + String string = GrStringUtil.removeQuotes(text).replace("\n", "\\n").replace("\r", "\\r"); + builder.append('"').append(string).append('"'); } - else if (value instanceof String) { - builder.append('"').append(StringUtil.escapeQuotes((String)value)).append('"'); + else if (text.startsWith("'")) { + if (isChar) { + builder.append(text); + } + else { + builder.append('"').append(StringUtil.escapeQuotes(StringUtil.trimEnd(text.substring(1, text.length()), "'"))).append('"'); + } + } + else if (text.startsWith("\"")) { + if (isChar) { + builder.append('\'').append(StringUtil.escapeQuotes(StringUtil.trimEnd(text.substring(1, text.length()), "\""))).append('\''); + } + else { + builder.append(text); + } } else { - builder.append(value); + builder.append(text); } } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/convertToJava/CodeBlockGenerationTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/convertToJava/CodeBlockGenerationTest.groovy index 897d1d4bb004..ac034e12badf 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/convertToJava/CodeBlockGenerationTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/convertToJava/CodeBlockGenerationTest.groovy @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -189,4 +189,6 @@ public final class Matcher { void testSelfNavigatingOperator() { doTest() } void testComparisonToNull() { doTest() } + + void testStringConverting() { doTest() } } diff --git a/plugins/groovy/testdata/refactoring/convertGroovyToJava/codeBlock/stringConverting.groovy b/plugins/groovy/testdata/refactoring/convertGroovyToJava/codeBlock/stringConverting.groovy new file mode 100644 index 000000000000..e70d8c606eb8 --- /dev/null +++ b/plugins/groovy/testdata/refactoring/convertGroovyToJava/codeBlock/stringConverting.groovy @@ -0,0 +1,12 @@ +print("a"); +print("v"); +char a = 'a'; +java.lang.String s = "b"; +java.lang.String x = "ab"; +print("a\t\nabc"); +print("a'b\tc"); +print("a\"b\tc"); +print(4); +print(4.5f); +print(4.5d); +print(-4.5d); diff --git a/plugins/groovy/testdata/refactoring/convertGroovyToJava/codeBlock/stringConverting.java b/plugins/groovy/testdata/refactoring/convertGroovyToJava/codeBlock/stringConverting.java new file mode 100644 index 000000000000..e70d8c606eb8 --- /dev/null +++ b/plugins/groovy/testdata/refactoring/convertGroovyToJava/codeBlock/stringConverting.java @@ -0,0 +1,12 @@ +print("a"); +print("v"); +char a = 'a'; +java.lang.String s = "b"; +java.lang.String x = "ab"; +print("a\t\nabc"); +print("a'b\tc"); +print("a\"b\tc"); +print(4); +print(4.5f); +print(4.5d); +print(-4.5d); diff --git a/plugins/groovy/testdata/refactoring/convertGroovyToJava/codeBlock/switch3.java b/plugins/groovy/testdata/refactoring/convertGroovyToJava/codeBlock/switch3.java index b3e0f58ec920..b9bf0f879210 100644 --- a/plugins/groovy/testdata/refactoring/convertGroovyToJava/codeBlock/switch3.java +++ b/plugins/groovy/testdata/refactoring/convertGroovyToJava/codeBlock/switch3.java @@ -1,4 +1,4 @@ -java.util.Date date = new java.util.Date(2011, 4, 9); +java.util.Date date = new java.util.Date(2011, 04, 09); if (org.codehaus.groovy.runtime.DefaultGroovyMethods.isCase(new java.util.Date(20, 11, 23), date)) { print("aaa"); print("bbb"); diff --git a/plugins/groovy/testdata/refactoring/convertGroovyToJava/codeBlock/switch4.java b/plugins/groovy/testdata/refactoring/convertGroovyToJava/codeBlock/switch4.java index f70673f58d36..86116da16b22 100644 --- a/plugins/groovy/testdata/refactoring/convertGroovyToJava/codeBlock/switch4.java +++ b/plugins/groovy/testdata/refactoring/convertGroovyToJava/codeBlock/switch4.java @@ -1,4 +1,4 @@ -java.util.Date date = new java.util.Date(2011, 4, 9); +java.util.Date date = new java.util.Date(2011, 04, 09); if (org.codehaus.groovy.runtime.DefaultGroovyMethods.isCase(new java.util.Date(20, 11, 23), date)) { print("aaa"); print("bbb"); From 1e5624fac26db0d39e0bd5b9d23790382124f7ac Mon Sep 17 00:00:00 2001 From: anna Date: Tue, 2 Apr 2013 13:21:21 +0200 Subject: [PATCH 08/10] javafx: suggest only ids used in current project --- .../plugins/javaFX/JavaFxIdsIndex.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/JavaFxIdsIndex.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/JavaFxIdsIndex.java index ce51e924b6a6..3e4c63850118 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/JavaFxIdsIndex.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/JavaFxIdsIndex.java @@ -74,10 +74,23 @@ public class JavaFxIdsIndex extends FileBasedIndexExtension> } @NotNull - public static Collection getAllRegisteredIds(Project project) { + public static Collection getAllRegisteredIds(Project project, Set fxmls) { CommonProcessors.CollectUniquesProcessor processor = new CommonProcessors.CollectUniquesProcessor(); FileBasedIndex.getInstance().processAllKeys(KEY, processor, project); - return processor.getResults(); + final Collection results = new ArrayList(processor.getResults()); + final GlobalSearchScope searchScope = GlobalSearchScope.projectScope(project); + for (Iterator iterator = results.iterator(); iterator.hasNext(); ) { + final String id = iterator.next(); + final List> values = FileBasedIndex.getInstance().getValues(KEY, id, searchScope); + if (!values.isEmpty()) { + final Set pathSet = values.get(0); + if (pathSet != null && !Collections.disjoint(pathSet, fxmls)) { + continue; + } + } + iterator.remove(); + } + return results; } @NotNull From 0cb67998fc87c2e86e2edeee2ffc87f77683685e Mon Sep 17 00:00:00 2001 From: anna Date: Tue, 2 Apr 2013 13:31:49 +0200 Subject: [PATCH 09/10] javafx: rename controller field if rename was invoked on source attr of a reference --- .../src/META-INF/XmlPlugin.xml | 2 +- .../plugins/javaFX/fxml/JavaFXRenameTest.java | 11 +++- .../src/META-INF/common-javaFX-plugin.xml | 1 + .../JavaFxRenameAttributeProcessor.java | 58 +++++++++++++++++++ .../javaFX/testData/rename/FromReference.java | 4 ++ .../javaFX/testData/rename/fromReference.fxml | 8 +++ .../testData/rename/fromReference_after.fxml | 8 +++ 7 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 plugins/javaFX/src/org/jetbrains/plugins/javaFX/JavaFxRenameAttributeProcessor.java create mode 100644 plugins/javaFX/testData/rename/FromReference.java create mode 100644 plugins/javaFX/testData/rename/fromReference.fxml create mode 100644 plugins/javaFX/testData/rename/fromReference_after.fxml diff --git a/platform/platform-resources/src/META-INF/XmlPlugin.xml b/platform/platform-resources/src/META-INF/XmlPlugin.xml index c39432bffaed..8a997f8703d0 100644 --- a/platform/platform-resources/src/META-INF/XmlPlugin.xml +++ b/platform/platform-resources/src/META-INF/XmlPlugin.xml @@ -311,7 +311,7 @@ - + diff --git a/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXRenameTest.java b/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXRenameTest.java index 7b5893da6b90..702f0aa0fbd5 100644 --- a/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXRenameTest.java +++ b/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXRenameTest.java @@ -18,6 +18,7 @@ package org.jetbrains.plugins.javaFX.fxml; import com.intellij.codeInsight.TargetElementUtilBase; import com.intellij.codeInsight.daemon.DaemonAnalyzerTestCase; import com.intellij.openapi.application.PluginPathManager; +import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; import com.intellij.refactoring.rename.RenameProcessor; import com.intellij.refactoring.rename.inplace.MemberInplaceRenameHandler; @@ -51,7 +52,15 @@ public class JavaFXRenameTest extends DaemonAnalyzerTestCase { public void testCustomComponentTag() throws Exception { doTest("Foo", true); } - + + public void testFromReference() throws Exception { + final String newName = "lbl1"; + doTest(newName); + final PsiClass controllerClass = findClass(getTestName(false)); + assertNotNull(controllerClass); + assertNotNull(controllerClass.findFieldByName(newName, false)); + } + public void testIdWithRefs() throws Exception { configureByFiles(null, getTestName(true) + ".fxml"); PsiElement element = TargetElementUtilBase diff --git a/plugins/javaFX/src/META-INF/common-javaFX-plugin.xml b/plugins/javaFX/src/META-INF/common-javaFX-plugin.xml index ce37e7bf9534..ebe56efb50d1 100644 --- a/plugins/javaFX/src/META-INF/common-javaFX-plugin.xml +++ b/plugins/javaFX/src/META-INF/common-javaFX-plugin.xml @@ -42,6 +42,7 @@ + diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/JavaFxRenameAttributeProcessor.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/JavaFxRenameAttributeProcessor.java new file mode 100644 index 000000000000..fd9945ebec50 --- /dev/null +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/JavaFxRenameAttributeProcessor.java @@ -0,0 +1,58 @@ +/* + * Copyright 2000-2013 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 org.jetbrains.plugins.javaFX; + +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiField; +import com.intellij.psi.PsiReference; +import com.intellij.psi.search.SearchScope; +import com.intellij.psi.xml.XmlAttribute; +import com.intellij.psi.xml.XmlAttributeValue; +import com.intellij.refactoring.rename.RenameXmlAttributeProcessor; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.plugins.javaFX.fxml.FxmlConstants; +import org.jetbrains.plugins.javaFX.fxml.JavaFxFileTypeFactory; + +import java.util.Map; + +/** + * User: anna + * Date: 4/2/13 + */ +public class JavaFxRenameAttributeProcessor extends RenameXmlAttributeProcessor { + @Override + public boolean canProcessElement(@NotNull PsiElement element) { + if (element instanceof XmlAttributeValue && JavaFxFileTypeFactory.isFxml(element.getContainingFile())) { + final PsiElement parent = element.getParent(); + return parent instanceof XmlAttribute && FxmlConstants.FX_ID.equals(((XmlAttribute)parent).getName()); + } + return false; + } + + @Override + public void prepareRenaming(PsiElement element, String newName, Map allRenames, SearchScope scope) { + if (element instanceof XmlAttributeValue) { + final XmlAttributeValue refId = (XmlAttributeValue)element; + final PsiReference refIdReference = refId.getReference(); + if (refIdReference != null) { + final PsiElement resolveRefId = refIdReference.resolve(); + if (resolveRefId instanceof PsiField) { + allRenames.put(resolveRefId, newName); + } + } + } + } +} diff --git a/plugins/javaFX/testData/rename/FromReference.java b/plugins/javaFX/testData/rename/FromReference.java new file mode 100644 index 000000000000..63a025eec6d5 --- /dev/null +++ b/plugins/javaFX/testData/rename/FromReference.java @@ -0,0 +1,4 @@ +import javafx.control.Label; +public class FromReference { + public Label lb; +} \ No newline at end of file diff --git a/plugins/javaFX/testData/rename/fromReference.fxml b/plugins/javaFX/testData/rename/fromReference.fxml new file mode 100644 index 000000000000..0c7df76f5d20 --- /dev/null +++ b/plugins/javaFX/testData/rename/fromReference.fxml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/plugins/javaFX/testData/rename/fromReference_after.fxml b/plugins/javaFX/testData/rename/fromReference_after.fxml new file mode 100644 index 000000000000..4fa09b02606d --- /dev/null +++ b/plugins/javaFX/testData/rename/fromReference_after.fxml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file From b640dbb723b752edea026ff8d7777133aa8669c4 Mon Sep 17 00:00:00 2001 From: lehnerj Date: Sun, 31 Mar 2013 16:46:29 +0200 Subject: [PATCH 10/10] Standard shortcut for expand all / collapse all Every expand/collapse all uses the same shortcut except these two. --- .../src/com/intellij/ide/util/MemberChooser.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/util/MemberChooser.java b/platform/lang-impl/src/com/intellij/ide/util/MemberChooser.java index 902de6c5339b..d08b7432dbb4 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/MemberChooser.java +++ b/platform/lang-impl/src/com/intellij/ide/util/MemberChooser.java @@ -21,12 +21,12 @@ import com.intellij.icons.AllIcons; import com.intellij.ide.IdeBundle; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.keymap.KeymapManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.VerticalFlowLayout; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.Ref; -import com.intellij.openapi.util.SystemInfo; import com.intellij.psi.codeStyle.CodeStyleSettings; import com.intellij.psi.codeStyle.CodeStyleSettingsManager; import com.intellij.ui.*; @@ -302,15 +302,13 @@ public class MemberChooser extends DialogWrapper implemen ExpandAllAction expandAllAction = new ExpandAllAction(); expandAllAction.registerCustomShortcutSet( - new CustomShortcutSet( - KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, SystemInfo.isMac ? InputEvent.META_MASK : InputEvent.CTRL_MASK)), + new CustomShortcutSet(KeymapManager.getInstance().getActiveKeymap().getShortcuts(IdeActions.ACTION_EXPAND_ALL)), myTree); group.add(expandAllAction); CollapseAllAction collapseAllAction = new CollapseAllAction(); collapseAllAction.registerCustomShortcutSet( - new CustomShortcutSet( - KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, SystemInfo.isMac ? InputEvent.META_MASK : InputEvent.CTRL_MASK)), + new CustomShortcutSet(KeymapManager.getInstance().getActiveKeymap().getShortcuts(IdeActions.ACTION_COLLAPSE_ALL)), myTree); group.add(collapseAllAction);