/*
* AQP Project
* http://http://code.google.com/p/aqp-project/
* Alexandre Gomez - Clément Troesch - Fabrice Latterner
*/
package com.aqpproject.tools.preprocessor;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.backends.jogl.JoglApplication;
import com.badlogic.gdx.tiledmappacker.TiledMapPacker;
import com.badlogic.gdx.tools.imagepacker.TexturePacker.Settings;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
/**
*
* @author Alexandre, Clement, Fabrice
*/
public class JPacker extends JFrame {
public JPacker() {
super("Tiled Map Packer");
initialize();
}
public void initialize() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
m_jpInput = new JPanel(new FlowLayout());
m_jtfInput = new JTextField(20);
m_jbInput = new JButton("...");
m_jpInput.add(new JLabel("Input Folder"));
m_jpInput.add(m_jtfInput);
m_jpInput.add(m_jbInput);
add(m_jpInput, BorderLayout.NORTH);
m_jbInput.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
selectInputFolder();
}
});
m_jpOutput = new JPanel(new FlowLayout());
m_jtfOutput = new JTextField(20);
m_jbOutput = new JButton("...");
m_jpOutput.add(new JLabel("Output Folder"));
m_jpOutput.add(m_jtfOutput);
m_jpOutput.add(m_jbOutput);
add(m_jpOutput, BorderLayout.CENTER);
m_jbOutput.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
selectOutputFolder();
}
});
m_jpGenerate = new JPanel();
m_jbGenerate = new JButton("Generate");
m_jpGenerate.add(m_jbGenerate);
add(m_jpGenerate, BorderLayout.SOUTH);
m_jbGenerate.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
generate();
}
});
pack();
setLocationRelativeTo(null);
}
private void selectInputFolder() {
JFileChooser jfc = new JFileChooser(m_jtfInput.getText());
jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int res = jfc.showOpenDialog(this);
if (res == JFileChooser.APPROVE_OPTION) {
m_jtfInput.setText(jfc.getSelectedFile().getAbsolutePath());
}
}
private void selectOutputFolder() {
JFileChooser jfc = new JFileChooser(m_jtfOutput.getText());
jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int res = jfc.showOpenDialog(this);
if (res == JFileChooser.APPROVE_OPTION) {
m_jtfOutput.setText(jfc.getSelectedFile().getAbsolutePath());
}
}
private void generate() {
File tmxFile, inputDir, outputDir;
Settings settings = new Settings();
settings.maxWidth = 2048;
settings.maxHeight = 2048;
// Create a new JoglApplication so that Gdx stuff works properly
new JoglApplication(new ApplicationListener() {
@Override
public void create() {
}
@Override
public void dispose() {
}
@Override
public void pause() {
}
@Override
public void render() {
}
@Override
public void resize(int width, int height) {
}
@Override
public void resume() {
}
}, "", 0, 0, false);
TiledMapPacker packer = new TiledMapPacker();
inputDir = new File(m_jtfInput.getText());
outputDir = new File(m_jtfOutput.getText());
if (!inputDir.exists()) {
throw new RuntimeException("Input directory does not exist");
}
try {
packer.processMap(inputDir, outputDir, settings);
} catch (IOException ex) {
Logger.getLogger(JPacker.class.getName()).log(Level.SEVERE, null, ex);
}
System.exit(0);
}
/////////////////////////////////////////
// Attributes
/////////////////////////////////////////
private JTextField m_jtfInput;
private JTextField m_jtfOutput;
private JPanel m_jpInput;
private JPanel m_jpOutput;
private JButton m_jbInput;
private JButton m_jbOutput;
private JPanel m_jpGenerate;
private JButton m_jbGenerate;
}