Package kakuro.gui

Source Code of kakuro.gui.ListSavedGameDialog$GameJPanel

package kakuro.gui;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.util.*;
import kakuro.table.ITable;
import kakuro.table.TableException;

/** Mentett játékok listáját feldobó dialógus ablak. */
public class ListSavedGameDialog extends JDialog {
  /** megnyitás */
  private JButton openButton = null;
  /** mégse */
  private final String CMD_CANCEL = "<html>M&eacute;gse</html>";
  /** megnyitás */
  private final String CMD_OPEN = "<html>Megnyit&aacute;s</html>";
  /** true ha megnyitás, false ha bezárták vagy mégse */
  private boolean valid = false;
  /** cím */
  private String title = null;
  /** állások listája */
  private java.util.List<ITable> _list = null;
  /** sorszám */
  private JLabel rowCountLabel = null;
  /** oszlopszám */
  private JLabel columnCountLabel = null;
  /** játéktábla preview */
  private GameJPanel gamePanel = null;
  /** jlist az állások listázásához */
  private JList dataList = null;

  /** Konstruktor, létrehozza a dialógust a kapott tábla állásokkal.
   *
   * @param parent szülő frame, ehhez képest pozicionálja magát
   * @param t cím
   * @param list állások listája
   * */
  public ListSavedGameDialog(JFrame parent, String t, java.util.List<ITable> list) {
    super(parent, true);
    title = t;
    _list = new ArrayList<ITable>(list);
    initComponents();
    pack();
  }
 
  /** választott állás sorszáma
   *
   * @return sorszám
   * */
  public int getSelection() {
      return dataList.getSelectedIndex();
  }

  /**
   * Swing interfész összerakása
   * */
  private void initComponents() {
        JPanel back = new JPanel();
    back.setLayout(new BoxLayout(back, BoxLayout.PAGE_AXIS));
    getContentPane().add(back);
    setTitle(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent event) {
        windowAction(CMD_CANCEL);
      }
    });
    JPanel content = new JPanel();
    content.setLayout(new BoxLayout(content, BoxLayout.LINE_AXIS));
    String[] data = new String[_list.size()];
    for (int i=0; i<_list.size(); i++) {
        ITable s = _list.get(i);
        String[] difficulties = {"K&ouml;nny&#369;", "K&ouml;zepes", "Neh&eacute;z"};
        data[i] = "<html>"+(i+1)+". "+difficulties[s.getDifficulty()]+"</html>";
    }
    dataList = new JList(data);
    dataList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    dataList.addListSelectionListener(new ListSelectionListener() {
        public void valueChanged(ListSelectionEvent e) {
      int index = dataList.getSelectedIndex();
      rowCountLabel.setText(_list.get(index).getRowCount()+"");
      columnCountLabel.setText(_list.get(index).getColumnCount()+"");
      gamePanel.load(_list.get(index));
      pack();
      repaint();
        }
    });
    JScrollPane scrollPane = new JScrollPane(dataList);
    content.add(scrollPane);
    scrollPane.setMinimumSize(new Dimension(120, 240));
    JPanel details = new JPanel();
    details.setLayout(new GridLayout(2, 2, 5, 5));
    details.add(new JLabel("<html>Sorok sz&aacute;ma</html>"));
    rowCountLabel = new JLabel("4");
    details.add(rowCountLabel);
    details.add(new JLabel("<html>Oszlopok sz&aacute;ma</html>"));
    columnCountLabel = new JLabel("4");
    details.add(columnCountLabel);
    content.add(details);
    gamePanel = new GameJPanel();
    content.add(gamePanel);
   
    back.add(content);
    JPanel buttonPanel = createButtonPanel();
    back.add(buttonPanel);
    dataList.setSelectedIndex(0);
  }

  /** Alsó gombsor összerakása
   *
   * @return gombsort tartalmazó panel
   * */
  private JPanel createButtonPanel() {
    JPanel panel = new JPanel();
    panel.setLayout(new BoxLayout(panel, 0));
    openButton = new JButton();
    openButton.setText("<html>Megnyit&aacute;s</html>");
    openButton.setActionCommand(CMD_OPEN);
    openButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent event) {
        windowAction(event);
      }
    });
    panel.add(openButton);
    panel.add(Box.createRigidArea(new Dimension(5, 0)));

    JButton cancelButton = new JButton();
    cancelButton.setText("<html>M&eacute;gse</html>");
    cancelButton.setActionCommand(CMD_CANCEL);
    cancelButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent event) {
        windowAction(event);
      }
    });
    panel.add(cancelButton);
    return panel;
  }

  /** Segédfüggvény, beállítja a kapott actionCommand alapján, hogy érvényes-e a választás, és bezárja a
   * dialógust
   *
   * @param actionCommand action amit valamelyik gomb megnyomása vált ki
   * */
  private void windowAction(Object actionCommand) {
    String cmd = null;
    if (actionCommand != null) {
      if (actionCommand instanceof ActionEvent) {
        cmd = ((ActionEvent) actionCommand).getActionCommand();
      } else {
        cmd = actionCommand.toString();
      }
    }
    if (cmd == null) {
    } else if (cmd.equals(CMD_CANCEL)) {
      valid = false;
    } else if (cmd.equals(CMD_OPEN)) {
      valid = true;
    }
    setVisible(false);
    dispose();
  }

  /** Érvényes választás volt-e. Ha bezárták X-szel az ablakot, vagy mégse, az nem érvényes.
   *
   * @return true ha megnyitás volt, false minden más esetben
   * */
  public boolean isValid() {
    return valid;
  }
 
  /** Segédpanel osztály az állás preview tárolására. Alapvetően egy feladata van:
   * négyzet alakúvá alakítani a téglalap alakú preview-t. */
  public class GameJPanel extends JPanel {
    /** táblamodell */
      ITable _table = null;
      /** preview panel */
      Gametable _panel = null;
     
      /** Alap konstruktor. átlátszóvá teszi a hátteret és beállítja a {@link kakuro.gui.SquareLayoutManager}
       * layoutmanagert. */
      public GameJPanel() {
        setOpaque(false);
        setLayout(new kakuro.gui.SquareLayoutManager());
      }
     
      /** Tábla feltöltése a preview-ba.
       *
       * @param s táblamodell
       * */
      public void load(ITable s) {
        try {
          _table = s;
          if (_panel!=null) remove(_panel);
          _panel = new Gametable(null);
          _panel.load(_table);
          _panel.setPreferredSize(new Dimension(200, 200));
          _panel.setMinimumSize(new Dimension(160, 160));
          add(_panel);
        } catch (TableException te) {
          te.printStackTrace();
        }
      }
  }
}
TOP

Related Classes of kakuro.gui.ListSavedGameDialog$GameJPanel

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.