package com.androhi.androiddrawableviewer.form;
import com.androhi.androiddrawableviewer.Constants;
import com.androhi.androiddrawableviewer.model.DrawableModel;
import com.androhi.androiddrawableviewer.util.IconUtils;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.DialogWrapper;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import javax.swing.border.SoftBevelBorder;
import java.awt.*;
import java.util.List;
public class DetailDisplayDialog extends DialogWrapper {
private JPanel mainPanel;
private SpringLayout layout;
public DetailDisplayDialog(@Nullable Project project, DrawableModel drawableModel) {
super(project, true);
layout = new SpringLayout();
mainPanel.setLayout(layout);
mainPanel.setMinimumSize(new Dimension(360, 160));
setTitle(drawableModel.getFileName());
createContent(drawableModel);
init();
}
private void createContent(DrawableModel model) {
if (model == null) return;
String fileName = model.getFileName();
String baseDir = model.getResourceDirectory();
// set image from drawable
List<String> drawableDensityList = model.getDrawableDensityList();
addDisplayImage(baseDir, fileName, Constants.DRAWABLE_PREFIX, drawableDensityList);
// set image from mipmap
List<String> mipmapDensityList = model.getMipmapDensityList();
addDisplayImage(baseDir, fileName, Constants.MIPMAP_PREFIX, mipmapDensityList);
}
private void addDisplayImage(String baseDir, String fileName, String densityPrefix, List<String> densityList) {
if (densityList == null || densityList.size() == 0) {
return;
}
Component oldComponent = null;
for (String density : densityList) {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
// Label
JLabel densityLabel = new JLabel();
densityLabel.setText(density);
densityLabel.setHorizontalAlignment(JLabel.CENTER);
densityLabel.setBorder(new EmptyBorder(0, 0, 4, 0));
// Image
JLabel iconLabel = new JLabel();
String filePath = baseDir + Constants.PATH_SEPARATOR +
densityPrefix + density + Constants.PATH_SEPARATOR + fileName;
Icon icon = IconUtils.createOriginalIcon(filePath);
iconLabel.setIcon(icon);
iconLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
panel.add(densityLabel, BorderLayout.PAGE_START);
panel.add(iconLabel, BorderLayout.CENTER);
String e2 = oldComponent == null ? SpringLayout.WEST : SpringLayout.EAST;
Component c2 = oldComponent == null ? mainPanel : oldComponent;
layout.putConstraint(SpringLayout.NORTH, panel, 8, SpringLayout.NORTH, mainPanel);
layout.putConstraint(SpringLayout.WEST, panel, 16, e2, c2);
mainPanel.add(panel);
oldComponent = panel;
}
}
@Nullable
@Override
protected JComponent createCenterPanel() {
return mainPanel;
}
@NotNull
@Override
protected Action[] createActions() {
return new Action[]{new DialogWrapperExitAction("OK", OK_EXIT_CODE)};
}
}