} else {
e.getWindow().dispose();
}
}
});
final Recurso r = (rec == null) ? null : RecursoConsultas.get(rec
.getId());
if (r != null) {
setTitle(i18n.getString("Resources.summary.titleWindow") + " "
+ r.getIdentificador());
} else {
setTitle(i18n.getString("Resources.summary.titleWindow.new"));
}
setIconImage(getBasicWindow().getFrame().getIconImage());
JPanel base = new JPanel();
base.setBackground(Color.WHITE);
base.setLayout(new BoxLayout(base, BoxLayout.Y_AXIS));
// Icono del titulo
JPanel title = new JPanel(new FlowLayout(FlowLayout.LEADING));
title.setOpaque(false);
JLabel labelTitulo = null;
if (r != null) {
labelTitulo = new JLabel(i18n.getString("Resources.summary"),
LogicConstants.getIcon("tittleficha_icon_recurso"),
JLabel.LEFT);
} else {
labelTitulo = new JLabel(
i18n.getString("Resources.cabecera.nuevo"),
LogicConstants.getIcon("tittleficha_icon_recurso"),
JLabel.LEFT);
}
labelTitulo.setFont(LogicConstants.deriveBoldFont(12f));
title.add(labelTitulo);
base.add(title);
// Nombre
JPanel mid = new JPanel(new SpringLayout());
mid.setOpaque(false);
mid.add(new JLabel(i18n.getString("Resources.name"), JLabel.RIGHT));
final JTextField name = new JTextField(25);
if (r != null) {
name.setText(r.getNombre());
}
name.getDocument().addDocumentListener(changeListener);
name.setEditable(r == null);
mid.add(name);
// patrullas
final JLabel labelSquads = new JLabel(
i18n.getString("Resources.squad"), JLabel.RIGHT);
mid.add(labelSquads);
List<Patrulla> pl = PatrullaConsultas.getAll();
pl.add(0, null);
final JComboBox squads = new JComboBox(pl.toArray());
squads.setPrototypeDisplayValue("XXXXXXXXXXXXXXXXXXXXXXXXX");
squads.addActionListener(changeSelectionListener);
squads.setOpaque(false);
labelSquads.setLabelFor(squads);
if (r != null) {
squads.setSelectedItem(r.getPatrullas());
} else {
squads.setSelectedItem(null);
}
squads.setEnabled((r != null && r.getHabilitado() != null) ? r
.getHabilitado() : true);
mid.add(squads);
// // Identificador
// mid.setOpaque(false);
// mid.add(new JLabel(i18n.getString("Resources.identificador"),
// JLabel.RIGHT));
// final JTextField identificador = new JTextField("");
// if (r != null) {
// identificador.setText(r.getIdentificador());
// }
// identificador.getDocument().addDocumentListener(changeListener);
// identificador.setEditable(r == null);
// mid.add(identificador);
// Espacio en blanco
// mid.add(Box.createHorizontalGlue());
// mid.add(Box.createHorizontalGlue());
// Tipo
final JLabel labelTipoRecursos = new JLabel(
i18n.getString("Resources.type"), JLabel.RIGHT);
mid.add(labelTipoRecursos);
final JComboBox types = new JComboBox(RecursoConsultas.getTipos());
labelTipoRecursos.setLabelFor(types);
types.addActionListener(changeSelectionListener);
if (r != null) {
types.setSelectedItem(r.getTipo());
} else {
types.setSelectedItem(0);
}
// types.setEditable(true);
types.setEnabled(true);
mid.add(types);
// Estado Eurocop
mid.add(new JLabel(i18n.getString("Resources.status"), JLabel.RIGHT));
final JTextField status = new JTextField();
if (r != null && r.getEstadoEurocop() != null) {
status.setText(r.getEstadoEurocop().getIdentificador());
}
status.setEditable(false);
mid.add(status);
// Subflota y patrulla
mid.add(new JLabel(i18n.getString("Resources.subfleet"), JLabel.RIGHT));
final JComboBox subfleets = new JComboBox(
FlotaConsultas.getAllHabilitadas());
subfleets.addActionListener(changeSelectionListener);
if (r != null) {
subfleets.setSelectedItem(r.getFlotas());
} else {
subfleets.setSelectedIndex(0);
}
subfleets.setEnabled(true);
subfleets.setOpaque(false);
mid.add(subfleets);
// Referencia humana
mid.add(new JLabel(i18n.getString("Resources.incidences"), JLabel.RIGHT));
final JTextField rhumana = new JTextField();
// if (r != null && r.getIncidencias() != null) {
// rhumana.setText(r.getIncidencias().getReferenciaHumana());
// }
rhumana.setEditable(false);
mid.add(rhumana);
// dispositivo
mid.add(new JLabel(i18n.getString("Resources.device"), JLabel.RIGHT));
final PlainDocument plainDocument = new PlainDocument() {
private static final long serialVersionUID = 4929271093724956016L;
@Override
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
if (this.getLength() + str.length() <= LogicConstants.LONGITUD_ISSI) {
super.insertString(offs, str, a);
}
}
};
final JTextField issi = new JTextField(plainDocument, "",
LogicConstants.LONGITUD_ISSI);
plainDocument.addDocumentListener(changeListener);
issi.setEditable(true);
mid.add(issi);
mid.add(new JLabel(i18n.getString("Resources.enabled"), JLabel.RIGHT));
final JCheckBox enabled = new JCheckBox("", true);
enabled.addActionListener(changeSelectionListener);
enabled.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if (enabled.isSelected()) {
squads.setSelectedIndex(0);
}
squads.setEnabled(enabled.isSelected());
}
});
enabled.setEnabled(true);
enabled.setOpaque(false);
if (r != null) {
enabled.setSelected(r.getHabilitado());
} else {
enabled.setSelected(true);
}
if (r != null && r.getDispositivo() != null) {
issi.setText(StringUtils.leftPad(
String.valueOf(r.getDispositivo()),
LogicConstants.LONGITUD_ISSI, '0'));
}
mid.add(enabled);
// Fecha ultimo gps
mid.add(new JLabel(i18n.getString("Resources.lastPosition"),
JLabel.RIGHT));
JTextField lastGPS = new JTextField();
final Date lastGPSDateForRecurso = HistoricoGPSConsultas
.lastGPSDateForRecurso(r);
if (lastGPSDateForRecurso != null) {
lastGPS.setText(SimpleDateFormat.getDateTimeInstance().format(
lastGPSDateForRecurso));
}
lastGPS.setEditable(false);
mid.add(lastGPS);
// Espacio en blanco
mid.add(Box.createHorizontalGlue());
mid.add(Box.createHorizontalGlue());
// informacion adicional
JPanel infoPanel = new JPanel(new SpringLayout());
final JTextField info = new JTextField(25);
info.getDocument().addDocumentListener(changeListener);
infoPanel.add(new JLabel(i18n.getString("Resources.info")));
infoPanel.add(info);
infoPanel.setOpaque(false);
info.setOpaque(false);
SpringUtilities.makeCompactGrid(infoPanel, 1, 2, 6, 6, 6, 18);
if (r != null) {
info.setText(r.getInfoAdicional());
} else {
info.setText("");
}
info.setEditable(true);
// Espacio en blanco
mid.add(Box.createHorizontalGlue());
mid.add(Box.createHorizontalGlue());
SpringUtilities.makeCompactGrid(mid, 5, 4, 6, 6, 6, 18);
base.add(mid);
base.add(infoPanel);
JPanel buttons = new JPanel();
buttons.setOpaque(false);
JButton accept = null;
if (r == null) {
accept = new JButton("Crear",
LogicConstants.getIcon("button_crear"));
} else {
accept = new JButton("Guardar",
LogicConstants.getIcon("button_save"));
}
accept.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
if (cambios || r == null || r.getId() == null) {
boolean shithappens = true;
if ((r == null || r.getId() == null)) { // Estamos
// creando
// uno nuevo
if (RecursoConsultas.alreadyExists(name.getText())) {
shithappens = false;
JOptionPane.showMessageDialog(
RecursoDialog.this,
i18n.getString("admin.recursos.popup.error.nombreUnico"));
} else if (issi.getText() != null
&& issi.getText().length() > 0
&& StringUtils.trimToEmpty(issi.getText())
.length() != LogicConstants.LONGITUD_ISSI) {
JOptionPane.showMessageDialog(
RecursoDialog.this,
i18n.getString(Locale.ROOT,
"admin.recursos.popup.error.faltanCifras",
LogicConstants.LONGITUD_ISSI));
shithappens = false;
} else if (issi.getText() != null
&& issi.getText().length() > 0
&& LogicConstants.isNumeric(issi.getText())
&& RecursoConsultas
.alreadyExists(new Integer(issi
.getText()))) {
shithappens = false;
JOptionPane.showMessageDialog(
RecursoDialog.this,
i18n.getString("admin.recursos.popup.error.dispositivoUnico"));
}
}
if (shithappens) {
if (name.getText().isEmpty()) {
JOptionPane.showMessageDialog(
RecursoDialog.this,
i18n.getString("admin.recursos.popup.error.nombreNulo"));
} else if (issi.getText() != null
&& issi.getText().length() > 0
&& StringUtils.trimToEmpty(issi.getText())
.length() != LogicConstants.LONGITUD_ISSI) {
JOptionPane.showMessageDialog(
RecursoDialog.this,
i18n.getString(
Locale.ROOT,
"admin.recursos.popup.error.faltanCifras",
LogicConstants.LONGITUD_ISSI));
} else if (issi.getText() != null
&& issi.getText().length() > 0
&& LogicConstants.isNumeric(issi.getText())
&& r != null
&& r.getId() != null
&& RecursoConsultas.alreadyExists(
new Integer(issi.getText()),
r.getId())) {
JOptionPane.showMessageDialog(
RecursoDialog.this,
i18n.getString("admin.recursos.popup.error.issiUnico"));
} else if (issi.getText() != null
&& issi.getText().length() > 0
&& !LogicConstants.isNumeric(issi.getText())) {
JOptionPane.showMessageDialog(
RecursoDialog.this,
i18n.getString("admin.recursos.popup.error.noNumerico"));
// } else if (identificador.getText().isEmpty())
// {
// JOptionPane
// .showMessageDialog(
// RecursoDialog.this,
// i18n.getString("admin.recursos.popup.error.identificadorNulo"));
} else if (subfleets.getSelectedIndex() == -1) {
JOptionPane.showMessageDialog(
RecursoDialog.this,
i18n.getString("admin.recursos.popup.error.noSubflota"));
} else if (types.getSelectedItem() == null
|| types.getSelectedItem().toString()
.trim().isEmpty()) {
JOptionPane.showMessageDialog(
RecursoDialog.this,
i18n.getString("admin.recursos.popup.error.noTipo"));
} else {
int i = JOptionPane.showConfirmDialog(
RecursoDialog.this,
i18n.getString("admin.recursos.popup.dialogo.guardar.titulo"),
i18n.getString("admin.recursos.popup.dialogo.guardar.guardar"),
JOptionPane.YES_NO_CANCEL_OPTION);
if (i == JOptionPane.YES_OPTION) {
Recurso recurso = r;
if (r == null) {
recurso = new Recurso();
}
recurso.setInfoAdicional(info.getText());
if (issi.getText() != null
&& issi.getText().length() > 0) {
recurso.setDispositivo(new Integer(issi
.getText()));
} else {
recurso.setDispositivo(null);
}
recurso.setFlotas(FlotaConsultas
.find(subfleets.getSelectedItem()
.toString()));
if (squads.getSelectedItem() != null
&& enabled.isSelected()) {
recurso.setPatrullas(PatrullaConsultas
.find(squads.getSelectedItem()
.toString()));
} else {
recurso.setPatrullas(null);
}
recurso.setNombre(name.getText());
recurso.setHabilitado(enabled.isSelected());
// recurso.setIdentificador(identificador
// .getText());
recurso.setTipo(types.getSelectedItem()
.toString());
dispose();
RecursoAdmin.saveOrUpdate(recurso);
adminResources.refresh(null);