зеркало из https://github.com/mozilla/gecko-dev.git
258 строки
7.3 KiB
Java
258 строки
7.3 KiB
Java
/* -*- Mode: java; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
*
|
|
* The contents of this file are subject to the Mozilla Public License
|
|
* Version 1.0 (the "License"); you may not use this file except in
|
|
* compliance with the License. You may obtain a copy of the License at
|
|
* http://www.mozilla.org/MPL/
|
|
*
|
|
* Software distributed under the License is distributed on an "AS IS"
|
|
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
|
|
* the License for the specific language governing rights and limitations
|
|
* under the License.
|
|
*
|
|
* The Original Code is the Grendel mail/news client.
|
|
*
|
|
* The Initial Developer of the Original Code is Edwin Woudt
|
|
* <edwin@woudt.nl>. Portions created by Edwin Woudt are
|
|
* Copyright (C) 1999 Edwin Woudt. All Rights Reserved.
|
|
*
|
|
* Contributors:
|
|
*/
|
|
|
|
package grendel.prefs.ui;
|
|
|
|
import java.util.Vector;
|
|
|
|
import java.awt.Dimension;
|
|
import java.awt.FlowLayout;
|
|
import java.awt.Font;
|
|
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
|
|
import javax.swing.JButton;
|
|
import javax.swing.JEditorPane;
|
|
import javax.swing.JFrame;
|
|
import javax.swing.JLabel;
|
|
import javax.swing.JList;
|
|
import javax.swing.JScrollPane;
|
|
import javax.swing.JTextArea;
|
|
import javax.swing.JTextField;
|
|
|
|
import javax.swing.AbstractListModel;
|
|
import javax.swing.ListSelectionModel;
|
|
|
|
import javax.swing.event.ListSelectionEvent;
|
|
import javax.swing.event.ListSelectionListener;
|
|
|
|
import grendel.prefs.base.IdentityArray;
|
|
import grendel.prefs.base.IdentityStructure;
|
|
|
|
|
|
public class Identities extends JFrame {
|
|
|
|
JList list;
|
|
JTextField tfDesc;
|
|
JTextField tfName;
|
|
JTextField tfEMail;
|
|
JTextField tfReply;
|
|
JTextField tfOrg;
|
|
JTextArea taSig;
|
|
|
|
IdentityArray ida;
|
|
IdentityListModel ilm;
|
|
int currentSelection = -1;
|
|
|
|
public static void main(String argv[]) {
|
|
|
|
Identities ident = new Identities();
|
|
ident.show();
|
|
|
|
}
|
|
|
|
public Identities() {
|
|
|
|
super();
|
|
|
|
ida = IdentityArray.GetMaster();
|
|
|
|
setSize(500,354);
|
|
getContentPane().setLayout(null);
|
|
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
|
|
|
|
ilm = new IdentityListModel();
|
|
list = new JList(ilm);
|
|
list.setSelectedIndex(0);
|
|
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
|
list.setBounds(12,12,142,306);
|
|
list.addListSelectionListener(new SelectionChangedListener());
|
|
getContentPane().add(list);
|
|
|
|
JLabel label = new JLabel("Description");
|
|
label.setBounds(174,12,label.getPreferredSize().width,label.getPreferredSize().height);
|
|
getContentPane().add(label);
|
|
label = new JLabel("Name");
|
|
label.setBounds(174,44,label.getPreferredSize().width,label.getPreferredSize().height);
|
|
getContentPane().add(label);
|
|
label = new JLabel("E-Mail");
|
|
label.setBounds(174,76,label.getPreferredSize().width,label.getPreferredSize().height);
|
|
getContentPane().add(label);
|
|
label = new JLabel("Reply-To");
|
|
label.setBounds(174,108,label.getPreferredSize().width,label.getPreferredSize().height);
|
|
getContentPane().add(label);
|
|
label = new JLabel("Organization");
|
|
label.setBounds(174,140,label.getPreferredSize().width,label.getPreferredSize().height);
|
|
getContentPane().add(label);
|
|
label = new JLabel("Signature");
|
|
label.setBounds(174,172,label.getPreferredSize().width,label.getPreferredSize().height);
|
|
getContentPane().add(label);
|
|
|
|
tfDesc = new JTextField();
|
|
tfDesc.setBounds(254,12,228,tfDesc.getPreferredSize().height);
|
|
getContentPane().add(tfDesc);
|
|
|
|
tfName = new JTextField();
|
|
tfName.setBounds(254,44,228,tfName.getPreferredSize().height);
|
|
getContentPane().add(tfName);
|
|
|
|
tfEMail = new JTextField();
|
|
tfEMail.setBounds(254,76,228,tfEMail.getPreferredSize().height);
|
|
getContentPane().add(tfEMail);
|
|
|
|
tfReply = new JTextField();
|
|
tfReply.setBounds(254,108,228,tfReply.getPreferredSize().height);
|
|
getContentPane().add(tfReply);
|
|
|
|
tfOrg = new JTextField();
|
|
tfOrg.setBounds(254,140,228,tfOrg.getPreferredSize().height);
|
|
getContentPane().add(tfOrg);
|
|
|
|
taSig = new JTextArea();
|
|
taSig.setFont(new Font("monospaced",Font.PLAIN,12));
|
|
JScrollPane scroll = new JScrollPane(taSig);
|
|
scroll.setBounds(174,190,308,88);
|
|
getContentPane().add(scroll);
|
|
|
|
JButton button = new JButton("Add New");
|
|
button.setBounds(174,290,94,button.getPreferredSize().height);
|
|
button.addActionListener(new AddNewActionListener());
|
|
getContentPane().add(button);
|
|
button = new JButton("Delete");
|
|
button.setBounds(281,290,94,button.getPreferredSize().height);
|
|
button.addActionListener(new DeleteActionListener());
|
|
getContentPane().add(button);
|
|
button = new JButton("Finish");
|
|
button.setBounds(388,290,94,button.getPreferredSize().height);
|
|
button.addActionListener(new FinishActionListener());
|
|
getContentPane().add(button);
|
|
|
|
update();
|
|
|
|
}
|
|
|
|
private void update() {
|
|
|
|
if (currentSelection > -1) {
|
|
ida.get(currentSelection).setDescription(tfDesc.getText());
|
|
ida.get(currentSelection).setName(tfName.getText());
|
|
ida.get(currentSelection).setEMail(tfEMail.getText());
|
|
ida.get(currentSelection).setReplyTo(tfReply.getText());
|
|
ida.get(currentSelection).setOrganization(tfOrg.getText());
|
|
ida.get(currentSelection).setSignature(taSig.getText());
|
|
}
|
|
|
|
tfDesc.setText(ida.get(list.getSelectedIndex()).getDescription());
|
|
tfName.setText(ida.get(list.getSelectedIndex()).getName());
|
|
tfEMail.setText(ida.get(list.getSelectedIndex()).getEMail());
|
|
tfReply.setText(ida.get(list.getSelectedIndex()).getReplyTo());
|
|
tfOrg.setText(ida.get(list.getSelectedIndex()).getOrganization());
|
|
taSig.setText(ida.get(list.getSelectedIndex()).getSignature());
|
|
|
|
currentSelection = list.getSelectedIndex();
|
|
|
|
}
|
|
|
|
|
|
class SelectionChangedListener implements ListSelectionListener {
|
|
|
|
public void valueChanged(ListSelectionEvent e) {
|
|
|
|
if (e.getValueIsAdjusting()) {
|
|
|
|
update();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
class AddNewActionListener implements ActionListener {
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
ida.add(new IdentityStructure("New Identity"));
|
|
ilm.fireAdded(ida.size()-1);
|
|
list.setSelectedIndex(ida.size()-1);
|
|
update();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
class DeleteActionListener implements ActionListener {
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
int index = list.getSelectedIndex();
|
|
ida.remove(index);
|
|
ilm.fireRemoved(index);
|
|
currentSelection = -1;
|
|
if (index >= ida.size()) {
|
|
index = ida.size()-1;
|
|
}
|
|
if (ida.size() <= 0) {
|
|
ida.add(new IdentityStructure("New Identity"));
|
|
index = 0;
|
|
}
|
|
list.setSelectedIndex(index);
|
|
update();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
class FinishActionListener implements ActionListener {
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
update();
|
|
ida.writePrefs();
|
|
hide();
|
|
dispose();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
class IdentityListModel extends AbstractListModel {
|
|
|
|
public Object getElementAt(int index) {
|
|
return ida.get(index).getDescription();
|
|
}
|
|
|
|
public int getSize() {
|
|
return ida.size();
|
|
}
|
|
|
|
public void fireAdded(int index) {
|
|
fireIntervalAdded(this, index, index);
|
|
}
|
|
|
|
public void fireRemoved(int index) {
|
|
fireIntervalRemoved(this, index, index);
|
|
}
|
|
|
|
}
|
|
|
|
} |