/*
* Initiative - A role playing utility to track turns
* Copyright (C) 2002 Devon D Jones
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* StartEvent.java
*
* Created on January 16, 2002, 3:08 PM
*/
package plugin.initiative.gui;
import gmgen.plugin.Event;
import pcgen.core.SettingsHandler;
import plugin.initiative.InitiativePlugin;
import javax.swing.BorderFactory;
import javax.swing.JFormattedTextField;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
/**
*@author devon
*/
public class StartEvent extends javax.swing.JDialog
{
/** The initiative panel */
protected JPanel mainPanel;
/** initiative */
public Initiative initiative;
protected javax.swing.JButton bCancel;
protected javax.swing.JButton bSave;
protected javax.swing.JCheckBox cbAlert;
protected javax.swing.JLabel nameLabel;
protected javax.swing.JLabel playerLabel;
protected javax.swing.JLabel durationLabel;
protected javax.swing.JLabel effectLabel;
protected javax.swing.JLabel initiativeLabel;
protected javax.swing.JSlider sDuration;
protected javax.swing.JSlider sInit;
protected JFormattedTextField lDuration;
protected JFormattedTextField lInit;
protected javax.swing.JTextField tEffect;
protected javax.swing.JTextField tName;
protected javax.swing.JTextField tPlayer;
protected String sTitle = "Start Event Timer";
protected String sAlertLabel = "Alert when event Completes/Occurs";
protected int gridBagRow = 0;
/**
* Creates new form CastSpell - used when you do know who your frame is
*
*@param parent Parent form
*@param modal is modal?
*@param initiative Initiative panel
*/
public StartEvent(java.awt.Frame parent, boolean modal,
Initiative initiative)
{
super(parent, modal);
initComponents();
this.initiative = initiative;
initCheckBox();
}
/**
* Constructor for the CastSpell object - used when you know who your frame is
* and you want to cast the spell for a particular player
*
*@param parent Parent form
*@param modal is modal
*@param initiative Initiative panel
*@param player player name
*@param init player's initiative
*/
public StartEvent(java.awt.Frame parent, boolean modal,
Initiative initiative, String player, int init)
{
super(parent, modal);
initComponents();
this.initiative = initiative;
tName.grabFocus();
tPlayer.setText(player);
lInit.setValue(init);
initCheckBox();
}
/**
*
* <p>Initializes the alert checkbox based on the options.</p>
*
*/
public void initCheckBox()
{
boolean box =
SettingsHandler.getGMGenOption(InitiativePlugin.LOG_NAME
+ ".ShowEvents", true);
if (box)
{
cbAlert.setSelected(false);
}
else
{
cbAlert.setSelected(true);
}
}
/**
*
* <p>Handles a cancel-button press.</p>
* @param e
*/
protected void cancelAndClose(ActionEvent e)
{
setVisible(false);
dispose();
}
/**
*
* <p>
* Handles a save button press; closes dialog and saves the event
* to the log and initiative list.
* </p>
* @param e
*/
protected void saveAndClose(ActionEvent e)
{
save();
}
protected void save()
{
initiative.initList.add(new Event(tName.getText(), tPlayer.getText(),
tEffect.getText(), ((Integer) lDuration.getValue()).intValue(),
((Integer) lInit.getValue()).intValue(), cbAlert.isSelected()));
initiative.writeToCombatTabWithRound(" Event Timer " + tName.getText()
+ " Started");
initiative.refreshTable();
initiative.grabFocus();
initiative.focusNextInit();
setVisible(false);
dispose();
}
/**
* Closes the dialog
*
*@param evt close event
*/
protected void closeDialog(java.awt.event.WindowEvent evt)
{
setVisible(false);
dispose();
}
/**
*
* <p>Initializes the components.</p>
*
*/
protected void initComponents()
{
basicSetup();
initAllDefaultComponents();
addButtons();
finalizeSetup();
}
protected void initAllDefaultComponents()
{
addName();
addPlayer();
addEffect();
addDuration();
addInitiative();
addAlert();
}
protected void finalizeSetup()
{
pack();
setLocationRelativeTo(getOwner());
}
protected void addButtons()
{
bSave = new javax.swing.JButton();
bCancel = new javax.swing.JButton();
java.awt.GridBagConstraints gridBagConstraints;
//Buttons
bSave.setText("Save");
bSave.addActionListener(this::saveAndClose);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = gridBagRow;
//gridBagConstraints.insets = new java.awt.Insets(0, 5, 10, 0);
mainPanel.add(bSave, gridBagConstraints);
bCancel.setText("Cancel");
bCancel.addActionListener(this::cancelAndClose);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = gridBagRow;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST;
mainPanel.add(bCancel, gridBagConstraints);
gridBagRow++;
}
protected void addEffect()
{
effectLabel = new javax.swing.JLabel();
tEffect = new javax.swing.JTextField();
java.awt.GridBagConstraints gridBagConstraints;
effectLabel.setText("Effect");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = gridBagRow;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0);
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
mainPanel.add(effectLabel, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = gridBagRow;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
mainPanel.add(tEffect, gridBagConstraints);
tEffect.addKeyListener(new EnterKeyAdapter());
gridBagRow++;
}
protected void addAlert()
{
cbAlert = new javax.swing.JCheckBox();
java.awt.GridBagConstraints gridBagConstraints;
cbAlert.setText(sAlertLabel);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = gridBagRow;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0);
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
mainPanel.add(cbAlert, gridBagConstraints);
cbAlert.addKeyListener(new EnterKeyAdapter());
gridBagRow++;
}
protected void addInitiative()
{
initiativeLabel = new javax.swing.JLabel();
sInit = Utils.buildSlider(1, 50);
lInit = Utils.buildIntegerFieldWithSlider(sInit);
lInit.setValue(1);
java.awt.GridBagConstraints gridBagConstraints;
initiativeLabel.setText("Initiative");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = gridBagRow;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
mainPanel.add(initiativeLabel, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = gridBagRow;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
mainPanel.add(sInit, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = gridBagRow;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
mainPanel.add(lInit, gridBagConstraints);
lInit.setMinimumSize(new Dimension(lInit.getPreferredSize().width,
lInit.getPreferredSize().height));
lInit.addKeyListener(new EnterKeyAdapter());
gridBagRow++;
}
protected void addDuration()
{
durationLabel = new javax.swing.JLabel();
sDuration = Utils.buildSlider(1, 50);
lDuration = Utils.buildIntegerFieldWithSlider(sDuration);
lDuration.setValue(1);
java.awt.GridBagConstraints gridBagConstraints;
durationLabel.setText("Duration");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = gridBagRow;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0);
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
mainPanel.add(durationLabel, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = gridBagRow;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.ipadx = -80;
gridBagConstraints.ipady = 4;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
mainPanel.add(sDuration, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = gridBagRow;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
mainPanel.add(lDuration, gridBagConstraints);
lDuration.setMinimumSize(new Dimension(
lDuration.getPreferredSize().width,
lDuration.getPreferredSize().height));
lDuration.addKeyListener(new EnterKeyAdapter());
gridBagRow++;
}
protected void addPlayer()
{
playerLabel = new javax.swing.JLabel();
tPlayer = new javax.swing.JTextField();
java.awt.GridBagConstraints gridBagConstraints;
playerLabel.setText("Player");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = gridBagRow;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0);
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
mainPanel.add(playerLabel, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = gridBagRow;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.ipadx = 37;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
mainPanel.add(tPlayer, gridBagConstraints);
tPlayer.addKeyListener(new EnterKeyAdapter());
gridBagRow++;
}
protected void basicSetup()
{
mainPanel = new JPanel(new java.awt.GridBagLayout());
mainPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
getContentPane().setLayout(new BorderLayout());
getContentPane().add(mainPanel, BorderLayout.CENTER);
setTitle(sTitle);
addWindowListener(new java.awt.event.WindowAdapter()
{
@Override
public void windowClosing(java.awt.event.WindowEvent evt)
{
closeDialog(evt);
}
});
}
protected void addName()
{
nameLabel = new javax.swing.JLabel();
tName = new javax.swing.JTextField();
java.awt.GridBagConstraints gridBagConstraints;
nameLabel.setText("Name");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = gridBagRow;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0);
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
mainPanel.add(nameLabel, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = gridBagRow;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.ipadx = 37;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 0);
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
mainPanel.add(tName, gridBagConstraints);
tName.addKeyListener(new EnterKeyAdapter());
gridBagRow++;
}
protected class EnterKeyAdapter extends java.awt.event.KeyAdapter
{
@Override
public void keyReleased(java.awt.event.KeyEvent evt)
{
if (evt.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER)
{
save();
}
}
}
}