/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* ControlMap.java
*
* Created on 24/09/2009, 11:11:00 PM
*/
package org.petah.spring.bai.gui;
import java.awt.EventQueue;
import java.awt.image.BufferedImage;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;
import org.petah.common.event.UpdateListener;
import org.petah.spring.bai.ThreadManager;
import org.petah.spring.bai.delegate.GlobalDelegate;
import org.petah.spring.bai.map.control.ControlMap;
import org.petah.spring.bai.map.control.ControlMapRenderer;
/**
*
* @author Petah
*/
public class PControlMap extends javax.swing.JPanel implements UpdateListener {
private ControlMap controlMap;
private BufferedImage image;
private Future imageFuture;
/** Creates new form ControlMap */
public PControlMap(ControlMap controlMap) {
this.controlMap = controlMap;
initComponents();
image = new BufferedImage(GlobalDelegate.getMapWidth(), GlobalDelegate.getMapHeight(), BufferedImage.TYPE_INT_RGB);
lImage.setIcon(new ImageIcon(image));
}
public void update(Object source) {
updateImage();
}
public void updateImage() {
if (imageFuture != null) {
try {
imageFuture.get();
} catch (InterruptedException ex) {
Logger.getLogger(PControlMap.class.getName()).log(Level.SEVERE, null, ex);
} catch (ExecutionException ex) {
Logger.getLogger(PControlMap.class.getName()).log(Level.SEVERE, null, ex);
}
}
imageFuture = ThreadManager.run("PControlMap.updateImage()",new Runnable() {
public void run() {
EventQueue.invokeLater(new Runnable() {
public void run() {
ControlMapRenderer.renderControlMap(controlMap, image);
updateUI();
}
});
}
});
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
toolBar = new javax.swing.JToolBar();
bRefresh = new javax.swing.JButton();
cbAutoUpdate = new javax.swing.JCheckBox();
scrollPane = new javax.swing.JScrollPane();
lImage = new javax.swing.JLabel();
setLayout(new java.awt.BorderLayout());
toolBar.setFloatable(false);
toolBar.setRollover(true);
bRefresh.setText("Refresh");
bRefresh.setFocusable(false);
bRefresh.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
bRefresh.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
bRefresh.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bRefreshActionPerformed(evt);
}
});
toolBar.add(bRefresh);
cbAutoUpdate.setText("Auto Refresh");
cbAutoUpdate.setFocusable(false);
cbAutoUpdate.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
cbAutoUpdate.setOpaque(false);
cbAutoUpdate.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
cbAutoUpdate.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cbAutoUpdateActionPerformed(evt);
}
});
toolBar.add(cbAutoUpdate);
add(toolBar, java.awt.BorderLayout.PAGE_START);
lImage.setVerticalAlignment(javax.swing.SwingConstants.TOP);
scrollPane.setViewportView(lImage);
add(scrollPane, java.awt.BorderLayout.CENTER);
}// </editor-fold>//GEN-END:initComponents
private void bRefreshActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bRefreshActionPerformed
updateImage();
}//GEN-LAST:event_bRefreshActionPerformed
private void cbAutoUpdateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbAutoUpdateActionPerformed
if (cbAutoUpdate.isSelected()) {
controlMap.addUpdateListener(this);
} else {
controlMap.removeUpdateListener(this);
}
}//GEN-LAST:event_cbAutoUpdateActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton bRefresh;
private javax.swing.JCheckBox cbAutoUpdate;
private javax.swing.JLabel lImage;
private javax.swing.JScrollPane scrollPane;
private javax.swing.JToolBar toolBar;
// End of variables declaration//GEN-END:variables
}