package com.androhi.androiddrawableviewer.form;
import com.androhi.androiddrawableviewer.Constants;
import com.androhi.androiddrawableviewer.PluginConfig;
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.*;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.openapi.wm.ToolWindowManager;
import com.intellij.ui.content.Content;
import com.intellij.ui.content.ContentManager;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
public class SettingsDialog extends DialogWrapper {
private Project project;
private JPanel mainPanel;
private TextFieldWithBrowseButton resDirText;
private JCheckBox checkDrawableMdpi;
private JCheckBox checkDrawableHdpi;
private JCheckBox checkDrawableXhdpi;
private JCheckBox checkDrawableXxhdpi;
private JCheckBox checkDrawableXxxhdpi;
private JCheckBox checkMipmapMdpi;
private JCheckBox checkMipmapHdpi;
private JCheckBox checkMipmapXhdpi;
private JCheckBox checkMipmapXxhdpi;
private JCheckBox checkMipmapXxxhdpi;
private PluginConfig pluginConfig;
public SettingsDialog(Project project) {
super(project, true);
this.project = project;
setTitle("Settings");
setResizable(true);
buildViews();
init();
}
private void buildViews() {
pluginConfig = PluginConfig.getInstance(project);
if (project == null || pluginConfig == null) return;
String savedResDir = pluginConfig.getResDir();
if (savedResDir == null) {
savedResDir = project.getBasePath() + Constants.DEFAULT_RESOURCE_PATH;
}
resDirText.setText(savedResDir);
VirtualFile selectDir = VirtualFileManager.getInstance().findFileByUrl(savedResDir);
FileChooserDescriptor descriptor = new FileChooserDescriptor(false, true, false, false, false, false);
descriptor.setRoots(selectDir);
resDirText.addBrowseFolderListener(new TextBrowseFolderListener(descriptor, project));
checkDrawableMdpi.setSelected(pluginConfig.isDrawableMdpi());
checkDrawableHdpi.setSelected(pluginConfig.isDrawableHdpi());
checkDrawableXhdpi.setSelected(pluginConfig.isDrawableXhdpi());
checkDrawableXxhdpi.setSelected(pluginConfig.isDrawableXxhdpi());
checkDrawableXxxhdpi.setSelected(pluginConfig.isDrawableXxxhdpi());
checkMipmapMdpi.setSelected(pluginConfig.isMipmapMdpi());
checkMipmapHdpi.setSelected(pluginConfig.isMipmapHdpi());
checkMipmapXhdpi.setSelected(pluginConfig.isMipmapXhdpi());
checkMipmapXxhdpi.setSelected(pluginConfig.isMipmapXxhdpi());
checkMipmapXxxhdpi.setSelected(pluginConfig.isMipmapXxxhdpi());
}
@Nullable
@Override
protected JComponent createCenterPanel() {
return mainPanel;
}
@Nullable
@Override
protected ValidationInfo doValidate() {
String resDirString = resDirText.getText();
if (resDirString == null || resDirString.isEmpty()) {
return new ValidationInfo("Select resource directory.");
}
if (!checkDrawableMdpi.isSelected() && !checkDrawableHdpi.isSelected() &&
!checkDrawableXhdpi.isSelected() && !checkDrawableXxhdpi.isSelected() && !checkDrawableXxxhdpi.isSelected()) {
return new ValidationInfo("Check any box.");
}
return null;
}
@Override
protected void doOKAction() {
super.doOKAction();
String resDirString = resDirText.getText();
pluginConfig.setResDir(resDirString);
pluginConfig.setDrawableMdpi(checkDrawableMdpi.isSelected());
pluginConfig.setDrawableHdpi(checkDrawableHdpi.isSelected());
pluginConfig.setDrawableXhdpi(checkDrawableXhdpi.isSelected());
pluginConfig.setDrawableXxhdpi(checkDrawableXxhdpi.isSelected());
pluginConfig.setDrawableXxxhdpi(checkDrawableXxxhdpi.isSelected());
pluginConfig.setMipmapMdpi(checkMipmapMdpi.isSelected());
pluginConfig.setMipmapHdpi(checkMipmapHdpi.isSelected());
pluginConfig.setMipmapXhdpi(checkMipmapXhdpi.isSelected());
pluginConfig.setMipmapXxhdpi(checkMipmapXxhdpi.isSelected());
pluginConfig.setMipmapXxxhdpi(checkMipmapXxxhdpi.isSelected());
resetContent(project);
}
private void resetContent(Project project) {
DrawableViewer drawableViewer = new DrawableViewer(project);
ContentManager contentManager = ToolWindowManager.getInstance(project)
.getToolWindow(Constants.TOOL_WINDOW_ID).getContentManager();
Content content = contentManager.getFactory().createContent(drawableViewer, null, false);
contentManager.removeAllContents(true);
contentManager.addContent(content);
}
}