Package kakuro.gui

Source Code of kakuro.gui.GuiAncestor

package kakuro.gui;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.Shape;
import java.util.HashMap;
import javax.swing.AbstractButton;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JRootPane;
import javax.swing.JToolBar;
import javax.swing.KeyStroke;
import kakuro.server.IServer;

/** A Skeleton szerkesztő és a főképernyő őse, közös szolgáltatásokat tartalmazza. */
public class GuiAncestor {
  /** JFrame */
  protected JFrame _frame = null;
  /** toolbar */
  protected JToolBar _toolbar = null;
  /** szerver */
  protected IServer _server = null;
  /** nemcsinálsemmit dummy action */
  protected Action nothingAction;
  /** Menüsor */
  protected JMenuBar _menubar = null;
  /** Gombokat tartalmazó map, név alapján tartalmazza őket */
  protected HashMap<String, AbstractButton> _buttonMap = new HashMap<String, AbstractButton>();

  /** Alap konstruktor */
  public GuiAncestor() {
    super();
  }

  /** Kapott képet a kapott komponensre rárajzolja, ha kisebb a kép, mint a komponens, akkor mozaikszerűen
   * ismételve.
   *
   * @param g grafika
   * @param me dekorálandó komponens
   * @param image kép
   * */
  protected void drawTile(Graphics g, JComponent me, Image image) {
    int tileHeight = image.getHeight(me);
    int tileWidth = image.getWidth(me);
    Rectangle rb = new Rectangle(0, 0, 1, 1);
    me.getBounds(rb);
    Insets ri = new Insets(0, 0, 0, 0);
    Insets riv = me.getInsets(ri);
    rb.translate(riv.left, riv.top);
    rb.width -= (riv.left + riv.right);
    rb.height -= (riv.top + riv.bottom);
    Shape ccache = g.getClip();
    g.clipRect(rb.x, rb.y, rb.width, rb.height);
    int xp, yp;
    for (yp = rb.y; yp < rb.y + rb.height; yp += tileHeight) {
      for (xp = rb.x; xp < rb.x + rb.width; xp += tileWidth) {
        g.drawImage(image, xp, yp, Color.WHITE, null);
      }
    }
    g.setClip(ccache);
  }

  /** Action-öket betölt a toolbar-ba.
   *
   * @param actions action-ök tömbje
   * */
  protected void loadIntoToolbar(GuiAction[] actions) {
    JButton button = null;
    for (int i = 0; i < actions.length; i++) {
      button = new JButton(actions[i]);
      button.setOpaque(false);
      button.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
      button.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
      if (button.getIcon() != null) {
        //button.setText("");
      }
      _toolbar.add(button);
      registerAction(actions[i]);
      _buttonMap.put(actions[i].getDescription(), button);
    }
  }

  /** Kapott action-t beregisztrálja a különféle input map-ekbe.
   *
   * @param a action
   * */
  protected void registerAction(Action a) {
    Object o = new Object();
    KeyStroke key = (KeyStroke) a.getValue(Action.ACCELERATOR_KEY);
    _frame.getRootPane().getInputMap(
        JRootPane.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(key, o);
    _frame.getRootPane().getInputMap(JRootPane.WHEN_IN_FOCUSED_WINDOW).put(
        key, o);
    _frame.getRootPane().getActionMap().put(o, a);
  }

  /** Kapott action-öket belepakolja a kapott JMenu menübe
   *
   * @param actions action-ök
   * @param menu menü
   * */
  protected void loadIntoMenu(Action[] actions, JMenu menu) {
    JMenuItem menuitem = null;
    for (int i = 0; i < actions.length; i++) {
      menuitem = new JMenuItem(actions[i]);
      menuitem.setIcon(((GuiAction) actions[i]).getSmallIcon());
      menuitem.setMnemonic(((GuiAction) actions[i]).getMnemonic()
          .intValue());
      menu.add(menuitem);
    }
  }

  /** Dummy teszt függvény, tesztelésre. */
  protected void nothingAction() {
  }
}
TOP

Related Classes of kakuro.gui.GuiAncestor

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.