should be able to not hide preview panel when user switched to non-layout file

This commit is contained in:
Eugene Kudelevsky
2011-11-24 20:53:59 +04:00
parent 1361b02dc9
commit f5c35107ad
3 changed files with 38 additions and 5 deletions
@@ -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();
@@ -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;
}
@@ -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;
}
}
}