diff --git a/.idea/libraries/XStream.xml b/.idea/libraries/XStream.xml
index 1ae2bba6df3e..6b84f434a446 100644
--- a/.idea/libraries/XStream.xml
+++ b/.idea/libraries/XStream.xml
@@ -1,9 +1,11 @@
-
+
-
+
+
+
\ No newline at end of file
diff --git a/build/scripts/layouts.gant b/build/scripts/layouts.gant
index ba54f552fc99..818aa55c8ac4 100644
--- a/build/scripts/layouts.gant
+++ b/build/scripts/layouts.gant
@@ -625,7 +625,7 @@ def layout_core_upsource(String home, String target) {
include(name: "cli-parser-1.1.jar")
include(name: "jna.jar")
include(name: "log4j.jar")
- include(name: "xstream.jar")
+ include(name: "xstream-1.4.3.jar")
include(name: "xpp3-1.1.4-min.jar")
include(name: "jdom.jar")
}
diff --git a/build/scripts/libLicenses.gant b/build/scripts/libLicenses.gant
index 28c3a310a364..9c17b415877f 100644
--- a/build/scripts/libLicenses.gant
+++ b/build/scripts/libLicenses.gant
@@ -231,7 +231,7 @@ libraryLicense(name: "Xerces", version: "2.9.1", license: "Apache 2.0", url: "ht
libraryLicense(name: "XML Commons (xml-apis.jar, resolver.jar)", version: "", license: "Apache 2.0, W3C Software License , public domain", url: "http://xml.apache.org/commons/", licenseUrl: "http://xml.apache.org/commons/licenses.html")
libraryLicense(name: "XMLBeans", libraryName: "XmlBeans", version: "2.3.0", license: "Apache 2.0", url: "http://xmlbeans.apache.org/", licenseUrl: "http://svn.jetbrains.org/idea/Trunk/bundled/WebServices/resources/lib/xmlbeans-2.3.0/xmlbeans.LICENSE")
libraryLicense(name: "XML-RPC", libraryName: "XmlRPC", version: "2.0", license: "Apache 2.0", url: "http://ws.apache.org/xmlrpc/xmlrpc2/", licenseUrl: "http://ws.apache.org/xmlrpc/xmlrpc2/license.html")
-libraryLicense(name: "XStream", version: "1.2.1", license: "BSD", url: "http://xstream.codehaus.org/", licenseUrl: "http://xstream.codehaus.org/license.html")
+libraryLicense(name: "XStream", version: "1.4.3", license: "BSD", url: "http://xstream.codehaus.org/", licenseUrl: "http://xstream.codehaus.org/license.html")
libraryLicense(name: "YourKit Java Profiler", libraryName: "yjp-controller-api-redist.jar", version: "8.0.x", license: "link (commercial license)", url: "http://yourkit.com/", licenseUrl: "http://www.yourkit.com/purchase/license.html")
libraryLicense(name: "protobuf", version: "2.3.0", license: "New BSD", url: "http://code.google.com/p/protobuf/", licenseUrl: "http://code.google.com/p/protobuf/source/browse/trunk/COPYING.txt?r=367")
libraryLicense(name: "Netty", libraryName: "Netty", version: "3.5.8", license: "Apache 2.0", url: "http://netty.io", licenseUrl: "http://www.apache.org/licenses/LICENSE-2.0")
diff --git a/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/api/CompilerAPIConfiguration.java b/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/api/CompilerAPIConfiguration.java
index 4f7181776757..0784a676700e 100755
--- a/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/api/CompilerAPIConfiguration.java
+++ b/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/api/CompilerAPIConfiguration.java
@@ -20,6 +20,7 @@ import com.intellij.openapi.components.State;
import com.intellij.openapi.components.Storage;
import com.intellij.openapi.components.StoragePathMacros;
import com.intellij.openapi.components.StorageScheme;
+import com.intellij.openapi.project.Project;
@State(
name = "CompilerAPISettings",
@@ -29,4 +30,7 @@ import com.intellij.openapi.components.StorageScheme;
}
)
public class CompilerAPIConfiguration extends JavacConfiguration {
+ public CompilerAPIConfiguration(Project project) {
+ super(project);
+ }
}
\ No newline at end of file
diff --git a/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/javac/JavacConfiguration.java b/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/javac/JavacConfiguration.java
index e36054c56392..8777add6bb67 100755
--- a/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/javac/JavacConfiguration.java
+++ b/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/javac/JavacConfiguration.java
@@ -30,10 +30,18 @@ import org.jetbrains.jps.model.java.compiler.JpsJavaCompilerOptions;
)
public class JavacConfiguration implements PersistentStateComponent {
private final JpsJavaCompilerOptions mySettings = new JpsJavaCompilerOptions();
+ private final Project myProject;
+
+ public JavacConfiguration(Project project) {
+ myProject = project;
+ }
@NotNull
public JpsJavaCompilerOptions getState() {
- return mySettings;
+ JpsJavaCompilerOptions state = new JpsJavaCompilerOptions();
+ XmlSerializerUtil.copyBean(mySettings, state);
+ state.ADDITIONAL_OPTIONS_STRING = PathMacroManager.getInstance(myProject).collapsePathsRecursively(state.ADDITIONAL_OPTIONS_STRING);
+ return state;
}
public void loadState(JpsJavaCompilerOptions state) {
@@ -41,6 +49,6 @@ public class JavacConfiguration implements PersistentStateComponent aClass) {
- return ServiceManager.getService(project, aClass).getState();
+ return ServiceManager.getService(project, aClass).mySettings;
}
}
\ No newline at end of file
diff --git a/java/java-impl/src/com/intellij/usageView/UsageContextCallHierarchyPanel.java b/java/java-impl/src/com/intellij/usageView/UsageContextCallHierarchyPanel.java
index 1f4e04752b34..877530d44de8 100644
--- a/java/java-impl/src/com/intellij/usageView/UsageContextCallHierarchyPanel.java
+++ b/java/java-impl/src/com/intellij/usageView/UsageContextCallHierarchyPanel.java
@@ -25,11 +25,10 @@ import com.intellij.openapi.progress.util.ProgressIndicatorBase;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Disposer;
import com.intellij.psi.PsiElement;
-import com.intellij.psi.PsiReference;
import com.intellij.usages.PsiElementUsageTarget;
+import com.intellij.usages.UsageContextPanel;
import com.intellij.usages.UsageTarget;
import com.intellij.usages.UsageView;
-import com.intellij.usages.UsageContextPanel;
import com.intellij.usages.impl.UsageContextPanelBase;
import com.intellij.usages.impl.UsageViewImpl;
import org.jetbrains.annotations.NotNull;
@@ -91,7 +90,7 @@ public class UsageContextCallHierarchyPanel extends UsageContextPanelBase {
myBrowser = null;
}
if (element != null) {
- myBrowser = createPanel(element);
+ myBrowser = createCallHierarchyPanel(element);
if (myBrowser == null) {
element = null;
}
@@ -113,19 +112,6 @@ public class UsageContextCallHierarchyPanel extends UsageContextPanelBase {
}
}
- @Nullable
- private static HierarchyBrowser createPanel(@NotNull PsiElement element) {
- PsiElement resolve;
-
- HierarchyBrowser result = null;
- if (element instanceof PsiReference && (resolve = ((PsiReference)element).resolve()) != null) {
- result = createCallHierarchyPanel(resolve);
- }
- if (result == null) result = createCallHierarchyPanel(element);
-
- return result;
- }
-
@Nullable
private static HierarchyBrowser createCallHierarchyPanel(@NotNull PsiElement element) {
HierarchyProvider provider = LanguageCallHierarchy.INSTANCE.forLanguage(element.getLanguage());
diff --git a/java/openapi/src/com/intellij/util/xml/converters/AbstractMemberResolveConverter.java b/java/openapi/src/com/intellij/util/xml/converters/AbstractMemberResolveConverter.java
index ff8037f7f705..230fa140d0a3 100644
--- a/java/openapi/src/com/intellij/util/xml/converters/AbstractMemberResolveConverter.java
+++ b/java/openapi/src/com/intellij/util/xml/converters/AbstractMemberResolveConverter.java
@@ -119,7 +119,7 @@ public abstract class AbstractMemberResolveConverter extends ResolvingConverter<
public LocalQuickFix[] getQuickFixes(final ConvertContext context) {
final String targetName = ((GenericValue)context.getInvocationElement()).getStringValue();
- if (targetName == null) return super.getQuickFixes(context);
+ if (!JavaPsiFacade.getInstance(context.getProject()).getNameHelper().isIdentifier(targetName)) return super.getQuickFixes(context);
final PsiClass targetClass = getTargetClass(context);
if (targetClass == null) return super.getQuickFixes(context);
final PropertyMemberType memberType = getMemberTypes(context)[0];
diff --git a/jps/model-api/src/org/jetbrains/jps/model/JpsProject.java b/jps/model-api/src/org/jetbrains/jps/model/JpsProject.java
index 16ea595874c9..cd1e6a3e815b 100644
--- a/jps/model-api/src/org/jetbrains/jps/model/JpsProject.java
+++ b/jps/model-api/src/org/jetbrains/jps/model/JpsProject.java
@@ -52,4 +52,7 @@ public interface JpsProject extends JpsCompositeElement, JpsReferenceableElement
@NotNull String getName();
void setName(@NotNull String name);
+
+ @NotNull
+ JpsModel getModel();
}
diff --git a/jps/model-impl/src/org/jetbrains/jps/model/impl/JpsGlobalImpl.java b/jps/model-impl/src/org/jetbrains/jps/model/impl/JpsGlobalImpl.java
index 55a5a1335856..349b8fb718b8 100644
--- a/jps/model-impl/src/org/jetbrains/jps/model/impl/JpsGlobalImpl.java
+++ b/jps/model-impl/src/org/jetbrains/jps/model/impl/JpsGlobalImpl.java
@@ -15,7 +15,7 @@ import org.jetbrains.jps.model.library.sdk.JpsSdkType;
public class JpsGlobalImpl extends JpsRootElementBase implements JpsGlobal {
private final JpsLibraryCollectionImpl myLibraryCollection;
- public JpsGlobalImpl(JpsModel model, JpsEventDispatcher eventDispatcher) {
+ public JpsGlobalImpl(@NotNull JpsModel model, JpsEventDispatcher eventDispatcher) {
super(model, eventDispatcher);
myLibraryCollection = new JpsLibraryCollectionImpl(myContainer.setChild(JpsLibraryRole.LIBRARIES_COLLECTION_ROLE));
myContainer.setChild(JpsFileTypesConfigurationImpl.ROLE, new JpsFileTypesConfigurationImpl());
diff --git a/jps/model-impl/src/org/jetbrains/jps/model/impl/JpsProjectImpl.java b/jps/model-impl/src/org/jetbrains/jps/model/impl/JpsProjectImpl.java
index b405c1bbf56f..c10959b83bf2 100644
--- a/jps/model-impl/src/org/jetbrains/jps/model/impl/JpsProjectImpl.java
+++ b/jps/model-impl/src/org/jetbrains/jps/model/impl/JpsProjectImpl.java
@@ -34,7 +34,7 @@ public class JpsProjectImpl extends JpsRootElementBase implement
private final JpsLibraryCollection myLibraryCollection;
private String myName = "";
- public JpsProjectImpl(JpsModel model, JpsEventDispatcher eventDispatcher) {
+ public JpsProjectImpl(@NotNull JpsModel model, JpsEventDispatcher eventDispatcher) {
super(model, eventDispatcher);
myContainer.setChild(JpsModuleRole.MODULE_COLLECTION_ROLE);
myContainer.setChild(EXTERNAL_REFERENCES_COLLECTION_ROLE);
diff --git a/jps/model-impl/src/org/jetbrains/jps/model/impl/JpsRootElementBase.java b/jps/model-impl/src/org/jetbrains/jps/model/impl/JpsRootElementBase.java
index 6ffafc14e136..cf8e65823336 100644
--- a/jps/model-impl/src/org/jetbrains/jps/model/impl/JpsRootElementBase.java
+++ b/jps/model-impl/src/org/jetbrains/jps/model/impl/JpsRootElementBase.java
@@ -12,7 +12,7 @@ public abstract class JpsRootElementBase> extend
private final JpsModel myModel;
private final JpsEventDispatcher myEventDispatcher;
- protected JpsRootElementBase(JpsModel model, JpsEventDispatcher eventDispatcher) {
+ protected JpsRootElementBase(@NotNull JpsModel model, JpsEventDispatcher eventDispatcher) {
super();
myModel = model;
myEventDispatcher = eventDispatcher;
@@ -29,8 +29,9 @@ public abstract class JpsRootElementBase> extend
return myEventDispatcher;
}
+ @NotNull
@Override
- protected JpsModel getModel() {
+ public JpsModel getModel() {
return myModel;
}
diff --git a/jps/model-serialization/src/org/jetbrains/jps/model/serialization/JpsProjectLoader.java b/jps/model-serialization/src/org/jetbrains/jps/model/serialization/JpsProjectLoader.java
index e90fd123223a..716fce0e34e5 100644
--- a/jps/model-serialization/src/org/jetbrains/jps/model/serialization/JpsProjectLoader.java
+++ b/jps/model-serialization/src/org/jetbrains/jps/model/serialization/JpsProjectLoader.java
@@ -259,7 +259,7 @@ public class JpsProjectLoader extends JpsLoaderBase {
}
}
}
- JpsFacetSerializer.loadFacets(module, JDomSerializationUtil.findComponent(moduleRoot, "FacetManager"), baseModulePath);
+ JpsFacetSerializer.loadFacets(module, JDomSerializationUtil.findComponent(moduleRoot, "FacetManager"));
return module;
}
diff --git a/jps/model-serialization/src/org/jetbrains/jps/model/serialization/facet/JpsFacetConfigurationSerializer.java b/jps/model-serialization/src/org/jetbrains/jps/model/serialization/facet/JpsFacetConfigurationSerializer.java
index 67206a3b10a4..f8fb2e6761e3 100644
--- a/jps/model-serialization/src/org/jetbrains/jps/model/serialization/facet/JpsFacetConfigurationSerializer.java
+++ b/jps/model-serialization/src/org/jetbrains/jps/model/serialization/facet/JpsFacetConfigurationSerializer.java
@@ -27,14 +27,12 @@ public abstract class JpsFacetConfigurationSerializer {
return myFacetTypeId;
}
- public E loadExtension(final Element configurationElement, final String facetName, JpsModule module,
- String baseModulePath, JpsElement parentFacet) {
- final E e = loadExtension(configurationElement, facetName, baseModulePath, parentFacet, module);
+ public E loadExtension(final Element configurationElement, final String facetName, JpsModule module, JpsElement parentFacet) {
+ final E e = loadExtension(configurationElement, facetName, parentFacet, module);
return module.getContainer().setChild(myRole, e);
}
- protected abstract E loadExtension(@NotNull Element facetConfigurationElement, String name, String baseModulePath, JpsElement parent,
- JpsModule module);
+ protected abstract E loadExtension(@NotNull Element facetConfigurationElement, String name, JpsElement parent, JpsModule module);
public boolean hasExtension(JpsModule module) {
return module.getContainer().getChild(myRole) != null;
diff --git a/jps/model-serialization/src/org/jetbrains/jps/model/serialization/facet/JpsFacetSerializer.java b/jps/model-serialization/src/org/jetbrains/jps/model/serialization/facet/JpsFacetSerializer.java
index 10e0640db0d0..3998dab413bb 100644
--- a/jps/model-serialization/src/org/jetbrains/jps/model/serialization/facet/JpsFacetSerializer.java
+++ b/jps/model-serialization/src/org/jetbrains/jps/model/serialization/facet/JpsFacetSerializer.java
@@ -23,11 +23,11 @@ public class JpsFacetSerializer {
@NonNls public static final String CONFIGURATION_TAG = "configuration";
@NonNls public static final String NAME_ATTRIBUTE = "name";
- public static void loadFacets(JpsModule module, @Nullable Element facetManagerElement, final String baseModulePath) {
+ public static void loadFacets(JpsModule module, @Nullable Element facetManagerElement) {
if (facetManagerElement == null) return;
final FacetManagerState state = XmlSerializer.deserialize(facetManagerElement, FacetManagerState.class);
if (state != null) {
- addFacets(module, state.getFacets(), null, baseModulePath);
+ addFacets(module, state.getFacets(), null);
}
}
@@ -43,20 +43,19 @@ public class JpsFacetSerializer {
XmlSerializer.serializeInto(managerState, facetManagerElement, new SkipDefaultValuesSerializationFilters());
}
- private static void addFacets(JpsModule module, List facets, @Nullable final JpsElement parentFacet,
- final String baseModulePath) {
+ private static void addFacets(JpsModule module, List facets, @Nullable final JpsElement parentFacet) {
for (FacetState facetState : facets) {
final JpsFacetConfigurationSerializer> serializer = getModuleExtensionSerializer(facetState.getFacetType());
if (serializer != null) {
- final JpsElement element = addExtension(module, serializer, facetState, parentFacet, baseModulePath);
- addFacets(module, facetState.getSubFacets(), element, baseModulePath);
+ final JpsElement element = addExtension(module, serializer, facetState, parentFacet);
+ addFacets(module, facetState.getSubFacets(), element);
}
}
}
private static E addExtension(JpsModule module, JpsFacetConfigurationSerializer serializer, FacetState facet,
- JpsElement parentFacet, final String baseModulePath) {
- return serializer.loadExtension(facet.getConfiguration(), facet.getName(), module, baseModulePath, parentFacet);
+ JpsElement parentFacet) {
+ return serializer.loadExtension(facet.getConfiguration(), facet.getName(), module, parentFacet);
}
@Nullable
diff --git a/lib/required_for_dist.txt b/lib/required_for_dist.txt
index 9ef3ea59ed7d..eda832c63687 100644
--- a/lib/required_for_dist.txt
+++ b/lib/required_for_dist.txt
@@ -43,7 +43,7 @@ xbean.jar
xerces.jar
xmlrpc-2.0.jar
xpp3-1.1.4-min.jar
-xstream.jar
+xstream-1.4.3.jar
swingx-core-1.6.2.jar
netty-3.5.8.Final.jar
protobuf-2.4.1.jar
diff --git a/lib/src/xstream-1.4.3-src.zip b/lib/src/xstream-1.4.3-src.zip
new file mode 100644
index 000000000000..7a9e93a1761a
Binary files /dev/null and b/lib/src/xstream-1.4.3-src.zip differ
diff --git a/lib/xstream-1.4.3.jar b/lib/xstream-1.4.3.jar
new file mode 100644
index 000000000000..815ed039b3a1
Binary files /dev/null and b/lib/xstream-1.4.3.jar differ
diff --git a/lib/xstream.jar b/lib/xstream.jar
deleted file mode 100644
index e43240a50219..000000000000
Binary files a/lib/xstream.jar and /dev/null differ
diff --git a/platform/icons/src/ide/hectorNo_dark.png b/platform/icons/src/ide/hectorNo_dark.png
new file mode 100644
index 000000000000..1344ead7d7aa
Binary files /dev/null and b/platform/icons/src/ide/hectorNo_dark.png differ
diff --git a/platform/icons/src/ide/hectorOff_dark.png b/platform/icons/src/ide/hectorOff_dark.png
new file mode 100644
index 000000000000..292f12363424
Binary files /dev/null and b/platform/icons/src/ide/hectorOff_dark.png differ
diff --git a/platform/icons/src/ide/hectorOn_dark.png b/platform/icons/src/ide/hectorOn_dark.png
new file mode 100644
index 000000000000..8a3a2eb6300f
Binary files /dev/null and b/platform/icons/src/ide/hectorOn_dark.png differ
diff --git a/platform/icons/src/ide/hectorSyntax_dark.png b/platform/icons/src/ide/hectorSyntax_dark.png
new file mode 100644
index 000000000000..ef670f284aa3
Binary files /dev/null and b/platform/icons/src/ide/hectorSyntax_dark.png differ
diff --git a/platform/lang-impl/src/com/intellij/codeInsight/editorActions/CutHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/editorActions/CutHandler.java
index 984d68ff97fd..1d16268cd329 100644
--- a/platform/lang-impl/src/com/intellij/codeInsight/editorActions/CutHandler.java
+++ b/platform/lang-impl/src/com/intellij/codeInsight/editorActions/CutHandler.java
@@ -65,9 +65,20 @@ public class CutHandler extends EditorWriteActionHandler {
if (!selectionModel.hasSelection()) return;
}
+ int start = selectionModel.getSelectionStart();
+ int end = selectionModel.getSelectionEnd();
+
EditorActionManager.getInstance().getActionHandler(IdeActions.ACTION_EDITOR_COPY).execute(editor, dataContext);
- EditorModificationUtil.deleteSelectedText(editor);
+ if (start != end) {
+ // There is a possible case that 'sticky selection' is active. It's automatically removed on copying then, so, we explictly
+ // remove the text.
+ editor.getDocument().deleteString(start, end);
+ }
+ else {
+ EditorModificationUtil.deleteSelectedText(editor);
+ }
+
if (positionToRestore != null) {
editor.getCaretModel().moveToVisualPosition(positionToRestore);
}
diff --git a/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyBrowserBase.java b/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyBrowserBase.java
index 349ff7b16bda..d203580fe6a0 100644
--- a/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyBrowserBase.java
+++ b/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyBrowserBase.java
@@ -97,10 +97,15 @@ public abstract class HierarchyBrowserBase extends SimpleToolWindowPanel impleme
protected void appendActions(@NotNull DefaultActionGroup actionGroup, @Nullable String helpID) {
actionGroup.add(myAutoScrollToSourceHandler.createToggleAction());
actionGroup.add(ActionManager.getInstance().getAction(IdeActions.ACTION_EXPAND_ALL));
- if (myContent != null) { // sometimes there is no content to close, e.g. in usage view preview
- actionGroup.add(PinToolwindowTabAction.getPinAction());
- actionGroup.add(new CloseAction());
- }
+ actionGroup.add(new PinToolwindowTabAction(){
+ @Override
+ public void update(AnActionEvent event) {
+ super.update(event);
+ // sometimes there is no content to close, e.g. in usage view preview
+ event.getPresentation().setVisible(myContent != null);
+ }
+ });
+ actionGroup.add(new CloseAction());
if (helpID != null) {
actionGroup.add(new ContextHelpAction(helpID));
}
@@ -162,7 +167,8 @@ public abstract class HierarchyBrowserBase extends SimpleToolWindowPanel impleme
return list.toArray(new HierarchyNodeDescriptor[list.size()]);
}
- private PsiElement[] getSelectedElements() {
+ @NotNull
+ protected PsiElement[] getSelectedElements() {
HierarchyNodeDescriptor[] descriptors = getSelectedDescriptors();
ArrayList elements = new ArrayList();
for (HierarchyNodeDescriptor descriptor : descriptors) {
@@ -244,9 +250,14 @@ public abstract class HierarchyBrowserBase extends SimpleToolWindowPanel impleme
}
myContent.getManager().removeContent(myContent, true);
}
+
+ @Override
+ public void update(AnActionEvent e) {
+ e.getPresentation().setVisible(myContent != null);
+ }
}
- protected void configureTree(Tree tree) {
+ protected void configureTree(@NotNull Tree tree) {
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);
tree.setToggleClickCount(-1);
tree.setCellRenderer(new HierarchyNodeRenderer());
diff --git a/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyBrowserBaseEx.java b/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyBrowserBaseEx.java
index a1297e0ec558..212c1418da1a 100644
--- a/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyBrowserBaseEx.java
+++ b/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyBrowserBaseEx.java
@@ -45,7 +45,6 @@ import com.intellij.pom.Navigatable;
import com.intellij.psi.*;
import com.intellij.psi.search.scope.packageSet.NamedScope;
import com.intellij.psi.search.scope.packageSet.NamedScopesHolder;
-import com.intellij.psi.util.PsiUtilCore;
import com.intellij.ui.ScrollPaneFactory;
import com.intellij.ui.treeStructure.Tree;
import com.intellij.util.Alarm;
@@ -66,7 +65,6 @@ import java.util.*;
import java.util.List;
public abstract class HierarchyBrowserBaseEx extends HierarchyBrowserBase implements OccurenceNavigator {
-
private static final Logger LOG = Logger.getInstance("#com.intellij.ide.hierarchy.HierarchyBrowserBaseEx");
@NonNls private static final String HELP_ID = "reference.toolWindows.hierarchy";
@@ -463,16 +461,6 @@ public abstract class HierarchyBrowserBaseEx extends HierarchyBrowserBase implem
return myCurrentViewType;
}
- private PsiElement[] getSelectedElements() {
- HierarchyNodeDescriptor[] descriptors = getSelectedDescriptors();
- ArrayList elements = new ArrayList();
- for (HierarchyNodeDescriptor descriptor : descriptors) {
- PsiElement element = getElementFromDescriptor(descriptor);
- if (element != null) elements.add(element);
- }
- return PsiUtilCore.toPsiElementArray(elements);
- }
-
@Override
public Object getData(final String dataId) {
if (getBrowserDataKey().equals(dataId)) {
@@ -641,7 +629,7 @@ public abstract class HierarchyBrowserBaseEx extends HierarchyBrowserBase implem
}
}
- protected class RefreshAction extends com.intellij.ide.actions.RefreshAction {
+ private class RefreshAction extends com.intellij.ide.actions.RefreshAction {
public RefreshAction() {
super(IdeBundle.message("action.refresh"), IdeBundle.message("action.refresh"), AllIcons.Actions.Refresh);
}
@@ -737,7 +725,6 @@ public abstract class HierarchyBrowserBaseEx extends HierarchyBrowserBase implem
@Override
public final void actionPerformed(final AnActionEvent e) {
selectScope(myScopeType);
-
}
}
diff --git a/platform/lang-impl/src/com/intellij/ide/util/PsiElementModuleRenderer.java b/platform/lang-impl/src/com/intellij/ide/util/PsiElementModuleRenderer.java
index 32fb869cc4bf..1af48d24cdf7 100644
--- a/platform/lang-impl/src/com/intellij/ide/util/PsiElementModuleRenderer.java
+++ b/platform/lang-impl/src/com/intellij/ide/util/PsiElementModuleRenderer.java
@@ -100,7 +100,7 @@ public class PsiElementModuleRenderer extends DefaultListCellRenderer{
}
myText = module.getName();
if (inTestSource) {
- setIcon(AllIcons.Nodes.TestSourceFolder);
+ setIcon(AllIcons.Modules.TestSourceFolder);
}
else {
setIcon(ModuleType.get(module).getIcon());
diff --git a/platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java b/platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java
index f377479f8577..b71570b82738 100644
--- a/platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java
+++ b/platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java
@@ -330,7 +330,7 @@ public class IdeEventQueue extends EventQueue {
myCurrentEvent = e;
try {
- _dispatchEvent(e, true);
+ _dispatchEvent(e, false);
}
catch (ProcessCanceledException pce) {
throw pce;
diff --git a/platform/platform-impl/src/com/intellij/ide/actions/RefreshAction.java b/platform/platform-impl/src/com/intellij/ide/actions/RefreshAction.java
index d66dea5d64cf..430966ffcf2a 100644
--- a/platform/platform-impl/src/com/intellij/ide/actions/RefreshAction.java
+++ b/platform/platform-impl/src/com/intellij/ide/actions/RefreshAction.java
@@ -37,6 +37,7 @@ public class RefreshAction extends AnAction implements DumbAware {
super(text, description, icon);
}
+ @Override
public void actionPerformed(AnActionEvent e) {
// empty
}
diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/actions/ContentChooser.java b/platform/platform-impl/src/com/intellij/openapi/editor/actions/ContentChooser.java
index f3af69675fd6..3c1d9d5ebe66 100644
--- a/platform/platform-impl/src/com/intellij/openapi/editor/actions/ContentChooser.java
+++ b/platform/platform-impl/src/com/intellij/openapi/editor/actions/ContentChooser.java
@@ -51,29 +51,30 @@ import java.util.List;
public abstract class ContentChooser extends DialogWrapper {
private List myAllContents;
- private Editor myViewer;
+ private Editor myViewer;
private final boolean myUseIdeaEditor;
- private final JList myList;
- private final Splitter mySplitter;
- private final Project myProject;
- private final boolean myAllowMultipleSelections;
- private final Alarm myUpdateAlarm;
+ private final JList myList;
+ private final JBSplitter mySplitter;
+ private final Project myProject;
+ private final boolean myAllowMultipleSelections;
+ private final Alarm myUpdateAlarm;
private Icon myListEntryIcon = AllIcons.FileTypes.Text;
public ContentChooser(Project project, String title, boolean useIdeaEditor) {
this(project, title, useIdeaEditor, false);
}
-
+
public ContentChooser(Project project, String title, boolean useIdeaEditor, boolean allowMultipleSelections) {
super(project, true);
myProject = project;
myUseIdeaEditor = useIdeaEditor;
myAllowMultipleSelections = allowMultipleSelections;
myUpdateAlarm = new Alarm(getDisposable());
- mySplitter = new Splitter(true, 0.3f);
- myList = new JBList();
+ mySplitter = new JBSplitter(true, 0.3f);
+ mySplitter.setSplitterProportionKey(getDimensionServiceKey() + ".splitter");
+ myList = new JBList();
setOKButtonText(CommonBundle.getOkButtonText());
setTitle(title);
diff --git a/platform/platform-impl/src/com/intellij/ui/content/tabs/PinToolwindowTabAction.java b/platform/platform-impl/src/com/intellij/ui/content/tabs/PinToolwindowTabAction.java
index 8df01edb8dae..acb2e8ab47ef 100644
--- a/platform/platform-impl/src/com/intellij/ui/content/tabs/PinToolwindowTabAction.java
+++ b/platform/platform-impl/src/com/intellij/ui/content/tabs/PinToolwindowTabAction.java
@@ -23,13 +23,15 @@ import com.intellij.openapi.wm.impl.content.ToolWindowContentUi;
import com.intellij.ui.content.Content;
import com.intellij.ui.content.ContentManager;
import com.intellij.ui.content.TabbedPaneContentUI;
+import org.jetbrains.annotations.NonNls;
+import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* @author spleaner
*/
public class PinToolwindowTabAction extends ToggleAction implements DumbAware {
- public static final String ACTION_NAME = "PinToolwindowTab";
+ @NonNls public static final String ACTION_NAME = "PinToolwindowTab";
public static AnAction getPinAction() {
return ActionManager.getInstance().getAction(ACTION_NAME);
@@ -40,7 +42,7 @@ public class PinToolwindowTabAction extends ToggleAction implements DumbAware {
}
@Nullable
- private static Content getContextContent(AnActionEvent event) {
+ private static Content getContextContent(@NotNull AnActionEvent event) {
final ToolWindow window = PlatformDataKeys.TOOL_WINDOW.getData(event.getDataContext());
if (window != null) {
final ContentManager contentManager = window.getContentManager();
@@ -52,16 +54,19 @@ public class PinToolwindowTabAction extends ToggleAction implements DumbAware {
return null;
}
+ @Override
public boolean isSelected(AnActionEvent event) {
final Content content = getContextContent(event);
return content != null && content.isPinned();
}
+ @Override
public void setSelected(AnActionEvent event, boolean flag) {
final Content content = getContextContent(event);
if (content != null) content.setPinned(flag);
}
+ @Override
public void update(AnActionEvent event) {
super.update(event);
Presentation presentation = event.getPresentation();
diff --git a/platform/platform-resources-en/src/messages/CodeInsightBundle.properties b/platform/platform-resources-en/src/messages/CodeInsightBundle.properties
index 325d8619bba7..a280d532add6 100644
--- a/platform/platform-resources-en/src/messages/CodeInsightBundle.properties
+++ b/platform/platform-resources-en/src/messages/CodeInsightBundle.properties
@@ -430,7 +430,7 @@ powered.by=Powered by
powered.by.plugin=''{0}'' plugin.
error.cannot.convert.default.message=Invalid value: ''{0}''
error.cannot.resolve.default.message=Cannot resolve symbol ''{0}''
-error.cannot.resolve.0.1=Cannot resolve {0} {1}
+error.cannot.resolve.0.1=Cannot resolve {0} ''{1}''
error.unknown.enum.value.message=Unknown enum value ''{0}''
i18nize.cant.create.properties.file.because.its.name.is.associated=Can''t create properties file ''{0}'' because its name is associated with the {1}.
i18nize.error.creating.properties.file=Error creating properties file
diff --git a/platform/projectModel-impl/src/com/intellij/openapi/components/PathMacroManager.java b/platform/projectModel-impl/src/com/intellij/openapi/components/PathMacroManager.java
index b3f66965ab38..33f7312611b6 100644
--- a/platform/projectModel-impl/src/com/intellij/openapi/components/PathMacroManager.java
+++ b/platform/projectModel-impl/src/com/intellij/openapi/components/PathMacroManager.java
@@ -31,5 +31,7 @@ public abstract class PathMacroManager implements PathMacroSubstitutor {
public abstract void collapsePathsRecursively(Element element);
+ public abstract String collapsePathsRecursively(String text);
+
public abstract TrackingPathMacroSubstitutor createTrackingSubstitutor();
}
diff --git a/platform/projectModel-impl/src/com/intellij/openapi/components/impl/BasePathMacroManager.java b/platform/projectModel-impl/src/com/intellij/openapi/components/impl/BasePathMacroManager.java
index 449a49523f8d..5a52773ba4c4 100644
--- a/platform/projectModel-impl/src/com/intellij/openapi/components/impl/BasePathMacroManager.java
+++ b/platform/projectModel-impl/src/com/intellij/openapi/components/impl/BasePathMacroManager.java
@@ -110,6 +110,11 @@ public class BasePathMacroManager extends PathMacroManager {
getReplacePathMap().substitute(element, SystemInfo.isFileSystemCaseSensitive, true);
}
+ @Override
+ public String collapsePathsRecursively(final String text) {
+ return getReplacePathMap().substituteRecursively(text, SystemInfo.isFileSystemCaseSensitive);
+ }
+
public void expandPaths(final Element element) {
getExpandMacroMap().substitute(element, SystemInfo.isFileSystemCaseSensitive);
}
diff --git a/platform/usageView/src/com/intellij/usages/impl/rules/UsageScopeGroupingRule.java b/platform/usageView/src/com/intellij/usages/impl/rules/UsageScopeGroupingRule.java
index 1ed9eb5fb524..6529a0f00433 100644
--- a/platform/usageView/src/com/intellij/usages/impl/rules/UsageScopeGroupingRule.java
+++ b/platform/usageView/src/com/intellij/usages/impl/rules/UsageScopeGroupingRule.java
@@ -15,6 +15,7 @@
*/
package com.intellij.usages.impl.rules;
+import com.intellij.icons.AllIcons;
import com.intellij.openapi.roots.ProjectFileIndex;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.vcs.FileStatus;
@@ -58,7 +59,7 @@ public class UsageScopeGroupingRule implements UsageGroupingRule {
private static final UsageScopeGroup TEST = new UsageScopeGroup(0) {
@Override
public Icon getIcon(boolean isOpen) {
- return PlatformIcons.TEST_SOURCE_FOLDER;
+ return AllIcons.Modules.TestSourceFolder;
}
@Override
diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/UnversionedViewDialog.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/UnversionedViewDialog.java
index 31035c8308ee..844f17fa5097 100644
--- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/UnversionedViewDialog.java
+++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/UnversionedViewDialog.java
@@ -58,7 +58,7 @@ public class UnversionedViewDialog extends DialogWrapper {
public UnversionedViewDialog(final Project project) {
super(project, true);
- setTitle("Unversioned files");
+ setTitle("Unversioned Files");
myProject = project;
final Runnable closer = new Runnable() {
public void run() {
diff --git a/plugins/android/jps-plugin/android-jps-plugin.iml b/plugins/android/jps-plugin/android-jps-plugin.iml
index 0f00a0b60824..a4d0b0482d49 100644
--- a/plugins/android/jps-plugin/android-jps-plugin.iml
+++ b/plugins/android/jps-plugin/android-jps-plugin.iml
@@ -14,6 +14,7 @@
+
diff --git a/plugins/android/jps-plugin/src/org/jetbrains/jps/android/AndroidJpsUtil.java b/plugins/android/jps-plugin/src/org/jetbrains/jps/android/AndroidJpsUtil.java
index cc310e8c1c0a..47f3e080d314 100644
--- a/plugins/android/jps-plugin/src/org/jetbrains/jps/android/AndroidJpsUtil.java
+++ b/plugins/android/jps-plugin/src/org/jetbrains/jps/android/AndroidJpsUtil.java
@@ -17,6 +17,7 @@ import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.builders.storage.BuildDataPaths;
+import org.jetbrains.jps.model.serialization.JpsModelSerializationDataService;
import org.jetbrains.jps.util.JpsPathUtil;
import org.jetbrains.jps.ModuleChunk;
import org.jetbrains.jps.ProjectPaths;
@@ -35,6 +36,7 @@ import org.jetbrains.jps.model.JpsSimpleElement;
import org.jetbrains.jps.model.java.JavaSourceRootType;
import org.jetbrains.jps.model.java.JpsJavaClasspathKind;
import org.jetbrains.jps.model.java.JpsJavaExtensionService;
+import org.jetbrains.jps.model.java.impl.JpsJavaDependenciesEnumerationHandler;
import org.jetbrains.jps.model.library.JpsLibrary;
import org.jetbrains.jps.model.library.JpsLibraryRoot;
import org.jetbrains.jps.model.library.JpsOrderRootType;
@@ -73,8 +75,9 @@ public class AndroidJpsUtil {
}
private static boolean shouldProcessDependenciesRecursively(JpsModule module) {
- // todo: return false for mavenized modules
- return true;
+ return JpsJavaDependenciesEnumerationHandler.shouldProcessDependenciesRecursively(
+ JpsJavaDependenciesEnumerationHandler.createHandlers(
+ Collections.singletonList(module)));
}
@Nullable
@@ -575,8 +578,8 @@ public class AndroidJpsUtil {
return new File(outputDirForPackagedArtifacts, getApkName(module)).getPath();
}
- final String moduleDirPath = extension.getBaseModulePath();
- return moduleDirPath != null ? FileUtil.toSystemDependentName(moduleDirPath + apkRelativePath) : null;
+ File moduleBaseDirectory = JpsModelSerializationDataService.getBaseDirectory(module);
+ return moduleBaseDirectory != null ? FileUtil.toSystemDependentName(moduleBaseDirectory.getAbsolutePath() + apkRelativePath) : null;
}
@NotNull
diff --git a/plugins/android/jps-plugin/src/org/jetbrains/jps/android/model/JpsAndroidModuleExtension.java b/plugins/android/jps-plugin/src/org/jetbrains/jps/android/model/JpsAndroidModuleExtension.java
index f9435c5a62cb..080d9fe2ca5a 100644
--- a/plugins/android/jps-plugin/src/org/jetbrains/jps/android/model/JpsAndroidModuleExtension.java
+++ b/plugins/android/jps-plugin/src/org/jetbrains/jps/android/model/JpsAndroidModuleExtension.java
@@ -60,8 +60,6 @@ public interface JpsAndroidModuleExtension extends JpsElement {
String getApkRelativePath();
- String getBaseModulePath();
-
String getCustomDebugKeyStorePath();
List getAdditionalNativeLibs();
diff --git a/plugins/android/jps-plugin/src/org/jetbrains/jps/android/model/impl/JpsAndroidModelSerializerExtension.java b/plugins/android/jps-plugin/src/org/jetbrains/jps/android/model/impl/JpsAndroidModelSerializerExtension.java
index 366d3ce8991d..eb9e58a416f7 100644
--- a/plugins/android/jps-plugin/src/org/jetbrains/jps/android/model/impl/JpsAndroidModelSerializerExtension.java
+++ b/plugins/android/jps-plugin/src/org/jetbrains/jps/android/model/impl/JpsAndroidModelSerializerExtension.java
@@ -44,9 +44,8 @@ public class JpsAndroidModelSerializerExtension extends JpsModelSerializerExtens
@Override
public JpsAndroidModuleExtension loadExtension(@NotNull Element facetConfigurationElement,
String name,
- String baseModulePath,
JpsElement parent, JpsModule module) {
- return new JpsAndroidModuleExtensionImpl(XmlSerializer.deserialize(facetConfigurationElement, JpsAndroidModuleProperties.class), baseModulePath);
+ return new JpsAndroidModuleExtensionImpl(XmlSerializer.deserialize(facetConfigurationElement, JpsAndroidModuleProperties.class));
}
@Override
diff --git a/plugins/android/jps-plugin/src/org/jetbrains/jps/android/model/impl/JpsAndroidModuleExtensionImpl.java b/plugins/android/jps-plugin/src/org/jetbrains/jps/android/model/impl/JpsAndroidModuleExtensionImpl.java
index 88b51ef463d2..7fd5134eec0f 100644
--- a/plugins/android/jps-plugin/src/org/jetbrains/jps/android/model/impl/JpsAndroidModuleExtensionImpl.java
+++ b/plugins/android/jps-plugin/src/org/jetbrains/jps/android/model/impl/JpsAndroidModuleExtensionImpl.java
@@ -20,6 +20,7 @@ import com.intellij.util.xmlb.XmlSerializerUtil;
import org.jetbrains.android.util.AndroidNativeLibData;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.jetbrains.jps.model.serialization.JpsModelSerializationDataService;
import org.jetbrains.jps.util.JpsPathUtil;
import org.jetbrains.jps.android.model.JpsAndroidModuleExtension;
import org.jetbrains.jps.model.ex.JpsElementBase;
@@ -37,11 +38,9 @@ import java.util.List;
public class JpsAndroidModuleExtensionImpl extends JpsElementBase implements JpsAndroidModuleExtension {
public static final JpsElementChildRoleBase KIND = JpsElementChildRoleBase.create("android extension");
private final JpsAndroidModuleProperties myProperties;
- private final String myBaseModulePath;
- public JpsAndroidModuleExtensionImpl(JpsAndroidModuleProperties properties, String baseModulePath) {
+ public JpsAndroidModuleExtensionImpl(JpsAndroidModuleProperties properties) {
myProperties = properties;
- myBaseModulePath = baseModulePath;
}
@Override
@@ -52,7 +51,7 @@ public class JpsAndroidModuleExtensionImpl extends JpsElementBase myListeners = new ArrayList();
@@ -138,6 +138,7 @@ public abstract class AndroidLogFilterModel extends LogFilterModel {
}
+ Log.LogLevel logLevel = null;
String tag = null;
String pid = null;
String message = text;
@@ -145,16 +146,21 @@ public abstract class AndroidLogFilterModel extends LogFilterModel {
final Matcher matcher = ANDROID_LOG_MESSAGE_PATTERN.matcher(text);
if (matcher.matches()) {
String s = matcher.group(1).trim();
+ if (s.length() > 0) {
+ logLevel = getLogLevel(s);
+ }
+
+ s = matcher.group(2).trim();
if (s.length() > 0) {
tag = s;
}
- s = matcher.group(2).trim();
+ s = matcher.group(3).trim();
if (s.length() > 0) {
pid = s;
}
- s = matcher.group(3).trim();
+ s = matcher.group(4).trim();
if (s.length() > 0) {
message = s;
}
@@ -167,8 +173,10 @@ public abstract class AndroidLogFilterModel extends LogFilterModel {
if (pid == null) {
pid = myPrevPid;
}
-
- return configuredFilterName.isApplicable(message, tag, pid, getLogLevel(text));
+ if (logLevel == null) {
+ logLevel = myPrevMessageLogLevel;
+ }
+ return configuredFilterName.isApplicable(message, tag, pid, logLevel);
}
public List extends LogFilter> getLogFilters() {
@@ -185,18 +193,27 @@ public abstract class AndroidLogFilterModel extends LogFilterModel {
@Override
public boolean isAcceptable(String line) {
- Log.LogLevel logLevel = getLogLevel(line);
+ final Matcher matcher = ANDROID_LOG_MESSAGE_PATTERN.matcher(line);
+ Log.LogLevel logLevel = null;
+
+ if (matcher.matches()) {
+ logLevel = getLogLevel(matcher.group(1));
+ }
+ if (logLevel == null) {
+ logLevel = myPrevMessageLogLevel;
+ }
return logLevel != null && logLevel.getPriority() >= myLogLevel.getPriority();
}
}
@Nullable
- Log.LogLevel getLogLevel(String line) {
- Log.LogLevel logLevel = AndroidLogcatUtil.getLogLevel(line);
- if (logLevel == null) {
- logLevel = myPrevMessageLogLevel;
+ private static Log.LogLevel getLogLevel(@NotNull String name) {
+ for (Log.LogLevel level : Log.LogLevel.values()) {
+ if (name.equals(level.name())) {
+ return level;
+ }
}
- return logLevel;
+ return null;
}
public boolean isFilterSelected(LogFilter filter) {
@@ -226,24 +243,24 @@ public abstract class AndroidLogFilterModel extends LogFilterModel {
final boolean messageHeader = matcher.matches();
if (messageHeader) {
- String s = matcher.group(1).trim();
+ String s = matcher.group(1);
+ if (s.length() > 0) {
+ final Log.LogLevel logLevel = getLogLevel(s);
+ if (logLevel != null) {
+ myPrevMessageLogLevel = logLevel;
+ }
+ }
+
+ s = matcher.group(2).trim();
if (s.length() > 0) {
myPrevTag = s;
}
- s = matcher.group(2).trim();
+ s = matcher.group(3).trim();
if (s.length() > 0) {
myPrevPid = s;
}
}
-
- Log.LogLevel logLevel = AndroidLogcatUtil.getLogLevel(line);
- if (logLevel != null) {
- myPrevMessageLogLevel = logLevel;
- }
- final Key key = myPrevMessageLogLevel != null ? getProcessOutputType(myPrevMessageLogLevel) : ProcessOutputTypes.STDOUT;
-
-
final boolean applicable = isApplicable(line);
final boolean applicableByCustomFilter = isApplicableByCustomFilter(line);
@@ -266,6 +283,7 @@ public abstract class AndroidLogFilterModel extends LogFilterModel {
myFullMessageApplicable = myFullMessageApplicable || applicable;
myFullMessageApplicableByCustomFilter = myFullMessageApplicableByCustomFilter || applicableByCustomFilter;
}
+ final Key key = myPrevMessageLogLevel != null ? getProcessOutputType(myPrevMessageLogLevel) : ProcessOutputTypes.STDOUT;
return new MyProcessingResult(key,
myFullMessageApplicable && myFullMessageApplicableByCustomFilter,
diff --git a/plugins/android/src/org/jetbrains/android/logcat/AndroidLogcatUtil.java b/plugins/android/src/org/jetbrains/android/logcat/AndroidLogcatUtil.java
index 7df2620e4fcc..ba5065aee3a8 100644
--- a/plugins/android/src/org/jetbrains/android/logcat/AndroidLogcatUtil.java
+++ b/plugins/android/src/org/jetbrains/android/logcat/AndroidLogcatUtil.java
@@ -45,36 +45,21 @@ import java.util.Map;
*/
public class AndroidLogcatUtil {
private static final Logger LOG = Logger.getInstance("#org.jetbrains.android.run.AndroidDebugRunner");
- private static Map LOG_LEVELS;
- private static int minLogLevelNameLength;
- private static int maxLogLevelNameLength;
+ private static Map ourLogLevels;
private AndroidLogcatUtil() {
}
@Nullable
- public synchronized static Log.LogLevel getLogLevel(String message) {
- if (LOG_LEVELS == null) {
- LOG_LEVELS = new HashMap();
+ public synchronized static Log.LogLevel getLogLevel(String s) {
+ if (ourLogLevels == null) {
+ ourLogLevels = new HashMap();
+
for (Log.LogLevel level : Log.LogLevel.values()) {
- String name = level.name();
- if (minLogLevelNameLength == 0 || name.length() < minLogLevelNameLength) {
- minLogLevelNameLength = name.length();
- }
- if (name.length() > maxLogLevelNameLength) {
- maxLogLevelNameLength = name.length();
- }
- LOG_LEVELS.put(name, level);
+ ourLogLevels.put(level.name(), level);
}
}
- for (int i = 0, n = message.length(); i < n; i++) {
- for (int j = i + minLogLevelNameLength; j <= i + maxLogLevelNameLength && j < n; j++) {
- String s = message.substring(i, j);
- Log.LogLevel logLevel = LOG_LEVELS.get(s);
- if (logLevel != null) return logLevel;
- }
- }
- return null;
+ return ourLogLevels.get(s);
}
private static void startLogging(IDevice device, AndroidOutputReceiver receiver)
diff --git a/plugins/android/src/org/jetbrains/android/logcat/EditLogFilterDialog.java b/plugins/android/src/org/jetbrains/android/logcat/EditLogFilterDialog.java
index 438adb8adc62..f3d52dd47bc4 100644
--- a/plugins/android/src/org/jetbrains/android/logcat/EditLogFilterDialog.java
+++ b/plugins/android/src/org/jetbrains/android/logcat/EditLogFilterDialog.java
@@ -143,12 +143,12 @@ class EditLogFilterDialog extends DialogWrapper {
continue;
}
- final String tag = matcher.group(1).trim();
+ final String tag = matcher.group(2).trim();
if (tag != null && tag.length() > 0) {
tagSet.add(tag);
}
- final String pid = matcher.group(2).trim();
+ final String pid = matcher.group(3).trim();
if (pid != null && pid.length() > 0) {
try {
Integer.parseInt(pid);
diff --git a/plugins/android/src/org/jetbrains/android/sdk/AndroidNewSdkDialog.java b/plugins/android/src/org/jetbrains/android/sdk/AndroidNewSdkDialog.java
new file mode 100644
index 000000000000..2cc06c662407
--- /dev/null
+++ b/plugins/android/src/org/jetbrains/android/sdk/AndroidNewSdkDialog.java
@@ -0,0 +1,46 @@
+package org.jetbrains.android.sdk;
+
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.ui.DialogWrapper;
+import com.intellij.ui.CollectionComboBoxModel;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import javax.swing.*;
+import java.util.List;
+
+/**
+ * @author Eugene.Kudelevsky
+ */
+public class AndroidNewSdkDialog extends DialogWrapper {
+ private JPanel myContentPanel;
+ private JComboBox myInternalJdkComboBox;
+ private JComboBox myBuildTargetComboBox;
+
+ protected AndroidNewSdkDialog(@Nullable Project project,
+ @NotNull List javaSdkNames,
+ @NotNull String selectedJavaSdkName,
+ @NotNull List targetNames,
+ @NotNull String selectedTargetName) {
+ super(project);
+ setTitle("Create New Android SDK");
+ myInternalJdkComboBox.setModel(new CollectionComboBoxModel(javaSdkNames, selectedJavaSdkName));
+ myBuildTargetComboBox.setModel(new CollectionComboBoxModel(targetNames, selectedTargetName));
+
+ init();
+ }
+
+ @Nullable
+ @Override
+ protected JComponent createCenterPanel() {
+ return myContentPanel;
+ }
+
+ public int getSelectedJavaSdkIndex() {
+ return myInternalJdkComboBox.getSelectedIndex();
+ }
+
+ public int getSelectedTargetIndex() {
+ return myBuildTargetComboBox.getSelectedIndex();
+ }
+}
diff --git a/plugins/android/src/org/jetbrains/android/sdk/AndroidSdkConfigurableForm.form b/plugins/android/src/org/jetbrains/android/sdk/AndroidNewSdkForm.form
similarity index 81%
rename from plugins/android/src/org/jetbrains/android/sdk/AndroidSdkConfigurableForm.form
rename to plugins/android/src/org/jetbrains/android/sdk/AndroidNewSdkForm.form
index abd6c673d3d2..ca0fdb83dd8c 100644
--- a/plugins/android/src/org/jetbrains/android/sdk/AndroidSdkConfigurableForm.form
+++ b/plugins/android/src/org/jetbrains/android/sdk/AndroidNewSdkForm.form
@@ -1,9 +1,9 @@
-