Package pathfinder.gui.document.monster

Source Code of pathfinder.gui.document.monster.PanelCreateMonster

package pathfinder.gui.document.monster;

import generic.DocumentTypeConstant;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.border.LineBorder;

import net.alteiar.beans.media.ImageBean;
import net.alteiar.campaign.CampaignClient;
import net.alteiar.campaign.player.fileChooser.StaticDialog;
import net.alteiar.campaign.player.gui.documents.PanelDocumentBuilder;
import net.alteiar.campaign.player.logger.ExceptionTool;
import net.alteiar.newversion.shared.bean.BasicBean;
import net.alteiar.shared.ImageUtil;
import net.alteiar.utils.file.images.SerializableImage;
import net.alteiar.utils.file.images.TransfertImage;
import pathfinder.bean.unit.monster.MonsterBuilder;
import pathfinder.bean.unit.monster.MonsterManager;

public class PanelCreateMonster extends PanelDocumentBuilder {
  private static final long serialVersionUID = 1L;

  private TransfertImage transfertImage;

  private final JLabel lblAvatar;
  private final JTextField textFieldName;
  private final JLabel lblHp;
  private final JTextField textFieldHp;
  private final PanelAc panelAc;
  private final PanelSaveRoll panelSave;

  public PanelCreateMonster() {
    GridBagLayout gridBagLayout = new GridBagLayout();
    gridBagLayout.columnWidths = new int[] { 0, 0, 0, 0, 0 };
    gridBagLayout.rowHeights = new int[] { 0, 0, 0, 0, 0, 0 };
    gridBagLayout.columnWeights = new double[] { 0.0, 0.0, 0.0, 0.0,
        Double.MIN_VALUE };
    gridBagLayout.rowWeights = new double[] { 0.0, 0.0, 0.0, 0.0, 0.0,
        Double.MIN_VALUE };
    setLayout(gridBagLayout);

    lblAvatar = new JLabel("");
    lblAvatar.setBorder(new LineBorder(Color.BLACK, 2));
    lblAvatar.addMouseListener(new MouseAdapter() {
      @Override
      public void mouseClicked(MouseEvent e) {
        selectAvatar();
      }
    });
    lblAvatar.setMinimumSize(new Dimension(64, 64));
    lblAvatar.setMaximumSize(new Dimension(64, 64));
    lblAvatar.setPreferredSize(new Dimension(64, 64));
    GridBagConstraints gbc_lblAvatar = new GridBagConstraints();
    gbc_lblAvatar.fill = GridBagConstraints.BOTH;
    gbc_lblAvatar.gridheight = 3;
    gbc_lblAvatar.gridwidth = 2;
    gbc_lblAvatar.insets = new Insets(0, 0, 5, 5);
    gbc_lblAvatar.gridx = 0;
    gbc_lblAvatar.gridy = 0;
    add(lblAvatar, gbc_lblAvatar);

    JLabel lblNom = new JLabel("Nom:");
    GridBagConstraints gbc_lblNom = new GridBagConstraints();
    gbc_lblNom.anchor = GridBagConstraints.EAST;
    gbc_lblNom.insets = new Insets(0, 0, 5, 5);
    gbc_lblNom.gridx = 2;
    gbc_lblNom.gridy = 0;
    add(lblNom, gbc_lblNom);

    textFieldName = new JTextField();
    GridBagConstraints gbc_textFieldName = new GridBagConstraints();
    gbc_textFieldName.insets = new Insets(0, 0, 5, 0);
    gbc_textFieldName.fill = GridBagConstraints.HORIZONTAL;
    gbc_textFieldName.gridx = 3;
    gbc_textFieldName.gridy = 0;
    add(textFieldName, gbc_textFieldName);
    textFieldName.setColumns(10);

    lblHp = new JLabel("PV:");
    GridBagConstraints gbc_lblHp = new GridBagConstraints();
    gbc_lblHp.anchor = GridBagConstraints.EAST;
    gbc_lblHp.insets = new Insets(0, 0, 5, 5);
    gbc_lblHp.gridx = 2;
    gbc_lblHp.gridy = 1;
    add(lblHp, gbc_lblHp);

    textFieldHp = new JTextField();
    GridBagConstraints gbc_textFieldHp = new GridBagConstraints();
    gbc_textFieldHp.insets = new Insets(0, 0, 5, 0);
    gbc_textFieldHp.fill = GridBagConstraints.HORIZONTAL;
    gbc_textFieldHp.gridx = 3;
    gbc_textFieldHp.gridy = 1;
    add(textFieldHp, gbc_textFieldHp);
    textFieldHp.setColumns(10);

    panelAc = new PanelAc();
    GridBagConstraints gbc_panel = new GridBagConstraints();
    gbc_panel.gridheight = 2;
    gbc_panel.insets = new Insets(0, 0, 5, 0);
    gbc_panel.gridwidth = 2;
    gbc_panel.fill = GridBagConstraints.BOTH;
    gbc_panel.gridx = 2;
    gbc_panel.gridy = 2;
    add(panelAc, gbc_panel);

    panelSave = new PanelSaveRoll();
    GridBagConstraints gbc_panelSave = new GridBagConstraints();
    gbc_panelSave.gridwidth = 2;
    gbc_panelSave.insets = new Insets(0, 0, 0, 5);
    gbc_panelSave.fill = GridBagConstraints.BOTH;
    gbc_panelSave.gridx = 2;
    gbc_panelSave.gridy = 4;
    add(panelSave, gbc_panelSave);
  }

