package osm.jp.gpx.matchtime.gui;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import static osm.jp.gpx.matchtime.gui.AdjustTerra.i18n;
public class Card extends JPanel {
private static final long serialVersionUID = 9050047381377607421L;
JTabbedPane tabbe;
public JPanel mainPanel;
String title;
int backNumber = -1;
int nextNumber = -1;
public JButton nextButton; // [次へ]ボタン
public JButton backButton; // [戻る]ボタン
public Card(JTabbedPane tabbe, String title, int backNumber, int nextNumber) {
super();
this.tabbe = tabbe;
this.title = title;
this.backNumber = backNumber;
this.nextNumber = nextNumber;
// INIT_CONTROLS
this.setLayout(new BorderLayout());
//---- CENTER -----
mainPanel = new JPanel();
mainPanel.setLayout(new BorderLayout());
this.add(mainPanel, BorderLayout.CENTER);
//---- SOUTH -----
JPanel buttonPanel = new JPanel(new BorderLayout());
buttonPanel.add(Box.createVerticalStrut(10), BorderLayout.SOUTH);
buttonPanel.add(Box.createVerticalStrut(10), BorderLayout.NORTH);
this.add(buttonPanel, BorderLayout.SOUTH);
//{{REGISTER_LISTENERS
SymAction lSymAction = new SymAction();
if (nextNumber >= 0) {
nextButton = new JButton(i18n.getString("button.next"));
nextButton.setEnabled(false);
buttonPanel.add(nextButton, BorderLayout.EAST);
nextButton.addActionListener(lSymAction);
}
if (backNumber >= 0) {
backButton = new JButton(i18n.getString("button.previous"));
backButton.setEnabled(false);
buttonPanel.add(backButton, BorderLayout.WEST);
backButton.addActionListener(lSymAction);
}
//}}
}
public static JPanel packLine(JComponent[] components, JPanel panel) {
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
int max = 0;
for (JComponent component : components) {
panel.add(component);
Dimension size = component.getMaximumSize();
if (max < size.height) {
max = size.height;
}
}
Dimension size = new Dimension();
size.width = Short.MAX_VALUE;
size.height = max;
panel.setMaximumSize(size);
return panel;
}
public static JPanel packLine(JComponent component, JPanel panel) {
ArrayList<JComponent> array = new ArrayList<>();
array.add(component);
return packLine(array.toArray(new JComponent[array.size()]), panel);
}
@Override
public void setEnabled(boolean enabled) {
this.tabbe.setEnabledAt(nextNumber - 1, enabled);
}
public String getTitle() {
return this.title;
}
class SymAction implements java.awt.event.ActionListener {
@Override
public void actionPerformed(java.awt.event.ActionEvent event) {
Object object = event.getSource();
if (object == nextButton) {
nextButton_Action(event);
}
else if (object == backButton) {
backButton_Action(event);
}
}
}
/**
* [次へ]ボタンをクリックした時の動作
* @param event
*/
void nextButton_Action(ActionEvent event) {
this.tabbe.setSelectedIndex(this.nextNumber);
}
/**
* [戻る]ボタンをクリックした時の動作
* @param event
*/
void backButton_Action(ActionEvent event) {
this.tabbe.setSelectedIndex(this.backNumber);
}
}