Package com.badlogic.gdx.tools.flame

Source Code of com.badlogic.gdx.tools.flame.TextureAtlasPanel

package com.badlogic.gdx.tools.flame;

import java.awt.Component;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JPanel;

import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.graphics.g2d.TextureAtlas.AtlasRegion;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.graphics.glutils.FileTextureData;
import com.badlogic.gdx.utils.Array;

/** @author Inferno */
public class TextureAtlasPanel extends JPanel {
  JPanel regionsPanel;
  TextureAtlas atlas;
 
  public TextureAtlasPanel(){
    initializeComponents();
  }

  private void initializeComponents () {
    setLayout(new GridBagLayout());
    JButton backwardButton, forwardButton;
   
    add(backwardButton = new JButton("<"), new GridBagConstraints(0, 0, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
      new Insets(0, 0, 0, 0), 0, 0));
    add(regionsPanel = new JPanel(), new GridBagConstraints(1, 0, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
      new Insets(0, 0, 0, 0), 0, 0));
    add(forwardButton = new JButton(">"), new GridBagConstraints(2, 0, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
      new Insets(0, 0, 0, 0), 0, 0));
   
    regionsPanel.setLayout(new CustomCardLayout());
   
    backwardButton.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed (ActionEvent arg0) {
        if(atlas == null) return;
        CustomCardLayout layout = (CustomCardLayout)regionsPanel.getLayout();
        layout.previous(regionsPanel);
      }
    });
   
    forwardButton.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed (ActionEvent arg0) {
        if(atlas == null) return;
        CustomCardLayout layout = (CustomCardLayout)regionsPanel.getLayout();
        layout.next(regionsPanel);
      }
    })
  }
 
  public void setAtlas(TextureAtlas atlas){
    if(atlas == this.atlas) return;
    regionsPanel.removeAll();
     Array<AtlasRegion> atlasRegions = atlas.getRegions();
     CustomCardLayout layout = (CustomCardLayout)regionsPanel.getLayout();
    Array<TextureRegion> regions = new Array<TextureRegion>();
    for(Texture texture : atlas.getTextures()){
      FileTextureData file = (FileTextureData)texture.getTextureData();
      regionsPanel.add(new TexturePanel( texture, getRegions(texture, atlasRegions, regions)));
    }
    layout.first(regionsPanel);
    this.atlas = atlas;
  }
 
  protected Array<TextureRegion> getRegions (Texture texture, Array<AtlasRegion> atlasRegions, Array<TextureRegion> out) {
    out.clear();
    for(TextureRegion region : atlasRegions){
      if(region.getTexture() == texture)
        out.add(region);
    }
    return out;
  }

  public Array<TextureRegion> getSelectedRegions () {
    CustomCardLayout layout = (CustomCardLayout)regionsPanel.getLayout();
    TexturePanel panel = getCurrentRegionPanel();
    return panel.selectedRegions;
  }
 
  public TexturePanel getCurrentRegionPanel(){
    CustomCardLayout layout = (CustomCardLayout)regionsPanel.getLayout();
    return layout.getCurrentCard(regionsPanel);
  }

  public void clearSelection () {
    for(Component regionPanel : regionsPanel.getComponents())
      ((TexturePanel)regionPanel).clearSelection();
  }
 
}
TOP

Related Classes of com.badlogic.gdx.tools.flame.TextureAtlasPanel

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.