diff --git a/platform/lang-impl/src/com/intellij/application/options/codeStyle/CodeStyleBlankLinesPanel.java b/platform/lang-impl/src/com/intellij/application/options/codeStyle/CodeStyleBlankLinesPanel.java index 2fe4ea1dafa6..a7c0f9e930d4 100644 --- a/platform/lang-impl/src/com/intellij/application/options/codeStyle/CodeStyleBlankLinesPanel.java +++ b/platform/lang-impl/src/com/intellij/application/options/codeStyle/CodeStyleBlankLinesPanel.java @@ -90,7 +90,8 @@ public class CodeStyleBlankLinesPanel extends MultilanguageCodeStyleAbstractPane createOption(optionGroup, ApplicationBundle.message("editbox.blanklines.after.imports"), "BLANK_LINES_AFTER_IMPORTS"); createOption(optionGroup, ApplicationBundle.message("editbox.blanklines.around.class"), "BLANK_LINES_AROUND_CLASS"); createOption(optionGroup, ApplicationBundle.message("editbox.blanklines.after.class.header"), "BLANK_LINES_AFTER_CLASS_HEADER"); - createOption(optionGroup, ApplicationBundle.message("editbox.blanklines.after.anonymous.class.header"), "BLANK_LINES_AFTER_ANONYMOUS_CLASS_HEADER"); + createOption(optionGroup, ApplicationBundle.message("editbox.blanklines.after.anonymous.class.header"), + "BLANK_LINES_AFTER_ANONYMOUS_CLASS_HEADER"); createOption(optionGroup, "Around field in interface:", "BLANK_LINES_AROUND_FIELD_IN_INTERFACE"); createOption(optionGroup, ApplicationBundle.message("editbox.blanklines.around.field"), "BLANK_LINES_AROUND_FIELD"); createOption(optionGroup, "Around method in interface:", "BLANK_LINES_AROUND_METHOD_IN_INTERFACE"); @@ -127,7 +128,7 @@ public class CodeStyleBlankLinesPanel extends MultilanguageCodeStyleAbstractPane private void doCreateOption(OptionGroup optionGroup, String title, IntOption option, String fieldName) { String renamed = myRenamedFields.get(fieldName); if (renamed != null) title = renamed; - + JLabel l = new JLabel(title); optionGroup.add(l, option.myTextField); myOptions.add(option); @@ -152,7 +153,6 @@ public class CodeStyleBlankLinesPanel extends MultilanguageCodeStyleAbstractPane } } return false; - } public JComponent getPanel() { @@ -202,6 +202,9 @@ public class CodeStyleBlankLinesPanel extends MultilanguageCodeStyleAbstractPane @Override public void renameStandardOption(String fieldName, String newTitle) { + if (myIsFirstUpdate) { + myRenamedFields.put(fieldName, newTitle); + } for (IntOption option : myOptions) { option.myTextField.invalidate(); } @@ -221,6 +224,7 @@ public class CodeStyleBlankLinesPanel extends MultilanguageCodeStyleAbstractPane private IntOption(String fieldName) { this(CodeStyleSettings.class, fieldName, false); } + private IntOption(Class targetClass, String fieldName) { this(targetClass, fieldName, false); myTargetClass = targetClass; @@ -289,5 +293,4 @@ public class CodeStyleBlankLinesPanel extends MultilanguageCodeStyleAbstractPane } } } - } \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/execution/TerminateRemoteProcessDialog.java b/platform/lang-impl/src/com/intellij/execution/TerminateRemoteProcessDialog.java index 9b267d6a116e..98f79a623b7f 100644 --- a/platform/lang-impl/src/com/intellij/execution/TerminateRemoteProcessDialog.java +++ b/platform/lang-impl/src/com/intellij/execution/TerminateRemoteProcessDialog.java @@ -33,13 +33,19 @@ public class TerminateRemoteProcessDialog extends DialogWrapper { private JCheckBox myTerminateCheckBox; private final String mySessionName; private final boolean myDetachIsDefault; + private final boolean myAlwaysUseDefault; - public TerminateRemoteProcessDialog(final Project project, final String configurationName, final boolean detachIsDefault) { + public TerminateRemoteProcessDialog(final Project project, + final String configurationName, + final boolean detachIsDefault, + boolean alwaysUseDefault) { super(project, true); mySessionName = configurationName; myDetachIsDefault = detachIsDefault; + myAlwaysUseDefault = alwaysUseDefault; setTitle(ExecutionBundle.message("process.is.running.dialog.title", mySessionName)); - setOKButtonText(ExecutionBundle.message("button.disconnect")); + setOKButtonText(alwaysUseDefault && !detachIsDefault ? ExecutionBundle.message("button.terminate") + : ExecutionBundle.message("button.disconnect")); setButtonsAlignment(SwingUtilities.CENTER); this.init(); } @@ -49,8 +55,9 @@ public class TerminateRemoteProcessDialog extends DialogWrapper { } protected JComponent createNorthPanel() { - final String message; - message = ExecutionBundle.message("disconnect.process.confirmation.text", mySessionName); + final String message = myAlwaysUseDefault && !myDetachIsDefault ? + ExecutionBundle.message("terminate.process.confirmation.text", mySessionName) : + ExecutionBundle.message("disconnect.process.confirmation.text", mySessionName); final JLabel label = new JLabel(message); final JPanel panel = new JPanel(new BorderLayout()); panel.add(label, BorderLayout.CENTER); @@ -64,25 +71,27 @@ public class TerminateRemoteProcessDialog extends DialogWrapper { protected JComponent createCenterPanel() { final JPanel panel = new JPanel(new BorderLayout()); - myTerminateCheckBox = new JCheckBox(ExecutionBundle.message("terminate.after.disconnect.checkbox")); - myTerminateCheckBox.setSelected(!myDetachIsDefault); - final Icon icon = UIUtil.getOptionPanelWarningIcon(); - if (icon != null) { - final Border border = myTerminateCheckBox.getBorder(); - if (border != null) { - final Insets insets = border.getBorderInsets(myTerminateCheckBox); - final Border emptyBorder = BorderFactory.createEmptyBorder(0, icon.getIconWidth()+ICON_TEXT_GAP-insets.left, 0, 0); - myTerminateCheckBox.setBorder(BorderFactory.createCompoundBorder(emptyBorder, border)); - } - else { - myTerminateCheckBox.setBorder(BorderFactory.createEmptyBorder(0, icon.getIconWidth()+ICON_TEXT_GAP, 0, 0)); + if (!myAlwaysUseDefault) { + myTerminateCheckBox = new JCheckBox(ExecutionBundle.message("terminate.after.disconnect.checkbox")); + myTerminateCheckBox.setSelected(!myDetachIsDefault); + final Icon icon = UIUtil.getOptionPanelWarningIcon(); + if (icon != null) { + final Border border = myTerminateCheckBox.getBorder(); + if (border != null) { + final Insets insets = border.getBorderInsets(myTerminateCheckBox); + final Border emptyBorder = BorderFactory.createEmptyBorder(0, icon.getIconWidth()+ICON_TEXT_GAP-insets.left, 0, 0); + myTerminateCheckBox.setBorder(BorderFactory.createCompoundBorder(emptyBorder, border)); + } + else { + myTerminateCheckBox.setBorder(BorderFactory.createEmptyBorder(0, icon.getIconWidth()+ICON_TEXT_GAP, 0, 0)); + } } + panel.add(myTerminateCheckBox, BorderLayout.WEST); } - panel.add(myTerminateCheckBox, BorderLayout.WEST); return panel; } public boolean forceTermination() { - return myTerminateCheckBox.isSelected(); + return myAlwaysUseDefault ? !myDetachIsDefault : myTerminateCheckBox.isSelected(); } } diff --git a/platform/lang-impl/src/com/intellij/execution/ui/RunContentManagerImpl.java b/platform/lang-impl/src/com/intellij/execution/ui/RunContentManagerImpl.java index 1cf2f1aeea0f..f17846a7ea43 100644 --- a/platform/lang-impl/src/com/intellij/execution/ui/RunContentManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/ui/RunContentManagerImpl.java @@ -59,6 +59,7 @@ import java.util.*; public class RunContentManagerImpl implements RunContentManager, Disposable { public static final Topic RUN_CONTENT_TOPIC = Topic.create("Run Content", RunContentWithExecutorListener.class); + public static final Key ALWAYS_USE_DEFAULT_STOPPING_BEHAVIOUR_KEY = Key.create("ALWAYS_USE_DEFAULT_STOPPING_BEHAVIOUR_KEY"); private static final Logger LOG = Logger.getInstance("#com.intellij.execution.ui.RunContentManagerImpl"); private static final Key DESCRIPTOR_KEY = new Key("Descriptor"); @@ -574,8 +575,11 @@ public class RunContentManagerImpl implements RunContentManager, Disposable { destroyProcess = true; } else { + //todo[nik] this is a temporary solution for the following problem: some configurations should not allow user to choose between 'terminating' and 'detaching' + final boolean useDefault = Boolean.TRUE.equals(processHandler.getUserData(ALWAYS_USE_DEFAULT_STOPPING_BEHAVIOUR_KEY)); final TerminateRemoteProcessDialog terminateDialog = new TerminateRemoteProcessDialog(myProject, descriptor.getDisplayName(), - processHandler.detachIsDefault()); + processHandler.detachIsDefault(), + useDefault); terminateDialog.show(); if (terminateDialog.getExitCode() != DialogWrapper.OK_EXIT_CODE) return false; destroyProcess = terminateDialog.forceTermination(); diff --git a/platform/lang-impl/src/com/intellij/extapi/psi/StubBasedPsiElementBase.java b/platform/lang-impl/src/com/intellij/extapi/psi/StubBasedPsiElementBase.java index f9e817fd24f4..6fe0c326741a 100644 --- a/platform/lang-impl/src/com/intellij/extapi/psi/StubBasedPsiElementBase.java +++ b/platform/lang-impl/src/com/intellij/extapi/psi/StubBasedPsiElementBase.java @@ -24,6 +24,7 @@ import com.intellij.lang.Language; import com.intellij.openapi.progress.NonCancelableSection; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiInvalidElementAccessException; @@ -75,14 +76,14 @@ public class StubBasedPsiElementBase extends ASTDelegateP node = myNode; if (node == null) { String message = new StringBuilder(). - append("failed to bind stub to AST for element "). + append("Failed to bind stub to AST for element "). append(getClass()). append(" in "). append(file.getVirtualFile() == null ? "" : file.getVirtualFile().getPath()). append("\nFile stub tree:\n"). - append(stubTree != null ? ((PsiFileStubImpl)stubTree.getRoot()).printTree() : " is null"). + append(stubTree != null ? StringUtil.trimLog(((PsiFileStubImpl)stubTree.getRoot()).printTree(), 1024) : " is null"). append("\nLoaded file AST:\n"). - append(DebugUtil.treeToString(fileElement, true)). + append(StringUtil.trimLog(DebugUtil.treeToString(fileElement, true), 1024)). toString(); throw new IllegalArgumentException(message); } diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/PositionPanel.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/PositionPanel.java index 43e0e4c66e43..711104266a40 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/PositionPanel.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/PositionPanel.java @@ -162,8 +162,7 @@ public class PositionPanel extends EditorBasedWidget implements StatusBarWidget. appendLogicalPosition(caret, message); if (selectionModel.hasSelection()) { int len = Math.abs(selectionModel.getSelectionStart() - selectionModel.getSelectionEnd()); - message.append("/"); - message.append(len); + if (len != 0) message.append("/").append(len); } } diff --git a/platform/platform-resources-en/src/messages/ExecutionBundle.properties b/platform/platform-resources-en/src/messages/ExecutionBundle.properties index 7537fbd31bd7..66abc2caa26d 100644 --- a/platform/platform-resources-en/src/messages/ExecutionBundle.properties +++ b/platform/platform-resources-en/src/messages/ExecutionBundle.properties @@ -69,7 +69,9 @@ default.run.configuration.name= process.is.running.dialog.title=Process ''{0}'' is running button.disconnect=Disconnect -disconnect.process.confirmation.text=Disconnect from the process ''{0}''? +button.terminate=Terminate +disconnect.process.confirmation.text=Do you want to disconnect from the process ''{0}''? +terminate.process.confirmation.text=Do you want to terminate the process ''{0}''? terminate.after.disconnect.checkbox=Terminate the process after disconnect copy.configuration.action.name=Copy Configuration junit.configuration.display.name=JUnit diff --git a/platform/platform-resources/src/idea/Keymap_Mac.xml b/platform/platform-resources/src/idea/Keymap_Mac.xml index 9a18e6b4ae4f..e1d671d70a26 100644 --- a/platform/platform-resources/src/idea/Keymap_Mac.xml +++ b/platform/platform-resources/src/idea/Keymap_Mac.xml @@ -412,11 +412,14 @@ + + + + - diff --git a/platform/platform-resources/src/idea/Keymap_MacClassic.xml b/platform/platform-resources/src/idea/Keymap_MacClassic.xml index 7b520c716702..23e39811608d 100644 --- a/platform/platform-resources/src/idea/Keymap_MacClassic.xml +++ b/platform/platform-resources/src/idea/Keymap_MacClassic.xml @@ -308,8 +308,11 @@ + + + + - diff --git a/platform/testFramework/src/com/intellij/testFramework/EditorListenerTracker.java b/platform/testFramework/src/com/intellij/testFramework/EditorListenerTracker.java index 2abf32576ef0..19d091f6f923 100644 --- a/platform/testFramework/src/com/intellij/testFramework/EditorListenerTracker.java +++ b/platform/testFramework/src/com/intellij/testFramework/EditorListenerTracker.java @@ -19,6 +19,7 @@ import com.intellij.openapi.editor.EditorFactory; import com.intellij.openapi.editor.impl.event.EditorEventMulticasterImpl; import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.project.impl.ProjectManagerImpl; +import com.intellij.openapi.vfs.encoding.EncodingManager; import com.intellij.util.containers.hash.LinkedHashMap; import junit.framework.Assert; @@ -33,6 +34,7 @@ public class EditorListenerTracker { private final boolean myDefaultProjectInitialized; public EditorListenerTracker() { + EncodingManager.getInstance(); //adds listeners EditorEventMulticasterImpl multicaster = (EditorEventMulticasterImpl)EditorFactory.getInstance().getEventMulticaster(); before = multicaster.getListeners(); myDefaultProjectInitialized = ((ProjectManagerImpl)ProjectManager.getInstance()).isDefaultProjectInitialized(); diff --git a/platform/util/src/com/intellij/openapi/diagnostic/Log.java b/platform/util/src/com/intellij/openapi/diagnostic/Log.java index 512d143f31e2..dfc00ae9b4c6 100644 --- a/platform/util/src/com/intellij/openapi/diagnostic/Log.java +++ b/platform/util/src/com/intellij/openapi/diagnostic/Log.java @@ -20,14 +20,14 @@ import java.util.ArrayList; import java.util.List; /** - * This is a very primitive fast logging class, primary for race-conditions debugging + * This is a very primitive fast logging class, primary for race-conditions debugging. */ - public class Log { + private static final List myStrings = new ArrayList(); + private static final List myThrowables = new ArrayList(); + private static final Object LOCK = new Object(); - private static List myStrings = new ArrayList(); - private static List myThrowables = new ArrayList(); - private static Object LOCK = new Object(); + private Log() { } public static void print(String text) { print(text, false); @@ -40,6 +40,7 @@ public class Log { } } + @SuppressWarnings({"ThrowableResultOfMethodCallIgnored", "UseOfSystemOutOrSystemErr"}) public static void flush() { synchronized (LOCK) { for (int i = 0; i < myStrings.size(); i++) { 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 cbfd9df725e6..18ff2167f15d 100644 --- a/platform/util/src/com/intellij/openapi/util/text/StringUtil.java +++ b/platform/util/src/com/intellij/openapi/util/text/StringUtil.java @@ -800,6 +800,13 @@ public class StringUtil { return s; } + public static String trimLog(final String text, final int limit) { + if (limit > 5 && text.length() > limit) { + return text.substring(0, limit - 5) + " ...\n"; + } + return text; + } + public static boolean startsWithChar(@Nullable CharSequence s, char prefix) { return s != null && s.length() != 0 && s.charAt(0) == prefix; } diff --git a/plugins/spellchecker/src/com/intellij/spellchecker/jetbrains.dic b/plugins/spellchecker/src/com/intellij/spellchecker/jetbrains.dic index b8caf2eba375..399aeff38b1b 100644 --- a/plugins/spellchecker/src/com/intellij/spellchecker/jetbrains.dic +++ b/plugins/spellchecker/src/com/intellij/spellchecker/jetbrains.dic @@ -22,6 +22,8 @@ binlog bool btree calc +cancelable +cancellable capath captcha ccflags