package de.halirutan.keypromoterx.tips;

import java.awt.*;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

import com.intellij.ide.util.TipUIUtil;
import com.intellij.ui.JBColor;
import com.intellij.ui.ScrollPaneFactory;
import com.intellij.ui.SimpleTextAttributes;
import com.intellij.ui.components.JBBox;
import com.intellij.ui.components.JBLabel;
import com.intellij.util.IconUtil;
import com.intellij.util.ui.JBDimension;
import com.intellij.util.ui.JBUI;
import de.halirutan.keypromoterx.KeyPromoterBundle;
import de.halirutan.keypromoterx.KeyPromoterIcons;
import org.jetbrains.annotations.NotNull;

import static com.intellij.openapi.util.SystemInfo.isWin10OrNewer;
import static com.intellij.ui.Gray.xD0;
import static com.intellij.util.ui.UIUtil.isUnderDarcula;

/**
 * @author patrick (02.03.19).
 */
public class TipPanel extends JPanel {
  private static final JBColor DIVIDER_COLOR = new JBColor(0xd9d9d9, 0x515151);
  private static final int DEFAULT_WIDTH = 450;
  private static final int DEFAULT_HEIGHT = 200;
  private final TipUIUtil.Browser myBrowser;

  TipPanel() {
    setLayout(new BorderLayout());
    if (isWin10OrNewer && !isUnderDarcula()) {
      setBorder(JBUI.Borders.customLine(xD0, 1, 0, 0, 0));
    }
    myBrowser = TipUIUtil.createBrowser();
    myBrowser.getComponent().setBorder(JBUI.Borders.empty(8, 12));
    JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(myBrowser.getComponent(), true);
    scrollPane.setBorder(JBUI.Borders.customLine(DIVIDER_COLOR, 0, 0, 1, 0));
    add(scrollPane, BorderLayout.CENTER);

    JLabel kpxIcon = new JBLabel(IconUtil.scale(KeyPromoterIcons.KP_ICON, this, 3.0f));
    kpxIcon.setSize(128, 128);
    kpxIcon.setBorder(JBUI.Borders.empty(0, 10));
    kpxIcon.setForeground(SimpleTextAttributes.GRAY_ITALIC_ATTRIBUTES.getFgColor());

    JLabel versionLabel = new JBLabel(KeyPromoterBundle.message("kp.tool.window.name"));
    versionLabel.setFont(new Font(versionLabel.getName(), Font.BOLD, 24));
    versionLabel.setForeground(JBUI.CurrentTheme.Label.foreground(false));
    JBBox horizontalBox = JBBox.createHorizontalBox();
    horizontalBox.setAlignmentX(.5f);
    horizontalBox.add(kpxIcon);
    horizontalBox.add(versionLabel);

    add(horizontalBox, BorderLayout.NORTH);
  }

  void setMessageText(@NotNull String text) {
    myBrowser.setText(text);
  }

  @Override
  public Dimension getPreferredSize() {
    return new JBDimension(DEFAULT_WIDTH, DEFAULT_HEIGHT);
  }


}