am 796b4ee2: (-s ours) am 8d54ca7c: am 566a6095: Merge "Avoid crash in new SDK preview" into studio-1.4-dev automerge: 94cb585 automerge: e1b87b9
* commit '796b4ee2ffcf44aff46f68bd53d114e1cb3353d3':
diff --git a/android/src/META-INF/plugin.xml b/android/src/META-INF/plugin.xml
index 2efec6f..60df615 100755
--- a/android/src/META-INF/plugin.xml
+++ b/android/src/META-INF/plugin.xml
@@ -576,7 +576,7 @@
icon="AndroidIcons.AndroidToolWindow"
factoryClass="com.android.tools.idea.monitor.AndroidToolWindowFactory"/>
<facet.toolWindow id="Build Variants"
- facetIdList="android"
+ facetIdList="android,android-gradle"
anchor="left"
secondary="true"
icon="AndroidIcons.AndroidToolWindow"
diff --git a/android/src/com/android/tools/idea/databinding/BrUtil.java b/android/src/com/android/tools/idea/databinding/BrUtil.java
index 2dd27b0..1431480 100644
--- a/android/src/com/android/tools/idea/databinding/BrUtil.java
+++ b/android/src/com/android/tools/idea/databinding/BrUtil.java
@@ -56,7 +56,7 @@
} else if (isBooleanGetter(psiMethod)) {
propertyName = name.subSequence(2, name.length());
} else {
- LOG.error("@Bindable associated with method must follow JavaBeans convention %s", psiMethod.getName());
+ LOG.error("@Bindable associated with method must follow JavaBeans convention %s", new Throwable(), psiMethod.getName());
return null;
}
char firstChar = propertyName.charAt(0);
diff --git a/android/src/com/android/tools/idea/gradle/actions/SyncProjectAction.java b/android/src/com/android/tools/idea/gradle/actions/SyncProjectAction.java
index ccae3c2..d2b2ad3 100644
--- a/android/src/com/android/tools/idea/gradle/actions/SyncProjectAction.java
+++ b/android/src/com/android/tools/idea/gradle/actions/SyncProjectAction.java
@@ -18,12 +18,14 @@
import com.android.tools.idea.gradle.GradleSyncState;
import com.android.tools.idea.gradle.project.GradleProjectImporter;
import com.android.tools.idea.gradle.variant.view.BuildVariantView;
-import com.android.tools.idea.startup.AndroidStudioSpecificInitializer;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.Presentation;
import com.intellij.openapi.project.Project;
+import static com.android.tools.idea.gradle.util.Projects.isBuildWithGradle;
+import static com.android.tools.idea.startup.AndroidStudioSpecificInitializer.isAndroidStudio;
+
/**
* Re-imports (syncs) an Android-Gradle project, without showing the "Import Project" wizard.
*/
@@ -35,7 +37,7 @@
@Override
public void actionPerformed(final AnActionEvent e) {
Project project = e.getProject();
- if (project != null) {
+ if (project != null && isBuildWithGradle(project)) {
BuildVariantView.getInstance(project).projectImportStarted();
Presentation presentation = e.getPresentation();
presentation.setEnabled(false);
@@ -50,12 +52,16 @@
@Override
public void update(AnActionEvent e) {
- if (!AndroidStudioSpecificInitializer.isAndroidStudio()) {
+ if (!isAndroidStudio()) {
+ e.getPresentation().setEnabledAndVisible(false);
+ return;
+ }
+ Project project = e.getProject();
+ if (project != null && !isBuildWithGradle(project)) {
e.getPresentation().setEnabledAndVisible(false);
return;
}
boolean enabled = false;
- Project project = e.getProject();
if (project != null) {
enabled = !GradleSyncState.getInstance(project).isSyncInProgress();
}
diff --git a/android/src/com/android/tools/idea/npw/TemplateParameterStep2.java b/android/src/com/android/tools/idea/npw/TemplateParameterStep2.java
index fdb7925..b8b189d 100644
--- a/android/src/com/android/tools/idea/npw/TemplateParameterStep2.java
+++ b/android/src/com/android/tools/idea/npw/TemplateParameterStep2.java
@@ -762,9 +762,9 @@
}
}
catch (CircularParameterDependencyException exception) {
- LOG.error("Circular dependency between parameters in template %1$s, participating parameters: %2$s", myCurrentTemplate.getTitle(),
+ LOG.error("Circular dependency between parameters in template %1$s, participating parameters: %2$s", exception,
+ myCurrentTemplate.getTitle(),
Joiner.on(", ").join(exception.getParameterIds()));
- LOG.error(exception);
}
}
finally {
diff --git a/android/src/com/android/tools/swing/layoutlib/AndroidPreviewPanel.java b/android/src/com/android/tools/swing/layoutlib/AndroidPreviewPanel.java
index 7a12d14..005fa2e 100644
--- a/android/src/com/android/tools/swing/layoutlib/AndroidPreviewPanel.java
+++ b/android/src/com/android/tools/swing/layoutlib/AndroidPreviewPanel.java
@@ -116,6 +116,7 @@
private double myScale = 1.0;
private Dimension myLastRenderedSize;
private Dimension myCachedPreferredSize;
+ private int myCurrentWidth;
public AndroidPreviewPanel(@NotNull Configuration configuration) {
myConfiguration = configuration;
@@ -134,9 +135,15 @@
Dimension currentSize = getSize();
synchronized (myGraphicsLayoutRendererLock) {
if (myGraphicsLayoutRenderer != null && !currentSize.equals(previousSize)) {
- // Because we use GraphicsLayoutRender in vertical scroll mode, the height passed it's only a minimum. If the actual rendering results
- // in a bigger size, the GraphicsLayoutRenderer.getPreferredSize() call will return the correct size.
- myGraphicsLayoutRenderer.setSize(width, 1);
+ // Because we use GraphicsLayoutRender in vertical scroll mode, the height passed it's only a minimum.
+ // If the actual rendering results in a bigger size, the GraphicsLayoutRenderer.getPreferredSize()
+ // call will return the correct size.
+
+ // Older versions of layoutlib do not handle correctly when 1 is passed and don't always recalculate
+ // the height if the width hasn't decreased.
+ // We workaround that by keep track of the last known width and passing height 1 when it decreases.
+ myGraphicsLayoutRenderer.setSize(width, (myCurrentWidth < width) ? 1 : height);
+ myCurrentWidth = width;
}
}
}
diff --git a/android/src/org/jetbrains/android/facet/IdeaSourceProvider.java b/android/src/org/jetbrains/android/facet/IdeaSourceProvider.java
index 878e3af..226c834 100644
--- a/android/src/org/jetbrains/android/facet/IdeaSourceProvider.java
+++ b/android/src/org/jetbrains/android/facet/IdeaSourceProvider.java
@@ -43,7 +43,7 @@
* Like {@link SourceProvider}, but for IntelliJ, which means it provides
* {@link VirtualFile} references rather than {@link File} references.
*
- * @see org.jetbrains.android.facet.AndroidSourceType
+ * @see AndroidSourceType
*/
public abstract class IdeaSourceProvider {
private IdeaSourceProvider() {
@@ -347,9 +347,10 @@
return Collections.singletonList(facet.getMainIdeaSourceProvider());
}
AndroidModel androidModel = facet.getAndroidModel();
- assert androidModel != null;
-
- return createAll(androidModel.getActiveSourceProviders());
+ if (androidModel != null) {
+ return createAll(androidModel.getActiveSourceProviders());
+ }
+ return Collections.emptyList();
}
@NotNull
@@ -358,8 +359,10 @@
return Collections.emptyList();
}
AndroidModel androidModel = facet.getAndroidModel();
- assert androidModel != null;
- return createAll(androidModel.getTestSourceProviders());
+ if (androidModel != null) {
+ return createAll(androidModel.getTestSourceProviders());
+ }
+ return Collections.emptyList();
}
private Collection<VirtualFile> getAllSourceFolders() {
diff --git a/android/src/org/jetbrains/android/uipreview/ChooseResourceDialog.java b/android/src/org/jetbrains/android/uipreview/ChooseResourceDialog.java
index 7999b30..62a3ee7 100644
--- a/android/src/org/jetbrains/android/uipreview/ChooseResourceDialog.java
+++ b/android/src/org/jetbrains/android/uipreview/ChooseResourceDialog.java
@@ -285,6 +285,7 @@
myStateListPickerPanel = new ResourceDialogTabComponent(new JPanel(new BorderLayout()), resType, resFolderType);
myStateListPickerPanel.setBorder(null);
myStateListPickerPanel.addCenter(myStateListPicker);
+ myStateListPickerPanel.setChangeFileNameVisible(false);
myContentPanel.addTab("StateList", myStateListPickerPanel);
numberOfTabs++;
@@ -1210,5 +1211,9 @@
public void openLocationSettings() {
mySouthPanel.setOn(true);
}
+
+ public void setChangeFileNameVisible(boolean isVisible) {
+ myLocationSettings.setChangeFileNameVisible(isVisible);
+ }
}
}