  private void selectAvatar() {
    File imageFile = StaticDialog.getSelectedImageFile(this);
    if (imageFile != null) {
      try {
        transfertImage = new SerializableImage(imageFile);
      } catch (IOException e) {
        ExceptionTool.showError(e);
      }
    }
    revalidateImage();
  }

  private void revalidateImage() {
    if (transfertImage != null) {
      BufferedImage img;
      try {
        img = transfertImage.restoreImage();
        if (img != null) {
          this.lblAvatar.setIcon(new ImageIcon(ImageUtil.resizeImage(
              img, 64, 64)));
        }
      } catch (IOException e) {
        ExceptionTool.showError(e);
      }
    } else {
      this.lblAvatar.setIcon(null);
    }
  }

  @Override
  public String getDocumentBuilderName() {
    return "Monstre";
  }

  @Override
  public String getDocumentBuilderDescription() {
    return "Cr\u00E9er un monstre";
  }

  @Override
  public Boolean isDataValid() {
    return transfertImage != null;
  }

  @Override
  public String getInvalidMessage() {
    return "Aucun avatar selectionn\u00E9e";
  }

  @Override
  public BasicBean buildDocument() {
    ImageBean image = new ImageBean(transfertImage);

    String name = textFieldName.getText();
    Integer hp = Integer.valueOf(textFieldHp.getText());

    Integer cr = 1;

    Integer ac = panelAc.getAc();
    Integer acFlatFooted = panelAc.getAcFlatFooted();
    Integer acTouch = panelAc.getAcTouch();

    Integer reflex = 0;
    Integer fortitude = 0;
    Integer will = 0;

    MonsterBuilder monster = new MonsterBuilder(name, image.getId(), hp,
        cr, ac, acFlatFooted, acTouch, reflex, fortitude, will);

    // save the image as perma bean
    CampaignClient.getInstance().savePerma(image);
    MonsterManager.getInstance().addMonsterBuilder(monster);

    transfertImage = null;
    textFieldName.setText("");

    return null;
  }

  @Override
  public String getDocumentName() {
    return null;
  }

  @Override
  public String getDocumentType() {
    return DocumentTypeConstant.MONSTER;
  }

  @Override
  public void reset() {
    // TODO should move else where
  }
}
TOP

Related Classes of pathfinder.gui.document.monster.PanelCreateMonster

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.