Newer
Older
adjustgpx-gui / src / main / java / osm / jp / gpx / matchtime / gui / Card.java
@haya4 haya4 on 8 Mar 2020 3 KB JDK1.8
  1. package osm.jp.gpx.matchtime.gui;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Dimension;
  5. import java.awt.event.ActionEvent;
  6. import java.util.ArrayList;
  7. import javax.swing.Box;
  8. import javax.swing.BoxLayout;
  9. import javax.swing.JButton;
  10. import javax.swing.JComponent;
  11. import javax.swing.JPanel;
  12. import javax.swing.JTabbedPane;
  13. import static osm.jp.gpx.matchtime.gui.AdjustTerra.i18n;
  14.  
  15. public class Card extends JPanel {
  16. private static final long serialVersionUID = 9050047381377607421L;
  17. JTabbedPane tabbe;
  18. public JPanel mainPanel;
  19. String title;
  20. int backNumber = -1;
  21. int nextNumber = -1;
  22. public JButton nextButton; // [次へ]ボタン
  23. public JButton backButton; // [戻る]ボタン
  24. public Card(JTabbedPane tabbe, String title, int backNumber, int nextNumber) {
  25. super();
  26. this.tabbe = tabbe;
  27. this.title = title;
  28. this.backNumber = backNumber;
  29. this.nextNumber = nextNumber;
  30.  
  31. // INIT_CONTROLS
  32. this.setLayout(new BorderLayout());
  33. //---- CENTER -----
  34. mainPanel = new JPanel();
  35. mainPanel.setLayout(new BorderLayout());
  36. this.add(mainPanel, BorderLayout.CENTER);
  37. //---- SOUTH -----
  38. JPanel buttonPanel = new JPanel(new BorderLayout());
  39. buttonPanel.add(Box.createVerticalStrut(10), BorderLayout.SOUTH);
  40. buttonPanel.add(Box.createVerticalStrut(10), BorderLayout.NORTH);
  41. this.add(buttonPanel, BorderLayout.SOUTH);
  42. //{{REGISTER_LISTENERS
  43. SymAction lSymAction = new SymAction();
  44. if (nextNumber >= 0) {
  45. nextButton = new JButton(i18n.getString("button.next"));
  46. nextButton.setEnabled(false);
  47. buttonPanel.add(nextButton, BorderLayout.EAST);
  48. nextButton.addActionListener(lSymAction);
  49. }
  50.  
  51. if (backNumber >= 0) {
  52. backButton = new JButton(i18n.getString("button.previous"));
  53. backButton.setEnabled(false);
  54. buttonPanel.add(backButton, BorderLayout.WEST);
  55. backButton.addActionListener(lSymAction);
  56. }
  57. //}}
  58. }
  59. public static JPanel packLine(JComponent[] components, JPanel panel) {
  60. panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
  61. int max = 0;
  62. for (JComponent component : components) {
  63. panel.add(component);
  64. Dimension size = component.getMaximumSize();
  65. if (max < size.height) {
  66. max = size.height;
  67. }
  68. }
  69. Dimension size = new Dimension();
  70. size.width = Short.MAX_VALUE;
  71. size.height = max;
  72. panel.setMaximumSize(size);
  73. return panel;
  74. }
  75.  
  76. public static JPanel packLine(JComponent component, JPanel panel) {
  77. ArrayList<JComponent> array = new ArrayList<>();
  78. array.add(component);
  79. return packLine(array.toArray(new JComponent[array.size()]), panel);
  80. }
  81.  
  82. @Override
  83. public void setEnabled(boolean enabled) {
  84. this.tabbe.setEnabledAt(nextNumber - 1, enabled);
  85. }
  86. public String getTitle() {
  87. return this.title;
  88. }
  89.  
  90. class SymAction implements java.awt.event.ActionListener {
  91. @Override
  92. public void actionPerformed(java.awt.event.ActionEvent event) {
  93. Object object = event.getSource();
  94. if (object == nextButton) {
  95. nextButton_Action(event);
  96. }
  97. else if (object == backButton) {
  98. backButton_Action(event);
  99. }
  100. }
  101. }
  102. /**
  103. * [次へ]ボタンをクリックした時の動作
  104. * @param event
  105. */
  106. void nextButton_Action(ActionEvent event) {
  107. this.tabbe.setSelectedIndex(this.nextNumber);
  108. }
  109.  
  110. /**
  111. * [戻る]ボタンをクリックした時の動作
  112. * @param event
  113. */
  114. void backButton_Action(ActionEvent event) {
  115. this.tabbe.setSelectedIndex(this.backNumber);
  116. }
  117. }