import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JPanel;
import javax.swing.JToolBar;
public class ButtonsToolBar extends JToolBar {
private ModelObservable model;
private final GenerationScheduler sched;
private JButton play;
private JButton pause;
public ButtonsToolBar( ModelObservable mod, final GenerationScheduler sched){
this.model=mod;
this.sched=sched;
this.setLayout(new FlowLayout(FlowLayout.LEFT));
this.setFloatable(false);
this.setRollover(true);
addGenerationButton();
play=makeNavigationButton("Play24","Play","Automatisch abspielen","abspielen",new ActionListener(){
public void actionPerformed( ActionEvent e){
sched.start();
pause.setEnabled(true);
play.setEnabled(false);
}
}
);
add(play);
pause=makeNavigationButton("Pause24","Pause","pausieren","pause",new ActionListener(){
public void actionPerformed( ActionEvent e){
sched.stop();
pause.setEnabled(false);
play.setEnabled(true);
}
}
);
pause.setEnabled(false);
add(pause);
add(makeNavigationButton("StepForward24","SingleStep","Einzelschritt","Einzelschritt",new ActionListener(){
public void actionPerformed( ActionEvent e){
model.nextGeneration();
sched.stop();
pause.setEnabled(false);
play.setEnabled(true);
model.notifyObservers();
}
}
));
}
private void addGenerationButton() {
add(makeNavigationButton("Stop24","ClearField","Feld löschen","löschen",new ActionListener(){
public void actionPerformed( ActionEvent e){
int x=model.getPlayground().length;
int y=model.getPlayground()[0].length;
for (int ix=0; ix < x; ix++) {
for (int iy=0; iy < y; iy++) {
model.setLifeform(ix,iy,0);
}
}
sched.stop();
pause.setEnabled(false);
play.setEnabled(true);
model.notifyObservers();
}
}
));
}
public void update(){
}
/**
* @param imageNamename of the image in folder without ".gif"
* @param actionCommandstring that identifies the button, does not matter
* @param toolTipTexttool Tip
* @param altTexttext, that will be displayed if the image does not work
* @param actActionListener that will be called when the button is pressed
* @return
*/
protected JButton makeNavigationButton( String imageName, String actionCommand, String toolTipText, String altText, ActionListener act){
String imgLocation="/ressources/images/" + imageName + ".gif";
URL imageURL=Main.class.getResource(imgLocation);
JButton button=new JButton();
button.setActionCommand(actionCommand);
button.setToolTipText(toolTipText);
button.addActionListener(act);
if (imageURL != null) {
button.setIcon(new ImageIcon(imageURL,altText));
}
else {
button.setText(altText);
System.err.println("Resource not found: " + imgLocation);
}
return button;
}
}