180 lines
8.0 KiB
Java
180 lines
8.0 KiB
Java
/*
|
|
* MIT License
|
|
*
|
|
* Copyright (c) 2018-2019 Daniel Cortes
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
* of this software and associated documentation files (the "Software"), to deal
|
|
* in the Software without restriction, including without limitation the rights
|
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
* copies of the Software, and to permit persons to whom the Software is
|
|
* furnished to do so, subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be included in all
|
|
* copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
* SOFTWARE.
|
|
*/
|
|
|
|
package danielcortes.xyz.views;
|
|
|
|
import com.intellij.uiDesigner.core.GridConstraints;
|
|
import com.intellij.uiDesigner.core.GridLayoutManager;
|
|
import com.intellij.uiDesigner.core.Spacer;
|
|
import danielcortes.xyz.views.components.YearSpinnerModel;
|
|
|
|
import javax.swing.*;
|
|
import java.awt.*;
|
|
import java.awt.event.KeyEvent;
|
|
import java.awt.event.WindowAdapter;
|
|
import java.awt.event.WindowEvent;
|
|
import java.time.LocalDate;
|
|
import java.util.ArrayList;
|
|
|
|
public class MonthSelectDialog extends JDialog {
|
|
private JPanel contentPane;
|
|
private JButton buttonOK;
|
|
private JButton buttonCancel;
|
|
private JComboBox<String> monthCombo;
|
|
private JSpinner yearSpinner;
|
|
|
|
private ArrayList<String> months;
|
|
|
|
private boolean acepted;
|
|
|
|
public MonthSelectDialog(JComponent parent) {
|
|
$$$setupUI$$$();
|
|
setContentPane(contentPane);
|
|
setModalityType(ModalityType.APPLICATION_MODAL);
|
|
getRootPane().setDefaultButton(buttonOK);
|
|
|
|
|
|
buttonOK.addActionListener(e -> onOK());
|
|
|
|
buttonCancel.addActionListener(e -> onCancel());
|
|
|
|
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
|
|
addWindowListener(new WindowAdapter() {
|
|
public void windowClosing(WindowEvent e) {
|
|
onCancel();
|
|
}
|
|
});
|
|
|
|
contentPane.registerKeyboardAction(e -> onCancel(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
|
|
|
|
pack();
|
|
setLocationRelativeTo(parent);
|
|
setVisible(true);
|
|
}
|
|
|
|
private void onOK() {
|
|
this.acepted = true;
|
|
dispose();
|
|
}
|
|
|
|
private void onCancel() {
|
|
this.acepted = false;
|
|
dispose();
|
|
}
|
|
|
|
public boolean isAcepted() {
|
|
return this.acepted;
|
|
}
|
|
|
|
public LocalDate getMonth() {
|
|
int year = Integer.valueOf((String) yearSpinner.getValue());
|
|
int month = this.months.indexOf(this.monthCombo.getSelectedItem()) + 1;
|
|
|
|
LocalDate monthDate = LocalDate.of(year, month, 1);
|
|
return monthDate;
|
|
}
|
|
|
|
/**
|
|
* Method generated by IntelliJ IDEA GUI Designer
|
|
* >>> IMPORTANT!! <<<
|
|
* DO NOT edit this method OR call it in your code!
|
|
*
|
|
* @noinspection ALL
|
|
*/
|
|
private void $$$setupUI$$$() {
|
|
createUIComponents();
|
|
contentPane = new JPanel();
|
|
contentPane.setLayout(new GridLayoutManager(2, 1, new Insets(10, 10, 10, 10), -1, -1));
|
|
final JPanel panel1 = new JPanel();
|
|
panel1.setLayout(new GridLayoutManager(1, 2, new Insets(0, 0, 0, 0), -1, -1));
|
|
contentPane.add(panel1, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, 1, null, null, null, 0, false));
|
|
final Spacer spacer1 = new Spacer();
|
|
panel1.add(spacer1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, 0, false));
|
|
final JPanel panel2 = new JPanel();
|
|
panel2.setLayout(new GridLayoutManager(1, 2, new Insets(0, 0, 0, 0), -1, -1, true, false));
|
|
panel1.add(panel2, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false));
|
|
buttonOK = new JButton();
|
|
buttonOK.setText("OK");
|
|
panel2.add(buttonOK, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
|
|
buttonCancel = new JButton();
|
|
buttonCancel.setText("Cancelar");
|
|
panel2.add(buttonCancel, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
|
|
final JPanel panel3 = new JPanel();
|
|
panel3.setLayout(new GridLayoutManager(3, 2, new Insets(0, 0, 0, 0), -1, -1));
|
|
contentPane.add(panel3, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false));
|
|
final JLabel label1 = new JLabel();
|
|
label1.setText("Mes");
|
|
panel3.add(label1, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
|
|
panel3.add(monthCombo, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
|
|
final JLabel label2 = new JLabel();
|
|
label2.setText("Año");
|
|
panel3.add(label2, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
|
|
panel3.add(yearSpinner, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
|
|
final JLabel label3 = new JLabel();
|
|
label3.setText("Seleccione Mes y Año");
|
|
panel3.add(label3, new GridConstraints(0, 0, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
|
|
}
|
|
|
|
/**
|
|
* @noinspection ALL
|
|
*/
|
|
public JComponent $$$getRootComponent$$$() {
|
|
return contentPane;
|
|
}
|
|
|
|
private void createUIComponents() {
|
|
createYearSpinner();
|
|
createMonthCombo();
|
|
}
|
|
|
|
private void createYearSpinner() {
|
|
SpinnerModel model = new YearSpinnerModel();
|
|
this.yearSpinner = new JSpinner();
|
|
this.yearSpinner.setModel(model);
|
|
((JSpinner.DefaultEditor) this.yearSpinner.getEditor()).getTextField().setEditable(true);
|
|
}
|
|
|
|
private void createMonthCombo() {
|
|
months = new ArrayList<>();
|
|
months.add("Enero");
|
|
months.add("Febrero");
|
|
months.add("Marzo");
|
|
months.add("Abril");
|
|
months.add("Mayo");
|
|
months.add("Junio");
|
|
months.add("Julio");
|
|
months.add("Agosto");
|
|
months.add("Septiembre");
|
|
months.add("Octubre");
|
|
months.add("Noviembre");
|
|
months.add("Diciembre");
|
|
|
|
monthCombo = new JComboBox<>();
|
|
for (String month : months) {
|
|
monthCombo.addItem(month);
|
|
}
|
|
|
|
}
|
|
}
|