use of javax.swing.event.ListSelectionEvent in project javatari by ppeccin.
the class JComboBoxNim method buildGUI.
private void buildGUI() {
setModalityType(ModalityType.APPLICATION_MODAL);
setModal(true);
setIconImage(Toolkit.getDefaultToolkit().getImage(SettingsDialog.class.getResource("/org/javatari/pc/screen/images/Favicon.png")));
setTitle("javatari");
setResizable(false);
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
closeAction();
}
});
final AbstractAction toggleP1ModeAction = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
room.awtControls().toggleP1ControlsMode();
refreshCurrentTab();
}
private static final long serialVersionUID = 1L;
};
final AbstractAction togglePaddlesAction = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
room.awtControls().togglePaddleMode();
refreshCurrentTab();
}
private static final long serialVersionUID = 1L;
};
final AbstractAction toggleJoystickAction = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
room.joystickControls().toggleMode();
refreshCurrentTab();
}
private static final long serialVersionUID = 1L;
};
final AbstractAction cycleROMFormatAction = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
room.currentConsole().controlsSocket().controlStateChanged(Control.CARTRIDGE_FORMAT, true);
refreshCurrentTab();
}
private static final long serialVersionUID = 1L;
};
String fontName = "SansSerif";
int adjust = 0;
if (Environment.ARIAL_FONT)
fontName = "Arial";
else if (Environment.LIBERATION_FONT)
fontName = "Liberation Sans";
else
adjust = -1;
Font fontFields = new Font(fontName, Font.PLAIN, 11);
Font fontLabel = new Font(fontName, Font.PLAIN, 13 + adjust);
Font fontLabelBold = new Font(fontName, Font.BOLD, 13 + adjust);
Font fontLabelMedium = new Font(fontName, Font.PLAIN, 14 + adjust);
Font fontLabelMediumBold = new Font(fontName, Font.BOLD, 14 + adjust);
Font fontLabelLarge = new Font(fontName, Font.PLAIN, 16 + adjust);
Font fontLabelLargeBold = new Font(fontName, Font.BOLD, 16 + adjust);
Color noBackground = new Color(0, 0, 0, 0);
getContentPane().setLayout(new BorderLayout());
contentPanel.setBorder(new EmptyBorder(5, 5, 0, 5));
getContentPane().add(contentPanel, BorderLayout.CENTER);
contentPanel.setLayout(new BorderLayout(0, 0));
{
mainTabbedPane = new JTabbedPane(JTabbedPane.TOP);
if (Environment.NIMBUS_LAF)
mainTabbedPane.setBorder(new DeepBorder(13, new Insets(7, 2, 6, 2)));
mainTabbedPane.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
mainTabbedPaneChanged();
}
});
mainTabbedPane.setFont(fontLabel);
mainTabbedPane.setBackground(UIManager.getColor("TabbedPane.background"));
contentPanel.add(mainTabbedPane, BorderLayout.CENTER);
JPanel multiplayerPanel = new JPanel();
mainTabbedPane.addTab("Multiplayer", null, multiplayerPanel, null);
multiplayerPanel.setLayout(null);
multiplayerPanel.setPreferredSize(INTERNAL_TAB_SIZE);
clientConsoleL = new JLabel("");
clientConsoleL.setIcon(new ImageIcon(SettingsDialog.class.getResource("/org/javatari/pc/room/settings/images/ServerClientConsole.png")));
clientConsoleL.setBounds(316, 132, 139, 94);
multiplayerPanel.add(clientConsoleL);
serverConsoleL = new JLabel("");
serverConsoleL.setIcon(new ImageIcon(SettingsDialog.class.getResource("/org/javatari/pc/room/settings/images/ServerClientConsole.png")));
serverConsoleL.setBounds(12, 132, 139, 94);
multiplayerPanel.add(serverConsoleL);
networkL = new JLabel("");
networkL.setIcon(new ImageIcon(SettingsDialog.class.getResource("/org/javatari/pc/room/settings/images/Network.png")));
networkL.setBounds(116, 81, 237, 98);
multiplayerPanel.add(networkL);
JLabel lblNewLabel_1 = new JLabel("P1 Server");
lblNewLabel_1.setFont(fontLabelLargeBold);
lblNewLabel_1.setHorizontalAlignment(SwingConstants.CENTER);
lblNewLabel_1.setBounds(24, 13, 100, 20);
multiplayerPanel.add(lblNewLabel_1);
serverStartB = new JButton("START");
serverStartB.setFont(fontLabel);
serverStartB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
serverStartAction();
}
});
serverStartB.setBounds(20, 36, 108, 26);
multiplayerPanel.add(serverStartB);
clientConnectB = new JButton("JOIN");
clientConnectB.setFont(fontLabel);
clientConnectB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
clientConnectAction();
}
});
clientConnectB.setBounds(341, 36, 108, 26);
multiplayerPanel.add(clientConnectB);
clientServerAddressTf = new JTextFieldNim();
clientServerAddressTf.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
clientConnectAction();
}
});
clientServerAddressTf.setFont(fontLabel);
clientServerAddressTf.setBounds(335, 85, 121, 27);
multiplayerPanel.add(clientServerAddressTf);
clientServerAddressTf.setColumns(10);
JLabel lblServerAddressport = new JLabel("Server address [:port]");
lblServerAddressport.setHorizontalAlignment(SwingConstants.CENTER);
lblServerAddressport.setFont(fontLabel);
lblServerAddressport.setBounds(323, 70, 144, 15);
multiplayerPanel.add(lblServerAddressport);
serverPortTf = new JTextFieldNim();
serverPortTf.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
serverStartAction();
}
});
serverPortTf.setFont(fontLabel);
serverPortTf.setHorizontalAlignment(SwingConstants.RIGHT);
serverPortTf.setColumns(10);
serverPortTf.setBounds(41, 85, 66, 27);
multiplayerPanel.add(serverPortTf);
JLabel lblPort = new JLabel("Server port");
lblPort.setHorizontalAlignment(SwingConstants.CENTER);
lblPort.setFont(fontLabel);
lblPort.setBounds(32, 70, 82, 15);
multiplayerPanel.add(lblPort);
JLabel lblPClient = new JLabel("P2 Client");
lblPClient.setHorizontalAlignment(SwingConstants.CENTER);
lblPClient.setFont(fontLabelLargeBold);
lblPClient.setBounds(345, 13, 100, 20);
multiplayerPanel.add(lblPClient);
multiplayerModeL = new JLabel("P1 SERVER MODE");
multiplayerModeL.setFont(fontLabelMediumBold);
multiplayerModeL.setOpaque(false);
multiplayerModeL.setBorder(new DeepBorder(10, new Insets(5, 5, 5, 5)));
multiplayerModeL.setHorizontalAlignment(SwingConstants.CENTER);
multiplayerModeL.setBounds(148, 34, 174, 30);
multiplayerPanel.add(multiplayerModeL);
standaloneConsoleL = new JLabel("");
standaloneConsoleL.setIcon(new ImageIcon(SettingsDialog.class.getResource("/org/javatari/pc/room/settings/images/StandaloneConsole.png")));
standaloneConsoleL.setBounds(120, 90, 202, 146);
multiplayerPanel.add(standaloneConsoleL);
{
keyboardPanel = new JPanel();
mainTabbedPane.addTab("Keyboard", null, keyboardPanel, null);
keyboardPanel.setLayout(null);
keyboardPanel.setPreferredSize(INTERNAL_TAB_SIZE);
{
keyboard0Icon = new JLabel("");
keyboard0Icon.setIcon(joystickIcon);
keyboard0Icon.setBounds(70, 91, 75, 90);
keyboardPanel.add(keyboard0Icon);
}
keyP0Up = new JTextFieldNim();
keyP0Up.setDisabledTextColor(Color.GRAY);
keyP0Up.setBackground(Color.WHITE);
keyP0Up.setEditable(false);
keyP0Up.setFont(fontFields);
keyP0Up.setHorizontalAlignment(SwingConstants.CENTER);
keyP0Up.setBounds(85, 67, 44, 23);
keyP0Up.setColumns(10);
keyboardPanel.add(keyP0Up);
keyP0Right = new JTextFieldNim();
keyP0Right.setDisabledTextColor(Color.GRAY);
keyP0Right.setBackground(Color.WHITE);
keyP0Right.setEditable(false);
keyP0Right.setFont(fontFields);
keyP0Right.setHorizontalAlignment(SwingConstants.CENTER);
keyP0Right.setColumns(10);
keyP0Right.setBounds(151, 130, 45, 23);
keyboardPanel.add(keyP0Right);
keyP0Left = new JTextFieldNim();
keyP0Left.setDisabledTextColor(Color.GRAY);
keyP0Left.setBackground(Color.WHITE);
keyP0Left.setEditable(false);
keyP0Left.setFont(fontFields);
keyP0Left.setHorizontalAlignment(SwingConstants.CENTER);
keyP0Left.setColumns(10);
keyP0Left.setBounds(19, 130, 45, 23);
keyboardPanel.add(keyP0Left);
keyP0Down = new JTextFieldNim();
keyP0Down.setDisabledTextColor(Color.GRAY);
keyP0Down.setBackground(Color.WHITE);
keyP0Down.setEditable(false);
keyP0Down.setFont(fontFields);
keyP0Down.setHorizontalAlignment(SwingConstants.CENTER);
keyP0Down.setColumns(10);
keyP0Down.setBounds(85, 194, 45, 23);
keyboardPanel.add(keyP0Down);
JLabel lblRight = new JLabel("Right");
lblRight.setFont(fontLabel);
lblRight.setHorizontalAlignment(SwingConstants.CENTER);
lblRight.setBounds(153, 116, 40, 15);
keyboardPanel.add(lblRight);
JLabel lblLeft = new JLabel("Left");
lblLeft.setFont(fontLabel);
lblLeft.setHorizontalAlignment(SwingConstants.CENTER);
lblLeft.setBounds(21, 116, 40, 14);
keyboardPanel.add(lblLeft);
keyP0DownL = new JLabel("Down");
keyP0DownL.setFont(fontLabel);
keyP0DownL.setHorizontalAlignment(SwingConstants.CENTER);
keyP0DownL.setBounds(78, 180, 58, 14);
keyboardPanel.add(keyP0DownL);
keyP0UpL = new JLabel("Up");
keyP0UpL.setFont(fontLabel);
keyP0UpL.setHorizontalAlignment(SwingConstants.CENTER);
keyP0UpL.setBounds(78, 53, 58, 14);
keyboardPanel.add(keyP0UpL);
keyP0Button = new JTextFieldNim();
keyP0Button.setDisabledTextColor(Color.GRAY);
keyP0Button.setBackground(Color.WHITE);
keyP0Button.setEditable(false);
keyP0Button.setFont(fontFields);
keyP0Button.setHorizontalAlignment(SwingConstants.CENTER);
keyP0Button.setColumns(10);
keyP0Button.setBounds(29, 79, 44, 23);
keyboardPanel.add(keyP0Button);
JLabel lblFire = new JLabel("Fire 1");
lblFire.setFont(fontLabel);
lblFire.setHorizontalAlignment(SwingConstants.CENTER);
lblFire.setBounds(31, 65, 40, 14);
keyboardPanel.add(lblFire);
keyboardPlayer1Lb = new JLabel("Player 1");
keyboardPlayer1Lb.setFont(fontLabelLargeBold);
keyboardPlayer1Lb.setHorizontalAlignment(SwingConstants.CENTER);
keyboardPlayer1Lb.setBounds(70, 22, 74, 20);
keyboardPanel.add(keyboardPlayer1Lb);
JLabel lblFire_1 = new JLabel("Fire 2");
lblFire_1.setFont(fontLabel);
lblFire_1.setHorizontalAlignment(SwingConstants.CENTER);
lblFire_1.setBounds(143, 65, 40, 14);
keyboardPanel.add(lblFire_1);
keyP0Button2 = new JTextFieldNim();
keyP0Button2.setDisabledTextColor(Color.GRAY);
keyP0Button2.setBackground(Color.WHITE);
keyP0Button2.setEditable(false);
keyP0Button2.setFont(fontFields);
keyP0Button2.setHorizontalAlignment(SwingConstants.CENTER);
keyP0Button2.setColumns(10);
keyP0Button2.setBounds(141, 79, 44, 23);
keyboardPanel.add(keyP0Button2);
JLabel txtpnAltK_1 = new JLabel();
txtpnAltK_1.setHorizontalTextPosition(SwingConstants.CENTER);
txtpnAltK_1.setHorizontalAlignment(SwingConstants.CENTER);
txtpnAltK_1.setOpaque(false);
txtpnAltK_1.setFont(fontLabel);
txtpnAltK_1.setText("ALT + K: Swap Controls");
txtpnAltK_1.setBounds(143, 215, 185, 21);
keyboardPanel.add(txtpnAltK_1);
txtpnAltK_1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
toggleP1ModeAction.actionPerformed(null);
}
});
keyboard1Icon = new JLabel("");
keyboard1Icon.setIcon(joystickIcon);
keyboard1Icon.setBounds(327, 91, 75, 90);
keyboardPanel.add(keyboard1Icon);
keyP1Up = new JTextFieldNim();
keyP1Up.setDisabledTextColor(Color.GRAY);
keyP1Up.setHorizontalAlignment(SwingConstants.CENTER);
keyP1Up.setFont(fontFields);
keyP1Up.setEditable(false);
keyP1Up.setColumns(10);
keyP1Up.setBackground(Color.WHITE);
keyP1Up.setBounds(342, 67, 44, 23);
keyboardPanel.add(keyP1Up);
keyP1Right = new JTextFieldNim();
keyP1Right.setDisabledTextColor(Color.GRAY);
keyP1Right.setHorizontalAlignment(SwingConstants.CENTER);
keyP1Right.setFont(fontFields);
keyP1Right.setEditable(false);
keyP1Right.setColumns(10);
keyP1Right.setBackground(Color.WHITE);
keyP1Right.setBounds(407, 130, 45, 23);
keyboardPanel.add(keyP1Right);
keyP1Left = new JTextFieldNim();
keyP1Left.setDisabledTextColor(Color.GRAY);
keyP1Left.setHorizontalAlignment(SwingConstants.CENTER);
keyP1Left.setFont(fontFields);
keyP1Left.setEditable(false);
keyP1Left.setColumns(10);
keyP1Left.setBackground(Color.WHITE);
keyP1Left.setBounds(276, 130, 45, 23);
keyboardPanel.add(keyP1Left);
keyP1Down = new JTextFieldNim();
keyP1Down.setDisabledTextColor(Color.GRAY);
keyP1Down.setHorizontalAlignment(SwingConstants.CENTER);
keyP1Down.setFont(fontFields);
keyP1Down.setEditable(false);
keyP1Down.setColumns(10);
keyP1Down.setBackground(Color.WHITE);
keyP1Down.setBounds(342, 194, 45, 23);
keyboardPanel.add(keyP1Down);
JLabel label_1 = new JLabel("Right");
label_1.setHorizontalAlignment(SwingConstants.CENTER);
label_1.setFont(fontLabel);
label_1.setBounds(409, 116, 40, 15);
keyboardPanel.add(label_1);
JLabel label_2 = new JLabel("Left");
label_2.setHorizontalAlignment(SwingConstants.CENTER);
label_2.setFont(fontLabel);
label_2.setBounds(278, 116, 40, 14);
keyboardPanel.add(label_2);
keyP1DownL = new JLabel("Down");
keyP1DownL.setHorizontalAlignment(SwingConstants.CENTER);
keyP1DownL.setFont(fontLabel);
keyP1DownL.setBounds(335, 180, 58, 14);
keyboardPanel.add(keyP1DownL);
keyP1UpL = new JLabel("Up");
keyP1UpL.setHorizontalAlignment(SwingConstants.CENTER);
keyP1UpL.setFont(fontLabel);
keyP1UpL.setBounds(335, 53, 58, 14);
keyboardPanel.add(keyP1UpL);
keyP1Button = new JTextFieldNim();
keyP1Button.setDisabledTextColor(Color.GRAY);
keyP1Button.setHorizontalAlignment(SwingConstants.CENTER);
keyP1Button.setFont(fontFields);
keyP1Button.setEditable(false);
keyP1Button.setColumns(10);
keyP1Button.setBackground(Color.WHITE);
keyP1Button.setBounds(286, 79, 44, 23);
keyboardPanel.add(keyP1Button);
JLabel label_5 = new JLabel("Fire 1");
label_5.setHorizontalAlignment(SwingConstants.CENTER);
label_5.setFont(fontLabel);
label_5.setBounds(288, 65, 40, 14);
keyboardPanel.add(label_5);
keyboardPlayer2Lb = new JLabel("Player 2");
keyboardPlayer2Lb.setHorizontalAlignment(SwingConstants.CENTER);
keyboardPlayer2Lb.setFont(fontLabelLargeBold);
keyboardPlayer2Lb.setBounds(327, 22, 74, 20);
keyboardPanel.add(keyboardPlayer2Lb);
JLabel label_7 = new JLabel("Fire 2");
label_7.setHorizontalAlignment(SwingConstants.CENTER);
label_7.setFont(fontLabel);
label_7.setBounds(399, 65, 40, 14);
keyboardPanel.add(label_7);
keyP1Button2 = new JTextFieldNim();
keyP1Button2.setDisabledTextColor(Color.GRAY);
keyP1Button2.setHorizontalAlignment(SwingConstants.CENTER);
keyP1Button2.setFont(fontFields);
keyP1Button2.setEditable(false);
keyP1Button2.setColumns(10);
keyP1Button2.setBackground(Color.WHITE);
keyP1Button2.setBounds(397, 79, 44, 23);
keyboardPanel.add(keyP1Button2);
keyboardMessageL = new JLabel("");
keyboardMessageL.setHorizontalAlignment(SwingConstants.CENTER);
keyboardMessageL.setFont(fontLabel);
keyboardMessageL.setBounds(165, 25, 141, 15);
keyboardPanel.add(keyboardMessageL);
JLabel txtpnAltL = new JLabel();
txtpnAltL.setHorizontalTextPosition(SwingConstants.CENTER);
txtpnAltL.setHorizontalAlignment(SwingConstants.CENTER);
txtpnAltL.setText("ALT + L: Toggle Paddles");
txtpnAltL.setOpaque(false);
txtpnAltL.setFont(fontLabel);
txtpnAltL.setBounds(143, 235, 185, 21);
keyboardPanel.add(txtpnAltL);
txtpnAltL.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
togglePaddlesAction.actionPerformed(null);
}
});
}
joysticksPanel = new JPanel();
joysticksPanel.setLayout(null);
joysticksPanel.setPreferredSize(INTERNAL_TAB_SIZE);
mainTabbedPane.addTab("Joysticks", null, joysticksPanel, null);
joystick0Icon = new JLabel("");
joystick0Icon.setIcon(joystickIcon);
joystick0Icon.setBounds(70, 91, 75, 90);
joysticksPanel.add(joystick0Icon);
joyP0Reset = new JTextFieldNim();
joyP0Reset.setDisabledTextColor(Color.GRAY);
joyP0Reset.setEnabled(false);
joyP0Reset.setName("joyP0Reset");
joyP0Reset.setHorizontalAlignment(SwingConstants.CENTER);
joyP0Reset.setFont(fontFields);
joyP0Reset.setEditable(false);
joyP0Reset.setColumns(10);
joyP0Reset.setBackground(Color.WHITE);
joyP0Reset.setBounds(85, 194, 44, 23);
joysticksPanel.add(joyP0Reset);
joyP0Pause = new JTextFieldNim();
joyP0Pause.setDisabledTextColor(Color.GRAY);
joyP0Pause.setEnabled(false);
joyP0Pause.setName("joyP0Pause");
joyP0Pause.setHorizontalAlignment(SwingConstants.CENTER);
joyP0Pause.setFont(fontFields);
joyP0Pause.setEditable(false);
joyP0Pause.setColumns(10);
joyP0Pause.setBackground(Color.WHITE);
joyP0Pause.setBounds(85, 232, 44, 23);
joysticksPanel.add(joyP0Pause);
JLabel lblSelect = new JLabel("Select");
lblSelect.setHorizontalAlignment(SwingConstants.CENTER);
lblSelect.setFont(fontLabel);
lblSelect.setBounds(28, 180, 40, 15);
joysticksPanel.add(lblSelect);
JLabel lblFire_2 = new JLabel("Pause");
lblFire_2.setHorizontalAlignment(SwingConstants.CENTER);
lblFire_2.setFont(fontLabel);
lblFire_2.setBounds(87, 218, 40, 14);
joysticksPanel.add(lblFire_2);
joyP0Button2 = new JTextFieldNim();
joyP0Button2.setDisabledTextColor(Color.GRAY);
joyP0Button2.setEnabled(false);
joyP0Button2.setName("joyP0Button2");
joyP0Button2.setHorizontalAlignment(SwingConstants.CENTER);
joyP0Button2.setFont(fontFields);
joyP0Button2.setEditable(false);
joyP0Button2.setColumns(10);
joyP0Button2.setBackground(Color.WHITE);
joyP0Button2.setBounds(141, 79, 44, 23);
joysticksPanel.add(joyP0Button2);
JLabel lblFire_5 = new JLabel("Fire 2");
lblFire_5.setHorizontalAlignment(SwingConstants.CENTER);
lblFire_5.setFont(fontLabel);
lblFire_5.setBounds(143, 65, 40, 14);
joysticksPanel.add(lblFire_5);
joysticksPlayer1Lb = new JLabel("Player 1");
joysticksPlayer1Lb.setHorizontalAlignment(SwingConstants.CENTER);
joysticksPlayer1Lb.setFont(fontLabelLargeBold);
joysticksPlayer1Lb.setBounds(78, 6, 74, 20);
joysticksPanel.add(joysticksPlayer1Lb);
JLabel lblReset = new JLabel("Fire 1");
lblReset.setHorizontalAlignment(SwingConstants.CENTER);
lblReset.setFont(fontLabel);
lblReset.setBounds(31, 65, 40, 15);
joysticksPanel.add(lblReset);
joyP0Button = new JTextFieldNim();
joyP0Button.setDisabledTextColor(Color.GRAY);
joyP0Button.setEnabled(false);
joyP0Button.setName("joyP0Button");
joyP0Button.setHorizontalAlignment(SwingConstants.CENTER);
joyP0Button.setFont(fontFields);
joyP0Button.setEditable(false);
joyP0Button.setColumns(10);
joyP0Button.setBackground(Color.WHITE);
joyP0Button.setBounds(29, 79, 44, 23);
joysticksPanel.add(joyP0Button);
joystick1Icon = new JLabel("");
joystick1Icon.setIcon(joystickIcon);
joystick1Icon.setBounds(327, 91, 75, 90);
joysticksPanel.add(joystick1Icon);
joyP1Pause = new JTextFieldNim();
joyP1Pause.setDisabledTextColor(Color.GRAY);
joyP1Pause.setEnabled(false);
joyP1Pause.setName("joyP1Pause");
joyP1Pause.setHorizontalAlignment(SwingConstants.CENTER);
joyP1Pause.setFont(fontFields);
joyP1Pause.setEditable(false);
joyP1Pause.setColumns(10);
joyP1Pause.setBackground(Color.WHITE);
joyP1Pause.setBounds(400, 232, 44, 23);
joysticksPanel.add(joyP1Pause);
JLabel lblFire_3 = new JLabel("Pause");
lblFire_3.setHorizontalAlignment(SwingConstants.CENTER);
lblFire_3.setFont(fontLabel);
lblFire_3.setBounds(402, 218, 40, 14);
joysticksPanel.add(lblFire_3);
joysticksPlayer2Lb = new JLabel("Player 2");
joysticksPlayer2Lb.setHorizontalAlignment(SwingConstants.CENTER);
joysticksPlayer2Lb.setFont(fontLabelLargeBold);
joysticksPlayer2Lb.setBounds(319, 6, 74, 20);
joysticksPanel.add(joysticksPlayer2Lb);
JLabel lblFire_4 = new JLabel("Fire 1");
lblFire_4.setHorizontalAlignment(SwingConstants.CENTER);
lblFire_4.setFont(fontLabel);
lblFire_4.setBounds(288, 65, 40, 14);
joysticksPanel.add(lblFire_4);
joyP1Button = new JTextFieldNim();
joyP1Button.setDisabledTextColor(Color.GRAY);
joyP1Button.setEnabled(false);
joyP1Button.setName("joyP1Button");
joyP1Button.setHorizontalAlignment(SwingConstants.CENTER);
joyP1Button.setFont(fontFields);
joyP1Button.setEditable(false);
joyP1Button.setColumns(10);
joyP1Button.setBackground(Color.WHITE);
joyP1Button.setBounds(286, 79, 44, 23);
joysticksPanel.add(joyP1Button);
joysticksMessageL = new JLabel("");
joysticksMessageL.setHorizontalAlignment(SwingConstants.CENTER);
joysticksMessageL.setFont(fontLabel);
joysticksMessageL.setBounds(160, 9, 151, 15);
joysticksPanel.add(joysticksMessageL);
JLabel txtpnAltJ_1 = new JLabel();
txtpnAltJ_1.setHorizontalTextPosition(SwingConstants.CENTER);
txtpnAltJ_1.setHorizontalAlignment(SwingConstants.CENTER);
txtpnAltJ_1.setText("ALT + J: Swap Joysticks");
txtpnAltJ_1.setOpaque(false);
txtpnAltJ_1.setFont(fontLabel);
txtpnAltJ_1.setBounds(155, 215, 163, 21);
joysticksPanel.add(txtpnAltJ_1);
txtpnAltJ_1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
toggleJoystickAction.actionPerformed(null);
}
});
JLabel txtpnAltL_2 = new JLabel();
txtpnAltL_2.setHorizontalTextPosition(SwingConstants.CENTER);
txtpnAltL_2.setHorizontalAlignment(SwingConstants.CENTER);
txtpnAltL_2.setText("ALT + L: Toggle Paddles");
txtpnAltL_2.setOpaque(false);
txtpnAltL_2.setFont(fontLabel);
txtpnAltL_2.setBounds(146, 235, 179, 21);
joysticksPanel.add(txtpnAltL_2);
txtpnAltL_2.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
togglePaddlesAction.actionPerformed(null);
}
});
JLabel lblFastSpeed = new JLabel("Reset");
lblFastSpeed.setHorizontalAlignment(SwingConstants.CENTER);
lblFastSpeed.setFont(fontLabel);
lblFastSpeed.setBounds(87, 180, 40, 15);
joysticksPanel.add(lblFastSpeed);
joyP0Select = new JTextFieldNim();
joyP0Select.setDisabledTextColor(Color.GRAY);
joyP0Select.setEnabled(false);
joyP0Select.setName("joyP0Select");
joyP0Select.setHorizontalAlignment(SwingConstants.CENTER);
joyP0Select.setFont(fontFields);
joyP0Select.setEditable(false);
joyP0Select.setColumns(10);
joyP0Select.setBackground(Color.WHITE);
joyP0Select.setBounds(26, 194, 44, 23);
joysticksPanel.add(joyP0Select);
joyP1Select = new JTextFieldNim();
joyP1Select.setDisabledTextColor(Color.GRAY);
joyP1Select.setEnabled(false);
joyP1Select.setName("joyP1Select");
joyP1Select.setHorizontalAlignment(SwingConstants.CENTER);
joyP1Select.setFont(fontFields);
joyP1Select.setEditable(false);
joyP1Select.setColumns(10);
joyP1Select.setBackground(Color.WHITE);
joyP1Select.setBounds(342, 194, 44, 23);
joysticksPanel.add(joyP1Select);
JLabel lblSelect_1 = new JLabel("Reset");
lblSelect_1.setHorizontalAlignment(SwingConstants.CENTER);
lblSelect_1.setFont(fontLabel);
lblSelect_1.setBounds(402, 180, 40, 15);
joysticksPanel.add(lblSelect_1);
joyP1Reset = new JTextFieldNim();
joyP1Reset.setDisabledTextColor(Color.GRAY);
joyP1Reset.setEnabled(false);
joyP1Reset.setName("joyP1Reset");
joyP1Reset.setHorizontalAlignment(SwingConstants.CENTER);
joyP1Reset.setFont(fontFields);
joyP1Reset.setEditable(false);
joyP1Reset.setColumns(10);
joyP1Reset.setBackground(Color.WHITE);
joyP1Reset.setBounds(400, 194, 44, 23);
joysticksPanel.add(joyP1Reset);
joyP1Button2 = new JTextFieldNim();
joyP1Button2.setEnabled(false);
joyP1Button2.setDisabledTextColor(Color.GRAY);
joyP1Button2.setName("joyP1Button2");
joyP1Button2.setHorizontalAlignment(SwingConstants.CENTER);
joyP1Button2.setFont(fontFields);
joyP1Button2.setEditable(false);
joyP1Button2.setColumns(10);
joyP1Button2.setBackground(Color.WHITE);
joyP1Button2.setBounds(397, 79, 44, 23);
joysticksPanel.add(joyP1Button2);
JLabel lblReset_1 = new JLabel("Select");
lblReset_1.setHorizontalAlignment(SwingConstants.CENTER);
lblReset_1.setFont(fontLabel);
lblReset_1.setBounds(344, 180, 40, 14);
joysticksPanel.add(lblReset_1);
JLabel lblFastSpeed_1 = new JLabel("Fire 2");
lblFastSpeed_1.setHorizontalAlignment(SwingConstants.CENTER);
lblFastSpeed_1.setFont(fontLabel);
lblFastSpeed_1.setBounds(399, 65, 40, 15);
joysticksPanel.add(lblFastSpeed_1);
joyP0Deadzone = new JComboBoxNim();
joyP0Deadzone.setFont(fontFields);
joyP0Deadzone.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
joyP0DeadzoneAction();
}
});
joyP0Deadzone.setModel(new DefaultComboBoxModel(JOY_DEADZONE_OPTIONS));
joyP0Deadzone.setBounds(152, 121, 64, 23);
joysticksPanel.add(joyP0Deadzone);
joyP0DeadzoneL = new JLabel("Dead zone");
joyP0DeadzoneL.setHorizontalAlignment(SwingConstants.CENTER);
joyP0DeadzoneL.setFont(fontLabel);
joyP0DeadzoneL.setBounds(149, 107, 71, 15);
joysticksPanel.add(joyP0DeadzoneL);
joyP1Deadzone = new JComboBoxNim();
joyP1Deadzone.setFont(fontFields);
joyP1Deadzone.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
joyP1DeadzoneAction();
}
});
joyP1Deadzone.setModel(new DefaultComboBoxModel(JOY_DEADZONE_OPTIONS));
joyP1Deadzone.setBounds(257, 121, 64, 23);
joysticksPanel.add(joyP1Deadzone);
joyP1DeadzoneL = new JLabel("Dead zone");
joyP1DeadzoneL.setHorizontalAlignment(SwingConstants.CENTER);
joyP1DeadzoneL.setFont(fontLabel);
joyP1DeadzoneL.setBounds(254, 107, 71, 15);
joysticksPanel.add(joyP1DeadzoneL);
joyP0FastSpeed = new JTextFieldNim();
joyP0FastSpeed.setName("joyP0FastSpeed");
joyP0FastSpeed.setHorizontalAlignment(SwingConstants.CENTER);
joyP0FastSpeed.setFont(fontFields);
joyP0FastSpeed.setEnabled(false);
joyP0FastSpeed.setEditable(false);
joyP0FastSpeed.setDisabledTextColor(Color.GRAY);
joyP0FastSpeed.setColumns(10);
joyP0FastSpeed.setBackground(Color.WHITE);
joyP0FastSpeed.setBounds(26, 232, 44, 23);
joysticksPanel.add(joyP0FastSpeed);
JLabel lblFast = new JLabel("Fast");
lblFast.setHorizontalAlignment(SwingConstants.CENTER);
lblFast.setFont(fontLabel);
lblFast.setBounds(28, 218, 40, 15);
joysticksPanel.add(lblFast);
joyP1FastSpeed = new JTextFieldNim();
joyP1FastSpeed.setName("joyP1FastSpeed");
joyP1FastSpeed.setHorizontalAlignment(SwingConstants.CENTER);
joyP1FastSpeed.setFont(fontFields);
joyP1FastSpeed.setEnabled(false);
joyP1FastSpeed.setEditable(false);
joyP1FastSpeed.setDisabledTextColor(Color.GRAY);
joyP1FastSpeed.setColumns(10);
joyP1FastSpeed.setBackground(Color.WHITE);
joyP1FastSpeed.setBounds(342, 232, 44, 23);
joysticksPanel.add(joyP1FastSpeed);
JLabel lblFast_1 = new JLabel("Fast");
lblFast_1.setHorizontalAlignment(SwingConstants.CENTER);
lblFast_1.setFont(fontLabel);
lblFast_1.setBounds(344, 218, 40, 15);
joysticksPanel.add(lblFast_1);
joyP0Sensitivity = new JComboBoxNim();
joyP0Sensitivity.setFont(fontFields);
joyP0Sensitivity.setModel(new DefaultComboBoxModel(PADDLE_SENS_OPTIONS));
joyP0Sensitivity.setBounds(152, 163, 64, 23);
joysticksPanel.add(joyP0Sensitivity);
joyP0Sensitivity.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
joyP0SensitivityAction();
}
});
JLabel lblPaddleSens = new JLabel("Sensitivity");
lblPaddleSens.setHorizontalAlignment(SwingConstants.CENTER);
lblPaddleSens.setFont(fontLabel);
lblPaddleSens.setBounds(149, 149, 71, 15);
joysticksPanel.add(lblPaddleSens);
joyP1Sensitivity = new JComboBoxNim();
joyP1Sensitivity.setFont(fontFields);
joyP1Sensitivity.setModel(new DefaultComboBoxModel(PADDLE_SENS_OPTIONS));
joyP1Sensitivity.setBounds(257, 163, 64, 23);
joysticksPanel.add(joyP1Sensitivity);
joyP1Sensitivity.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
joyP1SensitivityAction();
}
});
JLabel label_3 = new JLabel("Sensitivity");
label_3.setHorizontalAlignment(SwingConstants.CENTER);
label_3.setFont(fontLabel);
label_3.setBounds(254, 149, 71, 15);
joysticksPanel.add(label_3);
JPanel cartridgePanel = new JPanel();
mainTabbedPane.addTab("Cartridge", null, cartridgePanel, null);
cartridgePanel.setLayout(null);
cartridgePanel.setPreferredSize(INTERNAL_TAB_SIZE);
JLabel txtpnRomName = new JLabel();
txtpnRomName.setBounds(15, 6, 153, 21);
txtpnRomName.setText("Cartridge");
txtpnRomName.setOpaque(false);
txtpnRomName.setFont(fontLabelBold);
cartridgePanel.add(txtpnRomName);
romNameTf = new JTextFieldNim();
romNameTf.setFont(fontLabel);
romNameTf.setEditable(false);
romNameTf.setBounds(14, 24, 445, 27);
cartridgePanel.add(romNameTf);
romNameTf.setColumns(10);
JLabel txtpnRomFormat = new JLabel();
txtpnRomFormat.setText("Cartridge Format");
txtpnRomFormat.setOpaque(false);
txtpnRomFormat.setFont(fontLabelBold);
txtpnRomFormat.setBounds(15, 53, 447, 21);
cartridgePanel.add(txtpnRomFormat);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(14, 73, 285, 177);
cartridgePanel.add(scrollPane);
romFormatLb = new JList();
romFormatLb.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
romFormatLbAction();
}
});
romFormatLb.setFont(fontLabel);
scrollPane.setViewportView(romFormatLb);
JTextPane txtpnYouCanPlace = new JTextPane();
txtpnYouCanPlace.setText("You can give Format Hints like (E0) or (3F) in ROMs filenames");
txtpnYouCanPlace.setOpaque(false);
txtpnYouCanPlace.setBackground(noBackground);
txtpnYouCanPlace.setFont(fontLabel);
txtpnYouCanPlace.setEditable(false);
txtpnYouCanPlace.setBounds(306, 77, 165, 78);
cartridgePanel.add(txtpnYouCanPlace);
JTextPane txtpnAltbCycle = new JTextPane();
txtpnAltbCycle.setFocusable(false);
txtpnAltbCycle.setText("ALT + B: Cycle through compatible Formats\r\n");
txtpnAltbCycle.setOpaque(false);
txtpnAltbCycle.setBackground(noBackground);
txtpnAltbCycle.setFont(fontLabel);
txtpnAltbCycle.setEditable(false);
txtpnAltbCycle.setBounds(306, 201, 165, 61);
cartridgePanel.add(txtpnAltbCycle);
JLabel lbLibInfo = new JLabel("(Based on Rom Hunter's collection)");
lbLibInfo.setHorizontalAlignment(SwingConstants.TRAILING);
lbLibInfo.setFont(fontLabel);
lbLibInfo.setBounds(170, 6, 285, 20);
cartridgePanel.add(lbLibInfo);
txtpnAltbCycle.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
cycleROMFormatAction.actionPerformed(null);
}
});
JPanel helpPanel = new JPanel();
mainTabbedPane.addTab("Help", null, helpPanel, null);
helpPanel.setLayout(null);
helpPanel.setPreferredSize(INTERNAL_TAB_SIZE);
JTextPane txtpnAltJ = new JTextPane();
txtpnAltJ.setOpaque(false);
txtpnAltJ.setBackground(noBackground);
txtpnAltJ.setEditable(false);
txtpnAltJ.setFont(fontLabel);
txtpnAltJ.setBounds(12, 39, 121, 226);
helpPanel.add(txtpnAltJ);
txtpnAltJ.setText("CTR + 1-0:\r\nALT + 1-0:\r\n\r\nALT + ENT:\r\nALT + V:\r\nALT + R:\r\nALT + T:\r\nALT + G:\r\nALT + D:\r\nALT + C:\r\nALT + P:\r\nALT + F:\r\nTAB:");
JTextPane txtpnFullscreenNtsc = new JTextPane();
txtpnFullscreenNtsc.setOpaque(false);
txtpnFullscreenNtsc.setBackground(noBackground);
txtpnFullscreenNtsc.setEditable(false);
txtpnFullscreenNtsc.setText("Save State\r\nLoad State\r\n\r\nFullscreen\r\nNTSC / PAL\r\nCRT Modes\r\nCRT Filter\r\nShow info\r\nDebug Modes\r\nCollisions\r\nPause\r\nNext Frame\r\nFast Speed");
txtpnFullscreenNtsc.setFont(fontLabel);
txtpnFullscreenNtsc.setBounds(95, 39, 145, 226);
helpPanel.add(txtpnFullscreenNtsc);
JTextPane txtpnAltF = new JTextPane();
txtpnAltF.setOpaque(false);
txtpnAltF.setBackground(noBackground);
txtpnAltF.setEditable(false);
txtpnAltF.setText("ALT + F1:\r\nALT + F5:\r\nALT + F6:\r\nF7:\r\nF8:\r\n\r\nDrag/Drop or Copy/Paste of files and URLs\r\n\r\nSHIFT + Arrows:\r\nSHIFT-ALT + Arrows:\r\nCTR-SHIFT + Arrows:\r\nCTR-ALT + Arrows:\r\nBACKSPACE:");
txtpnAltF.setFont(fontLabel);
txtpnAltF.setBounds(201, 39, 309, 226);
helpPanel.add(txtpnAltF);
JTextPane txtpnFryConsoleLoad = new JTextPane();
txtpnFryConsoleLoad.setOpaque(false);
txtpnFryConsoleLoad.setBackground(noBackground);
txtpnFryConsoleLoad.setEditable(false);
txtpnFryConsoleLoad.setText("Fry Console\r\nLoad Cartridge\r\nwith no Power Cycle\r\nRemove Cartridge\nSave State file");
txtpnFryConsoleLoad.setFont(fontLabel);
txtpnFryConsoleLoad.setBounds(277, 39, 194, 117);
helpPanel.add(txtpnFryConsoleLoad);
JTextPane txtpnDisplayOriginDisplay = new JTextPane();
txtpnDisplayOriginDisplay.setOpaque(false);
txtpnDisplayOriginDisplay.setBackground(noBackground);
txtpnDisplayOriginDisplay.setEditable(false);
txtpnDisplayOriginDisplay.setText("\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nScreen Size\r\nScreen Scale\r\nViewport Size\r\nViewport Origin\r\nScreen Defaults");
txtpnDisplayOriginDisplay.setFont(fontLabel);
txtpnDisplayOriginDisplay.setBounds(340, 39, 139, 226);
helpPanel.add(txtpnDisplayOriginDisplay);
JLabel lblHotKeys = new JLabel();
lblHotKeys.setHorizontalAlignment(SwingConstants.CENTER);
lblHotKeys.setText("Hot Keys");
lblHotKeys.setOpaque(false);
lblHotKeys.setFont(fontLabelBold);
lblHotKeys.setBounds(11, 10, 446, 21);
helpPanel.add(lblHotKeys);
{
JPanel aboutPanel = new JPanel();
aboutPanel.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
aboutPanel.setBackground(UIManager.getColor("Panel.background"));
mainTabbedPane.addTab("About", null, aboutPanel, null);
aboutPanel.setLayout(null);
aboutPanel.setPreferredSize(INTERNAL_TAB_SIZE);
{
JLabel lblNewButton = new JLabel("");
lblNewButton.setBounds(29, 27, 170, 166);
aboutPanel.add(lblNewButton);
lblNewButton.setIcon(new ImageIcon(SettingsDialog.class.getResource("/org/javatari/pc/room/settings/images/LogoAbout.png")));
lblNewButton.setHorizontalAlignment(SwingConstants.CENTER);
lblNewButton.setVerticalAlignment(SwingConstants.CENTER);
lblNewButton.setBorder(new DeepBorder(6, new Insets(3, 3, 3, 3)));
}
JLabel lblVerion = new JLabel("version " + Parameters.VERSION);
lblVerion.setHorizontalAlignment(SwingConstants.CENTER);
lblVerion.setFont(fontLabelMedium);
lblVerion.setBounds(67, 202, 95, 14);
aboutPanel.add(lblVerion);
JLabel lblCreate = new JLabel("Paulo Augusto Peccin");
lblCreate.setHorizontalAlignment(SwingConstants.CENTER);
lblCreate.setFont(fontLabelLarge);
lblCreate.setBounds(241, 67, 173, 19);
aboutPanel.add(lblCreate);
JLabel lblCreated = new JLabel("created by");
lblCreated.setHorizontalAlignment(SwingConstants.CENTER);
lblCreated.setFont(fontLabelMedium);
lblCreated.setBounds(259, 44, 137, 21);
aboutPanel.add(lblCreated);
{
JLabel lblOfficialHomepage = new JLabel("official homepage:");
lblOfficialHomepage.setHorizontalAlignment(SwingConstants.CENTER);
lblOfficialHomepage.setFont(fontLabelMedium);
lblOfficialHomepage.setBounds(259, 124, 137, 21);
aboutPanel.add(lblOfficialHomepage);
}
{
JButton lblHttpjavatariorg = new JButton("http://javatari.org");
lblHttpjavatariorg.setFocusPainted(false);
lblHttpjavatariorg.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
officialWebPageAction();
}
});
lblHttpjavatariorg.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
lblHttpjavatariorg.setBorder(null);
lblHttpjavatariorg.setContentAreaFilled(false);
lblHttpjavatariorg.setBorderPainted(false);
lblHttpjavatariorg.setHorizontalAlignment(SwingConstants.CENTER);
lblHttpjavatariorg.setForeground(new Color(40, 100, 230));
lblHttpjavatariorg.setFont(fontLabelLarge);
lblHttpjavatariorg.setBounds(250, 146, 154, 19);
aboutPanel.add(lblHttpjavatariorg);
}
{
JButton lblppeccin = new JButton("@ppeccin");
lblppeccin.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
twitterPageAction();
}
});
lblppeccin.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
lblppeccin.setContentAreaFilled(false);
lblppeccin.setForeground(new Color(40, 100, 230));
lblppeccin.setBorderPainted(false);
lblppeccin.setBorder(null);
lblppeccin.setHorizontalAlignment(SwingConstants.CENTER);
lblppeccin.setFont(fontLabelMedium);
lblppeccin.setBounds(259, 87, 137, 19);
aboutPanel.add(lblppeccin);
}
vmInfo = new JLabel("");
vmInfo.setHorizontalAlignment(SwingConstants.CENTER);
vmInfo.setVerticalAlignment(SwingConstants.BOTTOM);
vmInfo.setFont(fontFields);
vmInfo.setBounds(11, 239, 450, 20);
aboutPanel.add(vmInfo);
}
}
{
JPanel buttonPane = new JPanel();
getContentPane().add(buttonPane, BorderLayout.SOUTH);
buttonPane.setLayout(new BorderLayout(0, 0));
{
JPanel panel = new JPanel();
FlowLayout flowLayout = (FlowLayout) panel.getLayout();
flowLayout.setAlignment(FlowLayout.LEFT);
buttonPane.add(panel, BorderLayout.WEST);
defaultsB = new JButton("Defaults");
defaultsB.setFont(fontLabel);
defaultsB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
defaultsAction();
}
});
panel.add(defaultsB);
JPanel panel_1 = new JPanel();
buttonPane.add(panel_1, BorderLayout.EAST);
{
closeB = new JButton("Close");
closeB.setFont(fontLabel);
panel_1.add(closeB);
closeB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
closeAction();
}
});
closeB.setActionCommand("Cancel");
}
// getRootPane().setDefaultButton(okButton);
}
}
keyboardEdittingL = new JLabel("");
keyboardEdittingL.setHorizontalAlignment(SwingConstants.CENTER);
keyboardEdittingL.setFont(fontLabel);
keyboardEdittingL.setBounds(192, 53, 86, 15);
keyboardPanel.add(keyboardEdittingL);
joyP0XAxis = new JComboBoxNim();
joyP0XAxis.setFont(fontFields);
joyP0XAxis.setModel(new DefaultComboBoxModel(JOY_AXIS_OPTIONS));
joyP0XAxis.setBounds(19, 130, 44, 23);
joysticksPanel.add(joyP0XAxis);
joyP0XAxis.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
joyP0XAxisAction();
}
});
joyP0XAxisL = new JLabel("X Axis");
joyP0XAxisL.setHorizontalAlignment(SwingConstants.CENTER);
joyP0XAxisL.setFont(fontLabel);
joyP0XAxisL.setBounds(12, 116, 58, 15);
joysticksPanel.add(joyP0XAxisL);
joyP0YAxis = new JComboBoxNim();
joyP0YAxis.setFont(fontFields);
joyP0YAxis.setModel(new DefaultComboBoxModel(JOY_AXIS_OPTIONS));
joyP0YAxis.setBounds(85, 67, 44, 23);
joysticksPanel.add(joyP0YAxis);
joyP0YAxis.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
joyP0YAxisAction();
}
});
JLabel lblVAxis = new JLabel("Y Axis");
lblVAxis.setHorizontalAlignment(SwingConstants.CENTER);
lblVAxis.setFont(fontLabel);
lblVAxis.setBounds(85, 53, 45, 15);
joysticksPanel.add(lblVAxis);
joyP1XAxis = new JComboBoxNim();
joyP1XAxis.setFont(fontFields);
joyP1XAxis.setModel(new DefaultComboBoxModel(JOY_AXIS_OPTIONS));
joyP1XAxis.setBounds(407, 130, 44, 23);
joysticksPanel.add(joyP1XAxis);
joyP1XAxis.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
joyP1XAxisAction();
}
});
joyP1XAxisL = new JLabel("X Axis");
joyP1XAxisL.setHorizontalAlignment(SwingConstants.CENTER);
joyP1XAxisL.setFont(fontLabel);
joyP1XAxisL.setBounds(400, 116, 58, 15);
joysticksPanel.add(joyP1XAxisL);
joyP1YAxis = new JComboBoxNim();
joyP1YAxis.setFont(fontFields);
joyP1YAxis.setModel(new DefaultComboBoxModel(JOY_AXIS_OPTIONS));
joyP1YAxis.setBounds(342, 67, 44, 23);
joysticksPanel.add(joyP1YAxis);
joyP1YAxis.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
joyP1YAxisAction();
}
});
JLabel lblP1YAxis = new JLabel("Y Axis");
lblP1YAxis.setHorizontalAlignment(SwingConstants.CENTER);
lblP1YAxis.setFont(fontLabel);
lblP1YAxis.setBounds(342, 53, 45, 15);
joysticksPanel.add(lblP1YAxis);
joysticksEdittingL = new JLabel("");
joysticksEdittingL.setHorizontalAlignment(SwingConstants.CENTER);
joysticksEdittingL.setFont(fontLabel);
joysticksEdittingL.setBounds(186, 52, 100, 15);
joysticksPanel.add(joysticksEdittingL);
joyP0Device = new JComboBoxNim();
joyP0Device.setFont(fontFields);
joyP0Device.setBounds(13, 26, 213, 23);
joysticksPanel.add(joyP0Device);
joyP0Device.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
joyP0P1DeviceAction();
}
});
joyP1Device = new JComboBoxNim();
joyP1Device.setFont(fontFields);
joyP1Device.setBounds(245, 26, 213, 23);
joysticksPanel.add(joyP1Device);
joyP1Device.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
joyP0P1DeviceAction();
}
});
((JComponent) getContentPane()).getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(AWTConsoleControls.KEY_TOGGLE_P1_MODE, KeyEvent.ALT_DOWN_MASK), "ToggleP1Mode");
((JComponent) getContentPane()).getActionMap().put("ToggleP1Mode", toggleP1ModeAction);
((JComponent) getContentPane()).getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(AWTConsoleControls.KEY_TOGGLE_PADDLE, KeyEvent.ALT_DOWN_MASK), "TogglePaddles");
((JComponent) getContentPane()).getActionMap().put("TogglePaddles", togglePaddlesAction);
((JComponent) getContentPane()).getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(AWTConsoleControls.KEY_TOGGLE_JOYSTICK, KeyEvent.ALT_DOWN_MASK), "ToggleJoystick");
((JComponent) getContentPane()).getActionMap().put("ToggleJoystick", toggleJoystickAction);
((JComponent) getContentPane()).getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(AWTConsoleControls.KEY_CARTRIDGE_FORMAT, KeyEvent.ALT_DOWN_MASK), "CycleROMFormat");
((JComponent) getContentPane()).getActionMap().put("CycleROMFormat", cycleROMFormatAction);
buildFinished = true;
}
use of javax.swing.event.ListSelectionEvent in project libgdx by libgdx.
the class DynamicsInfluencerPanel method initializeComponents.
protected void initializeComponents() {
super.initializeComponents();
JPanel velocitiesPanel = new JPanel();
velocitiesPanel.setLayout(new GridBagLayout());
{
JPanel sideButtons = new JPanel(new GridBagLayout());
velocitiesPanel.add(sideButtons, new GridBagConstraints(1, 0, 1, 1, 1, 1, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
{
sideButtons.add(velocityBox = new JComboBox(new DefaultComboBoxModel()), new GridBagConstraints(0, -1, 1, 1, 0, 0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 6, 0), 0, 0));
}
{
JButton newButton = new JButton("New");
sideButtons.add(newButton, new GridBagConstraints(0, -1, 1, 1, 0, 0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 6, 0), 0, 0));
newButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
createVelocity(velocityBox.getSelectedItem());
}
});
}
{
JButton deleteButton = new JButton("Delete");
sideButtons.add(deleteButton, new GridBagConstraints(0, -1, 1, 1, 0, 0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 6, 0), 0, 0));
deleteButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
deleteVelocity();
}
});
}
}
JScrollPane scroll = new JScrollPane();
velocitiesPanel.add(scroll, new GridBagConstraints(0, 0, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 6), 0, 0));
velocityTable = new JTable() {
public Class getColumnClass(int column) {
return column == 1 ? Boolean.class : super.getColumnClass(column);
}
@Override
public Dimension getPreferredScrollableViewportSize() {
Dimension dim = super.getPreferredScrollableViewportSize();
dim.height = getPreferredSize().height;
return dim;
}
};
velocityTable.getTableHeader().setReorderingAllowed(false);
velocityTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
scroll.setViewportView(velocityTable);
velocityTableModel = new DefaultTableModel(new String[0][0], new String[] { "Velocity", "Active" });
velocityTable.setModel(velocityTableModel);
velocityTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent event) {
if (event.getValueIsAdjusting())
return;
velocitySelected();
}
});
velocityTableModel.addTableModelListener(new TableModelListener() {
public void tableChanged(TableModelEvent event) {
if (event.getColumn() != 1)
return;
velocityChecked(event.getFirstRow(), (Boolean) velocityTable.getValueAt(event.getFirstRow(), 1));
}
});
//Velocity values
emptyPanel = new ParticleValuePanel(editor, "", "", true, false);
strengthVelocityPanel = new StrengthVelocityPanel(editor, null, "Life", "", "");
angularVelocityPanel = new AngularVelocityPanel(editor, null, "Life", "", "");
strengthVelocityPanel.setVisible(false);
angularVelocityPanel.setVisible(false);
emptyPanel.setVisible(false);
strengthVelocityPanel.setIsAlwayShown(true);
angularVelocityPanel.setIsAlwayShown(true);
emptyPanel.setIsAlwayShown(true);
emptyPanel.setValue(null);
//Assemble
int i = 0;
addContent(i++, 0, velocitiesPanel);
addContent(i++, 0, strengthVelocityPanel);
addContent(i++, 0, angularVelocityPanel);
addContent(i++, 0, emptyPanel);
}
use of javax.swing.event.ListSelectionEvent in project libgdx by libgdx.
the class Hiero method initializeEvents.
private void initializeEvents() {
fontList.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent evt) {
if (evt.getValueIsAdjusting())
return;
prefs.put("system.font", (String) fontList.getSelectedValue());
updateFont();
}
});
class FontUpdateListener implements ChangeListener, ActionListener {
public void stateChanged(ChangeEvent evt) {
updateFont();
}
public void actionPerformed(ActionEvent evt) {
updateFont();
}
public void addSpinners(JSpinner[] spinners) {
for (int i = 0; i < spinners.length; i++) {
final JSpinner spinner = spinners[i];
spinner.addChangeListener(this);
((JSpinner.DefaultEditor) spinner.getEditor()).getTextField().addKeyListener(new KeyAdapter() {
String lastText;
public void keyReleased(KeyEvent evt) {
JFormattedTextField textField = ((JSpinner.DefaultEditor) spinner.getEditor()).getTextField();
String text = textField.getText();
if (text.length() == 0)
return;
if (text.equals(lastText))
return;
lastText = text;
int caretPosition = textField.getCaretPosition();
try {
spinner.setValue(Integer.valueOf(text));
} catch (NumberFormatException ex) {
}
textField.setCaretPosition(caretPosition);
}
});
}
}
}
FontUpdateListener listener = new FontUpdateListener();
listener.addSpinners(new JSpinner[] { padTopSpinner, padRightSpinner, padBottomSpinner, padLeftSpinner, padAdvanceXSpinner, padAdvanceYSpinner });
fontSizeSpinner.addChangeListener(listener);
gammaSpinner.addChangeListener(listener);
glyphPageWidthCombo.addActionListener(listener);
glyphPageHeightCombo.addActionListener(listener);
boldCheckBox.addActionListener(listener);
italicCheckBox.addActionListener(listener);
monoCheckBox.addActionListener(listener);
resetCacheButton.addActionListener(listener);
javaRadio.addActionListener(listener);
nativeRadio.addActionListener(listener);
freeTypeRadio.addActionListener(listener);
sampleTextRadio.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
glyphCachePanel.setVisible(false);
}
});
glyphCacheRadio.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
glyphCachePanel.setVisible(true);
}
});
fontFileText.getDocument().addDocumentListener(new DocumentListener() {
public void removeUpdate(DocumentEvent evt) {
changed();
}
public void insertUpdate(DocumentEvent evt) {
changed();
}
public void changedUpdate(DocumentEvent evt) {
changed();
}
private void changed() {
File file = new File(fontFileText.getText());
if (fontList.isEnabled() && (!file.exists() || !file.isFile()))
return;
prefs.put("font.file", fontFileText.getText());
updateFont();
}
});
final ActionListener al = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
updateFontSelector();
updateFont();
}
};
systemFontRadio.addActionListener(al);
fontFileRadio.addActionListener(al);
browseButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
FileDialog dialog = new FileDialog(Hiero.this, "Choose TrueType font file", FileDialog.LOAD);
dialog.setLocationRelativeTo(null);
dialog.setFile("*.ttf");
dialog.setDirectory(prefs.get("dir.font", ""));
dialog.setVisible(true);
if (dialog.getDirectory() != null) {
prefs.put("dir.font", dialog.getDirectory());
}
String fileName = dialog.getFile();
if (fileName == null)
return;
fontFileText.setText(new File(dialog.getDirectory(), fileName).getAbsolutePath());
}
});
backgroundColorLabel.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
java.awt.Color color = JColorChooser.showDialog(null, "Choose a background color", EffectUtil.fromString(prefs.get("background", "000000")));
if (color == null)
return;
renderingBackgroundColor = new Color(color.getRed() / 255f, color.getGreen() / 255f, color.getBlue() / 255f, 1);
backgroundColorLabel.setIcon(getColorIcon(color));
prefs.put("background", EffectUtil.toString(color));
}
});
effectsList.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent evt) {
ConfigurableEffect selectedEffect = (ConfigurableEffect) effectsList.getSelectedValue();
boolean enabled = selectedEffect != null;
for (Iterator iter = effectPanels.iterator(); iter.hasNext(); ) {
ConfigurableEffect effect = ((EffectPanel) iter.next()).getEffect();
if (effect == selectedEffect) {
enabled = false;
break;
}
}
addEffectButton.setEnabled(enabled);
}
});
effectsList.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
if (evt.getClickCount() == 2 && addEffectButton.isEnabled())
addEffectButton.doClick();
}
});
addEffectButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
new EffectPanel((ConfigurableEffect) effectsList.getSelectedValue());
}
});
openMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
FileDialog dialog = new FileDialog(Hiero.this, "Open Hiero settings file", FileDialog.LOAD);
dialog.setLocationRelativeTo(null);
dialog.setFile("*.hiero");
dialog.setDirectory(prefs.get("dir.open", ""));
dialog.setVisible(true);
if (dialog.getDirectory() != null) {
prefs.put("dir.open", dialog.getDirectory());
}
String fileName = dialog.getFile();
if (fileName == null)
return;
lastOpenFilename = fileName;
open(new File(dialog.getDirectory(), fileName));
}
});
saveMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
FileDialog dialog = new FileDialog(Hiero.this, "Save Hiero settings file", FileDialog.SAVE);
dialog.setLocationRelativeTo(null);
dialog.setFile("*.hiero");
dialog.setDirectory(prefs.get("dir.save", ""));
if (lastSaveFilename.length() > 0) {
dialog.setFile(lastSaveFilename);
} else if (lastOpenFilename.length() > 0) {
dialog.setFile(lastOpenFilename);
}
dialog.setVisible(true);
if (dialog.getDirectory() != null) {
prefs.put("dir.save", dialog.getDirectory());
}
String fileName = dialog.getFile();
if (fileName == null)
return;
if (!fileName.endsWith(".hiero"))
fileName += ".hiero";
lastSaveFilename = fileName;
File file = new File(dialog.getDirectory(), fileName);
try {
save(file);
} catch (IOException ex) {
throw new RuntimeException("Error saving Hiero settings file: " + file.getAbsolutePath(), ex);
}
}
});
saveBMFontMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
FileDialog dialog = new FileDialog(Hiero.this, "Save BMFont files", FileDialog.SAVE);
dialog.setLocationRelativeTo(null);
dialog.setFile("*.fnt");
dialog.setDirectory(prefs.get("dir.savebm", ""));
if (lastSaveBMFilename.length() > 0) {
dialog.setFile(lastSaveBMFilename);
} else if (lastOpenFilename.length() > 0) {
dialog.setFile(lastOpenFilename.replace(".hiero", ".fnt"));
}
dialog.setVisible(true);
if (dialog.getDirectory() != null) {
prefs.put("dir.savebm", dialog.getDirectory());
}
String fileName = dialog.getFile();
if (fileName == null)
return;
lastSaveBMFilename = fileName;
saveBm(new File(dialog.getDirectory(), fileName));
}
});
exitMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
dispose();
}
});
sampleNeheButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
sampleTextPane.setText(NEHE_CHARS);
resetCacheButton.doClick();
}
});
sampleAsciiButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
StringBuilder buffer = new StringBuilder();
buffer.append(NEHE_CHARS);
buffer.append('\n');
int count = 0;
for (int i = 33; i <= 255; i++) {
if (buffer.indexOf(Character.toString((char) i)) != -1)
continue;
buffer.append((char) i);
if (++count % 30 == 0)
buffer.append('\n');
}
sampleTextPane.setText(buffer.toString());
resetCacheButton.doClick();
}
});
sampleExtendedButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
sampleTextPane.setText(EXTENDED_CHARS);
resetCacheButton.doClick();
}
});
}
use of javax.swing.event.ListSelectionEvent in project libgdx by libgdx.
the class EffectPanel method initializeComponents.
private void initializeComponents() {
setLayout(new GridBagLayout());
{
JPanel sideButtons = new JPanel(new GridBagLayout());
add(sideButtons, new GridBagConstraints(1, 0, 1, 1, 0, 0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
{
JButton newButton = new JButton("New");
sideButtons.add(newButton, new GridBagConstraints(0, -1, 1, 1, 0, 0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 6, 0), 0, 0));
newButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
newEmitter("Untitled", true);
}
});
}
{
JButton newButton = new JButton("Duplicate");
sideButtons.add(newButton, new GridBagConstraints(0, -1, 1, 1, 0, 0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 6, 0), 0, 0));
newButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
duplicateEmitter();
}
});
}
{
JButton deleteButton = new JButton("Delete");
sideButtons.add(deleteButton, new GridBagConstraints(0, -1, 1, 1, 0, 0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 6, 0), 0, 0));
deleteButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
deleteEmitter();
}
});
}
{
sideButtons.add(new JSeparator(JSeparator.HORIZONTAL), new GridBagConstraints(0, -1, 1, 1, 0, 0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 6, 0), 0, 0));
}
{
JButton saveButton = new JButton("Save");
sideButtons.add(saveButton, new GridBagConstraints(0, -1, 1, 1, 0, 0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 6, 0), 0, 0));
saveButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
saveEffect();
}
});
}
{
JButton openButton = new JButton("Open");
sideButtons.add(openButton, new GridBagConstraints(0, -1, 1, 1, 0, 0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 6, 0), 0, 0));
openButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
openEffect(false);
}
});
}
{
JButton mergeButton = new JButton("Merge");
sideButtons.add(mergeButton, new GridBagConstraints(0, -1, 1, 1, 0, 0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 6, 0), 0, 0));
mergeButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
openEffect(true);
}
});
}
{
JButton upButton = new JButton("Up");
sideButtons.add(upButton, new GridBagConstraints(0, -1, 1, 1, 0, 1, GridBagConstraints.SOUTH, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 6, 0), 0, 0));
upButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
move(-1);
}
});
}
{
JButton downButton = new JButton("Down");
sideButtons.add(downButton, new GridBagConstraints(0, -1, 1, 1, 0, 0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
downButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
move(1);
}
});
}
}
{
JScrollPane scroll = new JScrollPane();
add(scroll, new GridBagConstraints(0, 0, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 6), 0, 0));
{
emitterTable = new JTable() {
public Class getColumnClass(int column) {
return column == 1 ? Boolean.class : super.getColumnClass(column);
}
};
emitterTable.getTableHeader().setReorderingAllowed(false);
emitterTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
scroll.setViewportView(emitterTable);
emitterTableModel = new DefaultTableModel(new String[0][0], new String[] { "Emitter", "" });
emitterTable.setModel(emitterTableModel);
emitterTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent event) {
if (event.getValueIsAdjusting())
return;
emitterSelected();
}
});
emitterTableModel.addTableModelListener(new TableModelListener() {
public void tableChanged(TableModelEvent event) {
if (event.getColumn() != 1)
return;
emitterChecked(event.getFirstRow(), (Boolean) emitterTable.getValueAt(event.getFirstRow(), 1));
}
});
}
}
}
use of javax.swing.event.ListSelectionEvent in project gitblit by gitblit.
the class GitblitAuthority method getUI.
private Container getUI() {
userCertificatePanel = new UserCertificatePanel(this) {
private static final long serialVersionUID = 1L;
@Override
public Insets getInsets() {
return Utils.INSETS;
}
@Override
public boolean isAllowEmail() {
return mail.isReady();
}
@Override
public Date getDefaultExpiration() {
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, defaultDuration);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return c.getTime();
}
@Override
public boolean saveUser(String username, UserCertificateModel ucm) {
return userService.updateUserModel(username, ucm.user);
}
@Override
public boolean newCertificate(UserCertificateModel ucm, X509Metadata metadata, boolean sendEmail) {
if (!prepareX509Infrastructure()) {
return false;
}
Date notAfter = metadata.notAfter;
setMetadataDefaults(metadata);
metadata.notAfter = notAfter;
// set user's specified OID values
UserModel user = ucm.user;
if (!StringUtils.isEmpty(user.organizationalUnit)) {
metadata.oids.put("OU", user.organizationalUnit);
}
if (!StringUtils.isEmpty(user.organization)) {
metadata.oids.put("O", user.organization);
}
if (!StringUtils.isEmpty(user.locality)) {
metadata.oids.put("L", user.locality);
}
if (!StringUtils.isEmpty(user.stateProvince)) {
metadata.oids.put("ST", user.stateProvince);
}
if (!StringUtils.isEmpty(user.countryCode)) {
metadata.oids.put("C", user.countryCode);
}
File caKeystoreFile = new File(folder, X509Utils.CA_KEY_STORE);
File zip = X509Utils.newClientBundle(user, metadata, caKeystoreFile, caKeystorePassword, GitblitAuthority.this);
// save latest expiration date
if (ucm.expires == null || metadata.notAfter.before(ucm.expires)) {
ucm.expires = metadata.notAfter;
}
updateAuthorityConfig(ucm);
// refresh user
ucm.certs = null;
int selectedIndex = table.getSelectedRow();
tableModel.fireTableDataChanged();
table.getSelectionModel().setSelectionInterval(selectedIndex, selectedIndex);
if (sendEmail) {
sendEmail(user, metadata, zip);
}
return true;
}
@Override
public boolean revoke(UserCertificateModel ucm, X509Certificate cert, RevocationReason reason) {
if (!prepareX509Infrastructure()) {
return false;
}
File caRevocationList = new File(folder, X509Utils.CA_REVOCATION_LIST);
File caKeystoreFile = new File(folder, X509Utils.CA_KEY_STORE);
if (X509Utils.revoke(cert, reason, caRevocationList, caKeystoreFile, caKeystorePassword, GitblitAuthority.this)) {
File certificatesConfigFile = new File(folder, X509Utils.CA_CONFIG);
FileBasedConfig config = new FileBasedConfig(certificatesConfigFile, FS.detect());
if (certificatesConfigFile.exists()) {
try {
config.load();
} catch (Exception e) {
Utils.showException(GitblitAuthority.this, e);
}
}
// add serial to revoked list
ucm.revoke(cert.getSerialNumber(), reason);
ucm.update(config);
try {
config.save();
} catch (Exception e) {
Utils.showException(GitblitAuthority.this, e);
}
// refresh user
ucm.certs = null;
int modelIndex = table.convertRowIndexToModel(table.getSelectedRow());
tableModel.fireTableDataChanged();
table.getSelectionModel().setSelectionInterval(modelIndex, modelIndex);
return true;
}
return false;
}
};
table = Utils.newTable(tableModel, Utils.DATE_FORMAT);
table.setRowSorter(defaultSorter);
table.setDefaultRenderer(CertificateStatus.class, new CertificateStatusRenderer());
table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (e.getValueIsAdjusting()) {
return;
}
int row = table.getSelectedRow();
if (row < 0) {
return;
}
int modelIndex = table.convertRowIndexToModel(row);
UserCertificateModel ucm = tableModel.get(modelIndex);
if (ucm.certs == null) {
ucm.certs = findCerts(folder, ucm.user.username);
}
userCertificatePanel.setUserCertificateModel(ucm);
}
});
JPanel usersPanel = new JPanel(new BorderLayout()) {
private static final long serialVersionUID = 1L;
@Override
public Insets getInsets() {
return Utils.INSETS;
}
};
usersPanel.add(new HeaderPanel(Translation.get("gb.users"), "users_16x16.png"), BorderLayout.NORTH);
usersPanel.add(new JScrollPane(table), BorderLayout.CENTER);
usersPanel.setMinimumSize(new Dimension(400, 10));
certificateDefaultsButton = new JButton(new ImageIcon(getClass().getResource("/settings_16x16.png")));
certificateDefaultsButton.setFocusable(false);
certificateDefaultsButton.setToolTipText(Translation.get("gb.newCertificateDefaults"));
certificateDefaultsButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
X509Metadata metadata = new X509Metadata("whocares", "whocares");
File certificatesConfigFile = new File(folder, X509Utils.CA_CONFIG);
FileBasedConfig config = new FileBasedConfig(certificatesConfigFile, FS.detect());
NewCertificateConfig certificateConfig = null;
if (certificatesConfigFile.exists()) {
try {
config.load();
} catch (Exception x) {
Utils.showException(GitblitAuthority.this, x);
}
certificateConfig = NewCertificateConfig.KEY.parse(config);
certificateConfig.update(metadata);
}
InputVerifier verifier = new InputVerifier() {
@Override
public boolean verify(JComponent comp) {
boolean returnValue;
JTextField textField = (JTextField) comp;
try {
Integer.parseInt(textField.getText());
returnValue = true;
} catch (NumberFormatException e) {
returnValue = false;
}
return returnValue;
}
};
JTextField siteNameTF = new JTextField(20);
siteNameTF.setText(gitblitSettings.getString(Keys.web.siteName, "Gitblit"));
JPanel siteNamePanel = Utils.newFieldPanel(Translation.get("gb.siteName"), siteNameTF, Translation.get("gb.siteNameDescription"));
JTextField validityTF = new JTextField(4);
validityTF.setInputVerifier(verifier);
validityTF.setVerifyInputWhenFocusTarget(true);
validityTF.setText("" + certificateConfig.duration);
JPanel validityPanel = Utils.newFieldPanel(Translation.get("gb.validity"), validityTF, Translation.get("gb.duration.days").replace("{0}", "").trim());
JPanel p1 = new JPanel(new GridLayout(0, 1, 5, 2));
p1.add(siteNamePanel);
p1.add(validityPanel);
DefaultOidsPanel oids = new DefaultOidsPanel(metadata);
JPanel panel = new JPanel(new BorderLayout());
panel.add(p1, BorderLayout.NORTH);
panel.add(oids, BorderLayout.CENTER);
int result = JOptionPane.showConfirmDialog(GitblitAuthority.this, panel, Translation.get("gb.newCertificateDefaults"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, new ImageIcon(getClass().getResource("/settings_32x32.png")));
if (result == JOptionPane.OK_OPTION) {
try {
oids.update(metadata);
certificateConfig.duration = Integer.parseInt(validityTF.getText());
certificateConfig.store(config, metadata);
config.save();
Map<String, String> updates = new HashMap<String, String>();
updates.put(Keys.web.siteName, siteNameTF.getText());
gitblitSettings.saveSettings(updates);
} catch (Exception e1) {
Utils.showException(GitblitAuthority.this, e1);
}
}
}
});
newSSLCertificate = new JButton(new ImageIcon(getClass().getResource("/rosette_16x16.png")));
newSSLCertificate.setFocusable(false);
newSSLCertificate.setToolTipText(Translation.get("gb.newSSLCertificate"));
newSSLCertificate.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Date defaultExpiration = new Date(System.currentTimeMillis() + 10 * TimeUtils.ONEYEAR);
NewSSLCertificateDialog dialog = new NewSSLCertificateDialog(GitblitAuthority.this, defaultExpiration);
dialog.setModal(true);
dialog.setVisible(true);
if (dialog.isCanceled()) {
return;
}
final Date expires = dialog.getExpiration();
final String hostname = dialog.getHostname();
final boolean serveCertificate = dialog.isServeCertificate();
AuthorityWorker worker = new AuthorityWorker(GitblitAuthority.this) {
@Override
protected Boolean doRequest() throws IOException {
if (!prepareX509Infrastructure()) {
return false;
}
// read CA private key and certificate
File caKeystoreFile = new File(folder, X509Utils.CA_KEY_STORE);
PrivateKey caPrivateKey = X509Utils.getPrivateKey(X509Utils.CA_ALIAS, caKeystoreFile, caKeystorePassword);
X509Certificate caCert = X509Utils.getCertificate(X509Utils.CA_ALIAS, caKeystoreFile, caKeystorePassword);
// generate new SSL certificate
X509Metadata metadata = new X509Metadata(hostname, caKeystorePassword);
setMetadataDefaults(metadata);
metadata.notAfter = expires;
File serverKeystoreFile = new File(folder, X509Utils.SERVER_KEY_STORE);
X509Certificate cert = X509Utils.newSSLCertificate(metadata, caPrivateKey, caCert, serverKeystoreFile, GitblitAuthority.this);
boolean hasCert = cert != null;
if (hasCert && serveCertificate) {
// update Gitblit https connector alias
Map<String, String> updates = new HashMap<String, String>();
updates.put(Keys.server.certificateAlias, metadata.commonName);
gitblitSettings.saveSettings(updates);
}
return hasCert;
}
@Override
protected void onSuccess() {
if (serveCertificate) {
JOptionPane.showMessageDialog(GitblitAuthority.this, MessageFormat.format(Translation.get("gb.sslCertificateGeneratedRestart"), hostname), Translation.get("gb.newSSLCertificate"), JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(GitblitAuthority.this, MessageFormat.format(Translation.get("gb.sslCertificateGenerated"), hostname), Translation.get("gb.newSSLCertificate"), JOptionPane.INFORMATION_MESSAGE);
}
}
};
worker.execute();
}
});
JButton emailBundle = new JButton(new ImageIcon(getClass().getResource("/mail_16x16.png")));
emailBundle.setFocusable(false);
emailBundle.setToolTipText(Translation.get("gb.emailCertificateBundle"));
emailBundle.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int row = table.getSelectedRow();
if (row < 0) {
return;
}
int modelIndex = table.convertRowIndexToModel(row);
final UserCertificateModel ucm = tableModel.get(modelIndex);
if (ArrayUtils.isEmpty(ucm.certs)) {
JOptionPane.showMessageDialog(GitblitAuthority.this, MessageFormat.format(Translation.get("gb.pleaseGenerateClientCertificate"), ucm.user.getDisplayName()));
}
final File zip = new File(folder, X509Utils.CERTS + File.separator + ucm.user.username + File.separator + ucm.user.username + ".zip");
if (!zip.exists()) {
return;
}
AuthorityWorker worker = new AuthorityWorker(GitblitAuthority.this) {
@Override
protected Boolean doRequest() throws IOException {
X509Metadata metadata = new X509Metadata(ucm.user.username, "whocares");
metadata.serverHostname = gitblitSettings.getString(Keys.web.siteName, Constants.NAME);
if (StringUtils.isEmpty(metadata.serverHostname)) {
metadata.serverHostname = Constants.NAME;
}
metadata.userDisplayname = ucm.user.getDisplayName();
return sendEmail(ucm.user, metadata, zip);
}
@Override
protected void onSuccess() {
JOptionPane.showMessageDialog(GitblitAuthority.this, MessageFormat.format(Translation.get("gb.clientCertificateBundleSent"), ucm.user.getDisplayName()));
}
};
worker.execute();
}
});
JButton logButton = new JButton(new ImageIcon(getClass().getResource("/script_16x16.png")));
logButton.setFocusable(false);
logButton.setToolTipText(Translation.get("gb.log"));
logButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
File log = new File(folder, X509Utils.CERTS + File.separator + "log.txt");
if (log.exists()) {
String content = FileUtils.readContent(log, "\n");
JTextArea textarea = new JTextArea(content);
JScrollPane scrollPane = new JScrollPane(textarea);
scrollPane.setPreferredSize(new Dimension(700, 400));
JOptionPane.showMessageDialog(GitblitAuthority.this, scrollPane, log.getAbsolutePath(), JOptionPane.INFORMATION_MESSAGE);
}
}
});
final JTextField filterTextfield = new JTextField(15);
filterTextfield.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
filterUsers(filterTextfield.getText());
}
});
filterTextfield.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
filterUsers(filterTextfield.getText());
}
});
JToolBar buttonControls = new JToolBar(JToolBar.HORIZONTAL);
buttonControls.setFloatable(false);
buttonControls.add(certificateDefaultsButton);
buttonControls.add(newSSLCertificate);
buttonControls.add(emailBundle);
buttonControls.add(logButton);
JPanel userControls = new JPanel(new FlowLayout(FlowLayout.RIGHT, Utils.MARGIN, Utils.MARGIN));
userControls.add(new JLabel(Translation.get("gb.filter")));
userControls.add(filterTextfield);
JPanel topPanel = new JPanel(new BorderLayout(0, 0));
topPanel.add(buttonControls, BorderLayout.WEST);
topPanel.add(userControls, BorderLayout.EAST);
JPanel leftPanel = new JPanel(new BorderLayout());
leftPanel.add(topPanel, BorderLayout.NORTH);
leftPanel.add(usersPanel, BorderLayout.CENTER);
userCertificatePanel.setMinimumSize(new Dimension(375, 10));
JLabel statusLabel = new JLabel();
statusLabel.setHorizontalAlignment(SwingConstants.RIGHT);
if (X509Utils.unlimitedStrength) {
statusLabel.setText("JCE Unlimited Strength Jurisdiction Policy");
} else {
statusLabel.setText("JCE Standard Encryption Policy");
}
JPanel root = new JPanel(new BorderLayout()) {
private static final long serialVersionUID = 1L;
@Override
public Insets getInsets() {
return Utils.INSETS;
}
};
JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel, userCertificatePanel);
splitPane.setDividerLocation(1d);
root.add(splitPane, BorderLayout.CENTER);
root.add(statusLabel, BorderLayout.SOUTH);
return root;
}
Aggregations