diff --git a/java/debugger/impl/src/com/intellij/debugger/settings/DebuggerDataViewsConfigurable.java b/java/debugger/impl/src/com/intellij/debugger/settings/DebuggerDataViewsConfigurable.java index a0d706ddca0b..891d2b3c9135 100644 --- a/java/debugger/impl/src/com/intellij/debugger/settings/DebuggerDataViewsConfigurable.java +++ b/java/debugger/impl/src/com/intellij/debugger/settings/DebuggerDataViewsConfigurable.java @@ -110,7 +110,7 @@ public class DebuggerDataViewsConfigurable implements SearchableConfigurable { ButtonGroup group = new ButtonGroup(); group.add(myRbAllThatOverride); group.add(myRbFromList); - myToStringFilterEditor = new ClassFilterEditor(myProject); + myToStringFilterEditor = new ClassFilterEditor(myProject, null, "reference.viewBreakpoints.classFilters.newPattern"); myCbEnableToString.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { final boolean enabled = myCbEnableToString.isSelected(); diff --git a/java/debugger/impl/src/com/intellij/debugger/settings/DebuggerSteppingConfigurable.java b/java/debugger/impl/src/com/intellij/debugger/settings/DebuggerSteppingConfigurable.java index 2e49584a1dfd..9d4a79051067 100644 --- a/java/debugger/impl/src/com/intellij/debugger/settings/DebuggerSteppingConfigurable.java +++ b/java/debugger/impl/src/com/intellij/debugger/settings/DebuggerSteppingConfigurable.java @@ -110,7 +110,7 @@ public class DebuggerSteppingConfigurable implements SearchableConfigurable, Con panel.add(myCbSkipSimpleGetters, new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0),0, 0)); panel.add(myCbStepInfoFiltersEnabled, new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(8, 0, 0, 0),0, 0)); - mySteppingFilterEditor = new ClassFilterEditor(myProject); + mySteppingFilterEditor = new ClassFilterEditor(myProject, null, "reference.viewBreakpoints.classFilters.newPattern"); panel.add(mySteppingFilterEditor, new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 5, 0, 0),0, 0)); myCbStepInfoFiltersEnabled.addActionListener(new ActionListener() { diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/EditClassFiltersDialog.java b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/EditClassFiltersDialog.java index ff79fba190fe..d399efb1fcd2 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/EditClassFiltersDialog.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/EditClassFiltersDialog.java @@ -20,12 +20,12 @@ */ package com.intellij.debugger.ui.breakpoints; -import com.intellij.ide.util.ClassFilter; -import com.intellij.ui.classFilter.ClassFilterEditor; import com.intellij.debugger.DebuggerBundle; +import com.intellij.ide.util.ClassFilter; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.ui.IdeBorderFactory; +import com.intellij.ui.classFilter.ClassFilterEditor; import javax.swing.*; import java.awt.*; @@ -54,13 +54,13 @@ public class EditClassFiltersDialog extends DialogWrapper { Box mainPanel = Box.createHorizontalBox(); - myClassFilterEditor = new ClassFilterEditor(myProject, myChooserFilter); + myClassFilterEditor = new ClassFilterEditor(myProject, myChooserFilter, "reference.viewBreakpoints.classFilters.newPattern"); myClassFilterEditor.setPreferredSize(new Dimension(400, 200)); myClassFilterEditor.setBorder(IdeBorderFactory.createTitledBorder( DebuggerBundle.message("class.filters.dialog.inclusion.filters.group"), false, false, true)); mainPanel.add(myClassFilterEditor); - myClassExclusionFilterEditor = new ClassFilterEditor(myProject, myChooserFilter); + myClassExclusionFilterEditor = new ClassFilterEditor(myProject, myChooserFilter, "reference.viewBreakpoints.classFilters.newPattern"); myClassExclusionFilterEditor.setPreferredSize(new Dimension(400, 200)); myClassExclusionFilterEditor.setBorder(IdeBorderFactory.createTitledBorder( DebuggerBundle.message("class.filters.dialog.exclusion.filters.group"), false, false, true)); @@ -92,4 +92,8 @@ public class EditClassFiltersDialog extends DialogWrapper { public com.intellij.ui.classFilter.ClassFilter[] getExclusionFilters() { return myClassExclusionFilterEditor.getFilters(); } + + protected String getHelpId() { + return "reference.viewBreakpoints.classFilters"; + } } \ No newline at end of file diff --git a/java/openapi/src/com/intellij/ui/classFilter/ClassFilterEditor.java b/java/openapi/src/com/intellij/ui/classFilter/ClassFilterEditor.java index b772186338b7..4ad2f7edc851 100644 --- a/java/openapi/src/com/intellij/ui/classFilter/ClassFilterEditor.java +++ b/java/openapi/src/com/intellij/ui/classFilter/ClassFilterEditor.java @@ -59,13 +59,20 @@ public class ClassFilterEditor extends JPanel implements ComponentWithEmptyText private final JButton myRemoveButton; protected final Project myProject; private final ClassFilter myChooserFilter; + @Nullable + private final String myPatternsHelpId; public ClassFilterEditor(Project project) { this (project, null); } - public ClassFilterEditor(Project project, com.intellij.ide.util.ClassFilter classFilter) { + public ClassFilterEditor(Project project, ClassFilter classFilter) { + this (project, classFilter, null); + } + + public ClassFilterEditor(Project project, ClassFilter classFilter, @Nullable String patternsHelpId) { super(new GridBagLayout()); + myPatternsHelpId = patternsHelpId; myAddClassButton = new JButton(getAddButtonText()); myAddPatternButton = new JButton(getAddPatternButtonText()); myRemoveButton = new JButton(UIBundle.message("button.remove")); @@ -302,7 +309,7 @@ public class ClassFilterEditor extends JPanel implements ComponentWithEmptyText } protected void addPatternFilter() { - ClassFilterEditorAddDialog dialog = new ClassFilterEditorAddDialog(myProject); + ClassFilterEditorAddDialog dialog = new ClassFilterEditorAddDialog(myProject, myPatternsHelpId); dialog.show(); if (dialog.isOK()) { String pattern = dialog.getPattern(); diff --git a/java/openapi/src/com/intellij/ui/classFilter/ClassFilterEditorAddDialog.java b/java/openapi/src/com/intellij/ui/classFilter/ClassFilterEditorAddDialog.java index 2ee5f610d92a..693f359f374d 100644 --- a/java/openapi/src/com/intellij/ui/classFilter/ClassFilterEditorAddDialog.java +++ b/java/openapi/src/com/intellij/ui/classFilter/ClassFilterEditorAddDialog.java @@ -30,6 +30,7 @@ import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.ui.UIBundle; +import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.awt.*; @@ -39,10 +40,13 @@ import java.awt.event.ActionListener; class ClassFilterEditorAddDialog extends DialogWrapper { private final Project myProject; private TextFieldWithBrowseButton myClassName; + @Nullable + private final String myHelpId; - public ClassFilterEditorAddDialog(Project project) { + public ClassFilterEditorAddDialog(Project project, @Nullable String helpId) { super(project, true); myProject = project; + myHelpId = helpId; setTitle(UIBundle.message("class.filter.editor.add.dialog.title")); init(); } @@ -104,4 +108,9 @@ class ClassFilterEditorAddDialog extends DialogWrapper { protected String getDimensionServiceKey(){ return "#com.intellij.debugger.ui.breakpoints.BreakpointsConfigurationDialogFactory.BreakpointsConfigurationDialog.AddFieldBreakpointDialog"; } + + @Override @Nullable + protected String getHelpId() { + return myHelpId; + } } diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java index f97b7753bcf1..6d175accb1e4 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java @@ -137,8 +137,7 @@ public class GroovyBuilder extends Builder { final StringBuffer unparsedBuffer = handler.getStdErr(); if (unparsedBuffer.length() != 0) { - context.processMessage(new CompilerMessage(BUILDER_NAME, BuildMessage.Kind.ERROR, unparsedBuffer.toString())); - hasMessages = true; + context.processMessage(new CompilerMessage(BUILDER_NAME, BuildMessage.Kind.INFO, unparsedBuffer.toString())); } final int exitValue = handler.getProcess().exitValue(); diff --git a/platform/lang-impl/src/com/intellij/execution/actions/StopAction.java b/platform/lang-impl/src/com/intellij/execution/actions/StopAction.java index ddfa286e16e3..8ea7976017db 100644 --- a/platform/lang-impl/src/com/intellij/execution/actions/StopAction.java +++ b/platform/lang-impl/src/com/intellij/execution/actions/StopAction.java @@ -130,7 +130,7 @@ public class StopAction extends DumbAwareAction implements AnAction.TransparentU if (!processHandler.isProcessTerminating()) { enable = true; } - else if (processHandler instanceof KillableProcess && ((KillableProcess)processHandler).canKillProcess()) { + else if (processHandler instanceof KillableProcess && ((KillableProcess)processHandler).canKillSoftly()) { enable = true; icon = KILL_PROCESS_ICON; description = "Kill process"; diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReference.java b/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReference.java index 542e48049c6e..2514e0e182ed 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReference.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReference.java @@ -551,7 +551,7 @@ public class FileReference implements FileReferenceOwner, PsiPolyVariantReferenc public String getUnresolvedMessagePattern() { return LangBundle.message("error.cannot.resolve") + " " + (isLast() ? LangBundle.message("terms.file") : LangBundle.message("terms.directory")) - + " ''" + decode(getCanonicalText()) + "''"; + + " ''" + StringUtil.escapePattern(decode(getCanonicalText())) + "''"; } public final boolean isLast() { diff --git a/platform/lang-impl/src/com/intellij/util/indexing/ChangeTrackingValueContainer.java b/platform/lang-impl/src/com/intellij/util/indexing/ChangeTrackingValueContainer.java index c9f257585457..9d38a9e0607f 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/ChangeTrackingValueContainer.java +++ b/platform/lang-impl/src/com/intellij/util/indexing/ChangeTrackingValueContainer.java @@ -66,12 +66,12 @@ class ChangeTrackingValueContainer extends UpdatableValueContainer } @Override - public void removeAllValues(int inputId) { + public void removeAssociatedValue(int inputId) { if (myMerged != null) { - myMerged.removeAllValues(inputId); + myMerged.removeAssociatedValue(inputId); } - myAdded.removeAllValues(inputId); - myRemoved.removeAllValues(inputId); + myAdded.removeAssociatedValue(inputId); + myRemoved.removeAssociatedValue(inputId); myInvalidated.add(inputId); } @@ -103,11 +103,6 @@ class ChangeTrackingValueContainer extends UpdatableValueContainer return getMergedData().toValueList(); } - @Override - public int[] getInputIds(final Value value) { - return getMergedData().getInputIds(value); - } - @Override public boolean isAssociated(final Value value, final int inputId) { return getMergedData().isAssociated(value, inputId); @@ -117,6 +112,11 @@ class ChangeTrackingValueContainer extends UpdatableValueContainer public IntIterator getInputIdsIterator(final Value value) { return getMergedData().getInputIdsIterator(value); } + + public void dropMergedData() { + myMerged = null; + } + // need 'synchronized' to ensure atomic initialization of merged data // because several threads that acquired read lock may simultaneously execute the method private ValueContainer getMergedData() { @@ -133,29 +133,32 @@ class ChangeTrackingValueContainer extends UpdatableValueContainer final ValueContainer fromDisk = myInitializer.compute(); - final ContainerAction addAction = new ContainerAction() { + fromDisk.forEach(new ContainerAction() { @Override public void perform(final int id, final Value value) { newMerged.addValue(id, value); } - }; - final ContainerAction removeAction = new ContainerAction() { + }); + myInvalidated.forEach(new TIntProcedure() { + @Override + public boolean execute(int inputId) { + newMerged.removeAssociatedValue(inputId); + return true; + } + }); + myRemoved.forEach(new ContainerAction() { @Override public void perform(final int id, final Value value) { newMerged.removeValue(id, value); } - }; - - fromDisk.forEach(addAction); - myInvalidated.forEach(new TIntProcedure() { + }); + myAdded.forEach(new ContainerAction() { @Override - public boolean execute(int inputId) { - newMerged.removeAllValues(inputId); - return true; + public void perform(final int id, final Value value) { + newMerged.removeAssociatedValue(id); // enforcing "one-value-per-file for particular key" invariant + newMerged.addValue(id, value); } }); - myRemoved.forEach(removeAction); - myAdded.forEach(addAction); setNeedsCompacting(fromDisk.needsCompacting()); myMerged = newMerged; diff --git a/platform/lang-impl/src/com/intellij/util/indexing/MapIndexStorage.java b/platform/lang-impl/src/com/intellij/util/indexing/MapIndexStorage.java index f1c3a1aad070..f8012d9a7628 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/MapIndexStorage.java +++ b/platform/lang-impl/src/com/intellij/util/indexing/MapIndexStorage.java @@ -248,7 +248,7 @@ public final class MapIndexStorage implements IndexStorage implements IndexStorage { - private final Map> myMap = new HashMap>(); + private final Map> myMap = new HashMap>(); private final IndexStorage myBackendStorage; private final List myListeners = ContainerUtil.createEmptyCOWList(); private final AtomicBoolean myBufferingEnabled = new AtomicBoolean(false); @@ -114,13 +114,17 @@ public class MemoryIndexStorage implements IndexStorage if (stopList.contains(key)) return true; final UpdatableValueContainer container = myMap.get(key); - if (container != null && container.size() == 0) return true; + if (container != null && container.size() == 0) { + return true; + } return processor.process(key); } }; for (Key key : myMap.keySet()) { - if (!decoratingProcessor.process(key)) return false; + if (!decoratingProcessor.process(key)) { + return false; + } stopList.add(key); } return myBackendStorage.processKeys(decoratingProcessor); @@ -132,9 +136,9 @@ public class MemoryIndexStorage implements IndexStorage getMemValueContainer(key).addValue(inputId, value); return; } - final UpdatableValueContainer valueContainer = myMap.get(key); + final ChangeTrackingValueContainer valueContainer = myMap.get(key); if (valueContainer != null) { - valueContainer.addValue(inputId, value); + valueContainer.dropMergedData(); } myBackendStorage.addValue(key, inputId, value); @@ -146,9 +150,9 @@ public class MemoryIndexStorage implements IndexStorage getMemValueContainer(key).removeValue(inputId, value); return; } - final UpdatableValueContainer valueContainer = myMap.get(key); + final ChangeTrackingValueContainer valueContainer = myMap.get(key); if (valueContainer != null) { - valueContainer.removeValue(inputId, value); + valueContainer.dropMergedData(); } myBackendStorage.removeValue(key, inputId, value); } @@ -156,19 +160,19 @@ public class MemoryIndexStorage implements IndexStorage @Override public void removeAllValues(Key key, int inputId) throws StorageException { if (myBufferingEnabled.get()) { - getMemValueContainer(key).removeAllValues(inputId); + getMemValueContainer(key).removeAssociatedValue(inputId); return; } - final UpdatableValueContainer valueContainer = myMap.get(key); + final ChangeTrackingValueContainer valueContainer = myMap.get(key); if (valueContainer != null) { - valueContainer.removeAllValues(inputId); + valueContainer.dropMergedData(); } myBackendStorage.removeAllValues(key, inputId); } private UpdatableValueContainer getMemValueContainer(final Key key) { - UpdatableValueContainer valueContainer = myMap.get(key); + ChangeTrackingValueContainer valueContainer = myMap.get(key); if (valueContainer == null) { valueContainer = new ChangeTrackingValueContainer(new ChangeTrackingValueContainer.Initializer() { @Override diff --git a/platform/lang-impl/src/com/intellij/util/indexing/UpdatableValueContainer.java b/platform/lang-impl/src/com/intellij/util/indexing/UpdatableValueContainer.java index 2aa5b3658934..ea2da7b3d218 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/UpdatableValueContainer.java +++ b/platform/lang-impl/src/com/intellij/util/indexing/UpdatableValueContainer.java @@ -26,5 +26,5 @@ public abstract class UpdatableValueContainer extends ValueContainer{ public abstract boolean removeValue(int inputId, T value); - public abstract void removeAllValues(int inputId); + public abstract void removeAssociatedValue(int inputId); } diff --git a/platform/lang-impl/src/com/intellij/util/indexing/ValueContainer.java b/platform/lang-impl/src/com/intellij/util/indexing/ValueContainer.java index fc5e202824c9..bdfdc4b4e0bb 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/ValueContainer.java +++ b/platform/lang-impl/src/com/intellij/util/indexing/ValueContainer.java @@ -38,8 +38,6 @@ public abstract class ValueContainer { public abstract Iterator getValueIterator(); - public abstract int[] getInputIds(Value value); - public abstract List toValueList(); public abstract int size(); diff --git a/platform/lang-impl/src/com/intellij/util/indexing/ValueContainerImpl.java b/platform/lang-impl/src/com/intellij/util/indexing/ValueContainerImpl.java index 92df9262bd50..5cacf273efe6 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/ValueContainerImpl.java +++ b/platform/lang-impl/src/com/intellij/util/indexing/ValueContainerImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2011 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. @@ -16,7 +16,6 @@ package com.intellij.util.indexing; -import com.intellij.util.ArrayUtil; import gnu.trove.TIntHashSet; import gnu.trove.TIntIterator; @@ -32,7 +31,7 @@ class ValueContainerImpl extends UpdatableValueContainer implement public ValueContainerImpl() { myInputIdMapping = new HashMap(16, 0.98f); } - + @Override public void addValue(int inputId, Value value) { final Object input = myInputIdMapping.get(value); @@ -60,16 +59,18 @@ class ValueContainerImpl extends UpdatableValueContainer implement } @Override - public void removeAllValues(int inputId) { - final List toRemove= new ArrayList(); + public void removeAssociatedValue(int inputId) { + Value toRemove = null; for (final Iterator valueIterator = getValueIterator(); valueIterator.hasNext();) { final Value value = valueIterator.next(); if (isAssociated(value, inputId)) { - toRemove.add(value); + assert toRemove == null; + toRemove = value; } } - for (Value value : toRemove) { - removeValue(inputId, value); + + if (toRemove != null) { + removeValue(inputId, toRemove); } } @@ -111,22 +112,6 @@ class ValueContainerImpl extends UpdatableValueContainer implement return new ArrayList(myInputIdMapping.keySet()); } - @Override - public int[] getInputIds(final Value value) { - final Object input = myInputIdMapping.get(value); - final int[] idSet; - if (input instanceof TIntHashSet) { - idSet = ((TIntHashSet)input).toArray(); - } - else if (input instanceof Integer ){ - idSet = new int[] {((Integer)input).intValue()}; - } - else { - idSet = ArrayUtil.EMPTY_INT_ARRAY; - } - return idSet; - } - @Override public boolean isAssociated(final Value value, final int inputId) { final Object input = myInputIdMapping.get(value); @@ -237,7 +222,7 @@ class ValueContainerImpl extends UpdatableValueContainer implement return mySize; } } - + private HashMap mapCopy(final HashMap map) { if (map == null) { return null; diff --git a/platform/lang-impl/src/com/intellij/util/indexing/ValueContainerMap.java b/platform/lang-impl/src/com/intellij/util/indexing/ValueContainerMap.java index 7ef2e06c1257..810a22d85227 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/ValueContainerMap.java +++ b/platform/lang-impl/src/com/intellij/util/indexing/ValueContainerMap.java @@ -116,7 +116,7 @@ class ValueContainerMap extends PersistentHashMap 0) { final int valueCount = DataInputOutputUtil.readSINT(in); if (valueCount < 0) { - valueContainer.removeAllValues(-valueCount); + valueContainer.removeAssociatedValue(-valueCount); valueContainer.setNeedsCompacting(true); } else { diff --git a/platform/platform-impl/src/com/intellij/execution/KillableProcess.java b/platform/platform-impl/src/com/intellij/execution/KillableProcess.java index 041e61fb955e..7710bf277cb1 100644 --- a/platform/platform-impl/src/com/intellij/execution/KillableProcess.java +++ b/platform/platform-impl/src/com/intellij/execution/KillableProcess.java @@ -19,7 +19,7 @@ package com.intellij.execution; * @author nik */ public interface KillableProcess { - boolean canKillProcess(); + boolean canKillSoftly(); void killProcess(); } diff --git a/platform/platform-impl/src/com/intellij/execution/process/KillableColoredProcessHandler.java b/platform/platform-impl/src/com/intellij/execution/process/KillableColoredProcessHandler.java index 1bebb4a56c9d..bcd005c6d6cd 100644 --- a/platform/platform-impl/src/com/intellij/execution/process/KillableColoredProcessHandler.java +++ b/platform/platform-impl/src/com/intellij/execution/process/KillableColoredProcessHandler.java @@ -39,14 +39,14 @@ public class KillableColoredProcessHandler extends ColoredProcessHandler impleme } @Override - public boolean canKillProcess() { + public boolean canKillSoftly() { // soft-kill works on Unix systems return SystemInfo.isUnix; } @Override protected void doDestroyProcess() { - if (!canKillProcess()) { + if (!canKillSoftly()) { // if soft kill isn't supported - use default implementation super.doDestroyProcess(); return; diff --git a/platform/platform-impl/src/com/intellij/ui/AppUIUtil.java b/platform/platform-impl/src/com/intellij/ui/AppUIUtil.java index 0bcd2d1b00ed..a3ff393263f1 100644 --- a/platform/platform-impl/src/com/intellij/ui/AppUIUtil.java +++ b/platform/platform-impl/src/com/intellij/ui/AppUIUtil.java @@ -28,6 +28,9 @@ import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.awt.*; +import java.awt.image.BufferedImage; +import java.awt.image.ImageObserver; +import java.awt.image.ImageProducer; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; @@ -38,7 +41,9 @@ import java.util.List; public class AppUIUtil { private static final String VENDOR_PREFIX = "jetbrains-"; - private AppUIUtil() { } + private static boolean isDebugMode() { + return "true".equals(System.getProperty("idea.debug.mode")); + } public static void updateFrameIcon(final Frame frame) { frame.setIconImages(getAppIconImages()); @@ -86,7 +91,10 @@ public class AppUIUtil { public static String getFrameClass() { final String name = ApplicationNamesInfo.getInstance().getProductName().toLowerCase(); - final String wmClass = VENDOR_PREFIX + StringUtil.replaceChar(name, ' ', '-'); + String wmClass = VENDOR_PREFIX + StringUtil.replaceChar(name, ' ', '-'); + if (isDebugMode()) { + wmClass += "-debug"; + } return PlatformUtils.isCommunity() ? wmClass + "-ce" : wmClass; } } diff --git a/platform/util/src/com/intellij/openapi/util/text/StringUtil.java b/platform/util/src/com/intellij/openapi/util/text/StringUtil.java index 09abebf8f37d..d5cb1834086f 100644 --- a/platform/util/src/com/intellij/openapi/util/text/StringUtil.java +++ b/platform/util/src/com/intellij/openapi/util/text/StringUtil.java @@ -54,6 +54,11 @@ public class StringUtil { } }; + @NotNull + public static String escapePattern(final @NotNull String text) { + return text.replace("'", "''").replace("{", "'{'"); + } + public static Function createToStringFunction(Class cls) { return new Function() { @Override diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerBase.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerBase.java index f0b4a2f5188e..d1f78ab66b85 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerBase.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerBase.java @@ -234,8 +234,7 @@ public abstract class GroovyCompilerBase implements TranslatingCompiler { StringBuffer unparsedBuffer = processHandler.getStdErr(); if (unparsedBuffer.length() != 0) { - compileContext.addMessage(CompilerMessageCategory.ERROR, unparsedBuffer.toString(), null, -1, -1); - hasMessages = true; + compileContext.addMessage(CompilerMessageCategory.INFORMATION, unparsedBuffer.toString(), null, -1, -1); } final int exitCode = processHandler.getProcess().exitValue(); diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcFramework.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcFramework.java index b301b038054f..d18ad53521ba 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcFramework.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcFramework.java @@ -630,11 +630,10 @@ public abstract class MvcFramework { final Project project = module.getProject(); - final ModificationTracker tracker = MvcModuleStructureSynchronizer.getInstance(project).getFileAndRootsModificationTracker(); - return CachedValuesManager.getManager(project).getCachedValue(module, new CachedValueProvider() { @Override public Result compute() { + final ModificationTracker tracker = MvcModuleStructureSynchronizer.getInstance(project).getFileAndRootsModificationTracker(); for (final MvcFramework framework : EP_NAME.getExtensions()) { if (framework.hasSupport(module)) { return Result.create(framework, tracker); diff --git a/plugins/properties/src/com/intellij/lang/properties/structureView/PropertiesSeparatorManager.java b/plugins/properties/src/com/intellij/lang/properties/structureView/PropertiesSeparatorManager.java index aac219d6e273..d5f9f51f34ca 100644 --- a/plugins/properties/src/com/intellij/lang/properties/structureView/PropertiesSeparatorManager.java +++ b/plugins/properties/src/com/intellij/lang/properties/structureView/PropertiesSeparatorManager.java @@ -23,7 +23,6 @@ import com.intellij.lang.properties.IProperty; import com.intellij.lang.properties.PropertiesLanguage; import com.intellij.lang.properties.ResourceBundle; import com.intellij.lang.properties.ResourceBundleImpl; -import com.intellij.lang.properties.charset.Native2AsciiCharset; import com.intellij.lang.properties.editor.ResourceBundleAsVirtualFile; import com.intellij.lang.properties.psi.PropertiesFile; import com.intellij.openapi.components.PersistentStateComponent; @@ -42,8 +41,8 @@ import gnu.trove.TIntLongHashMap; import gnu.trove.TIntProcedure; import org.jdom.Element; import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.Nullable; -import java.io.UnsupportedEncodingException; import java.util.Collection; import java.util.List; import java.util.Map; @@ -132,12 +131,9 @@ public class PropertiesSeparatorManager implements PersistentStateComponent