diff --git a/plugins/android/src/org/jetbrains/android/uipreview/AndroidLayoutPreviewToolWindowForm.java b/plugins/android/src/org/jetbrains/android/uipreview/AndroidLayoutPreviewToolWindowForm.java index 4e460f867998..936e1a3dd00c 100644 --- a/plugins/android/src/org/jetbrains/android/uipreview/AndroidLayoutPreviewToolWindowForm.java +++ b/plugins/android/src/org/jetbrains/android/uipreview/AndroidLayoutPreviewToolWindowForm.java @@ -14,6 +14,7 @@ import com.android.sdklib.SdkConstants; import com.intellij.ide.ui.ListCellRendererWrapper; import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.*; +import com.intellij.openapi.actionSystem.ex.CheckboxAction; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleUtil; @@ -244,6 +245,22 @@ class AndroidLayoutPreviewToolWindowForm implements Disposable { myActionToolBar = ActionManager.getInstance().createActionToolbar(ActionPlaces.UNKNOWN, actionGroup, true); myActionToolBar.setReservePlaceAutoPopupIcon(false); + final DefaultActionGroup optionsGroup = new DefaultActionGroup(); + final ActionToolbar optionsToolBar = ActionManager.getInstance().createActionToolbar(ActionPlaces.UNKNOWN, optionsGroup, true); + optionsToolBar.setReservePlaceAutoPopupIcon(false); + optionsToolBar.setSecondaryActionsTooltip("Options"); + optionsGroup.addAction(new CheckboxAction("Hide for non-layout files") { + @Override + public boolean isSelected(AnActionEvent e) { + return mySettings.getState().isHideForNonLayoutFiles(); + } + + @Override + public void setSelected(AnActionEvent e, boolean state) { + mySettings.getState().setHideForNonLayoutFiles(state); + } + }).setAsSecondary(true); + gb.gridx = 0; gb.gridy++; final JComponent toolbar = myActionToolBar.getComponent(); @@ -251,7 +268,11 @@ class AndroidLayoutPreviewToolWindowForm implements Disposable { toolBarWrapper.add(toolbar, BorderLayout.CENTER); toolBarWrapper.setPreferredSize(new Dimension(10, toolbar.getMinimumSize().height)); toolBarWrapper.setMinimumSize(new Dimension(10, toolbar.getMinimumSize().height)); - myComboPanel.add(toolBarWrapper, gb); + + final JPanel fullToolbarComponent = new JPanel(new BorderLayout()); + fullToolbarComponent.add(toolBarWrapper, BorderLayout.CENTER); + fullToolbarComponent.add(optionsToolBar.getComponent(), BorderLayout.EAST); + myComboPanel.add(fullToolbarComponent, gb); gb.fill = GridBagConstraints.HORIZONTAL; myThemeCombo = new ComboBox(); diff --git a/plugins/android/src/org/jetbrains/android/uipreview/AndroidLayoutPreviewToolWindowManager.java b/plugins/android/src/org/jetbrains/android/uipreview/AndroidLayoutPreviewToolWindowManager.java index 6f75736232d4..6391255a280b 100644 --- a/plugins/android/src/org/jetbrains/android/uipreview/AndroidLayoutPreviewToolWindowManager.java +++ b/plugins/android/src/org/jetbrains/android/uipreview/AndroidLayoutPreviewToolWindowManager.java @@ -175,7 +175,7 @@ public class AndroidLayoutPreviewToolWindowManager implements ProjectComponent { ((ToolWindowManagerEx)ToolWindowManager.getInstance(myProject)).addToolWindowManagerListener(new ToolWindowManagerAdapter() { private boolean myVisible = false; - + @Override public void stateChanged() { if (myProject.isDisposed()) { @@ -186,7 +186,7 @@ public class AndroidLayoutPreviewToolWindowManager implements ProjectComponent { if (window != null && window.isAvailable()) { final boolean visible = window.isVisible(); AndroidLayoutPreviewToolWindowSettings.getInstance(myProject).getState().setVisible(visible); - + if (visible && !myVisible) { render(); } @@ -243,16 +243,19 @@ public class AndroidLayoutPreviewToolWindowManager implements ProjectComponent { initToolWindow(); } + final AndroidLayoutPreviewToolWindowSettings settings = AndroidLayoutPreviewToolWindowSettings.getInstance(myProject); + final boolean hideForNonLayoutFiles = settings.getState().isHideForNonLayoutFiles(); + if (activeEditor == null) { myToolWindowForm.setFile(null); - myToolWindow.setAvailable(false, null); + myToolWindow.setAvailable(!hideForNonLayoutFiles, null); return; } final PsiFile psiFile = PsiDocumentManager.getInstance(myProject).getPsiFile(activeEditor.getDocument()); if (psiFile == null) { myToolWindowForm.setFile(null); - myToolWindow.setAvailable(false, null); + myToolWindow.setAvailable(!hideForNonLayoutFiles, null); return; } diff --git a/plugins/android/src/org/jetbrains/android/uipreview/AndroidLayoutPreviewToolWindowSettings.java b/plugins/android/src/org/jetbrains/android/uipreview/AndroidLayoutPreviewToolWindowSettings.java index af68bad650c1..96d641a1d1ae 100644 --- a/plugins/android/src/org/jetbrains/android/uipreview/AndroidLayoutPreviewToolWindowSettings.java +++ b/plugins/android/src/org/jetbrains/android/uipreview/AndroidLayoutPreviewToolWindowSettings.java @@ -43,6 +43,7 @@ public class AndroidLayoutPreviewToolWindowSettings implements PersistentStateCo private String myLocaleLanguage; private String myLocaleRegion; private boolean myVisible = true; + private boolean myHideForNonLayoutFiles = true; public String getDevice() { return myDevice; @@ -115,5 +116,13 @@ public class AndroidLayoutPreviewToolWindowSettings implements PersistentStateCo public void setVisible(boolean visible) { myVisible = visible; } + + public boolean isHideForNonLayoutFiles() { + return myHideForNonLayoutFiles; + } + + public void setHideForNonLayoutFiles(boolean hideForNonLayoutFiles) { + myHideForNonLayoutFiles = hideForNonLayoutFiles; + } } }