public ConfWizard(Frame owner) {
super(owner);
setTitle("MFlow Configuration Wizard");
mOwner = owner;
curPos = 0;
Container contentPane = getContentPane();
cards = new JPanel();
cards.setLayout(new CardLayout());
importConfiguration();
ClassDefinitionRenderer cdr = new ClassDefinitionRenderer();
MsgFlowComponentRenderer mcr = new MsgFlowComponentRenderer();
JPanel p1 = new JPanel();
p1.setBorder(new TitledBorder("Welcome"));
JTextArea ta1 = new JTextArea("Welcome to the MFlow Configuration Wizard. WARNING: Using this wizard will over-write any previous configuration. It will provide you with an easy way to configure MFlow to send and receive your messages. First, we'll add MsgSources, where your incoming messages come from. Second, we'll add MsgReceivers, where your outgoing message go. Third, we'll add MsgFolders, where you will view your messages and where your outgoing messages will enter the system. Fourth, we will add any filters that you wish to apply to messages before they reach your incoming message folders. Fifth, we will add any filters that you wish to apply to messages before they are sent.");
ta1.setRows(5);
ta1.setLineWrap(true);
ta1.setColumns(40);
ta1.setWrapStyleWord(true);
ta1.setBackground(p1.getBackground());
ta1.setForeground(Color.BLACK);
p1.add(ta1);
JPanel p2 = new JPanel();
p2.setBorder(new TitledBorder("Add MsgSources"));
p2.setLayout(new BoxLayout(p2, BoxLayout.Y_AXIS));
String[] configedSourceArray = {"AIMSource (davidmc24)", "POPSource (mail.rpi.edu)", "IMAPSource (david.carr.name)"};
JPanel pp21 = new JPanel();
JPanel pp22 = new JPanel();
p2.add(pp21);
JComboBox cmb2 = new JComboBox(MFlow.getMsgSourceList());
cmb2.setRenderer(cdr);
pp21.add(cmb2);
pp21.add(new JButton("Add"));
JList lst2 = new JList(vSources);
lst2.setCellRenderer(mcr);
p2.add(new JScrollPane(lst2));
pp22.add(new JButton("Remove"));
pp22.add(new JButton("Configure"));
p2.add(pp22);
JPanel p3 = new JPanel();
p3.setBorder(new TitledBorder("Add MsgReceivers"));
p3.setLayout(new BoxLayout(p3, BoxLayout.Y_AXIS));
JPanel pp31 = new JPanel();
JPanel pp32 = new JPanel();
p3.add(pp31);
JComboBox cmb3 = new JComboBox(MFlow.getMsgReceiverList());
cmb3.setRenderer(cdr);
pp31.add(cmb3);
pp31.add(new JButton("Add"));
JList lst3 = new JList(vReceivers);
lst3.setCellRenderer(mcr);
p3.add(new JScrollPane(lst3));
pp32.add(new JButton("Remove"));
pp32.add(new JButton("Configure"));
p3.add(pp32);
JPanel p4 = new JPanel();
p4.setBorder(new TitledBorder("Add MsgFolders"));
p4.setLayout(new BoxLayout(p4, BoxLayout.Y_AXIS));
JPanel pp41 = new JPanel();
JPanel pp42 = new JPanel();
p4.add(pp41);
JComboBox cmb4 = new JComboBox(MFlow.getMsgFolderList());
cmb4.setRenderer(cdr);
pp41.add(cmb4);
pp41.add(new JButton("Add"));
JList lst4 = new JList(vFolders);
lst4.setCellRenderer(mcr);
p4.add(new JScrollPane(lst4));
pp42.add(new JButton("Remove"));
pp42.add(new JButton("Configure"));
pp42.add(new JButton("Set Default"));
p4.add(pp42);
JPanel p5 = new JPanel();
p5.setBorder(new TitledBorder("Add Pre-Filters"));
p5.setLayout(new BoxLayout(p5, BoxLayout.Y_AXIS));
JPanel pp51 = new JPanel();
JPanel pp52 = new JPanel();
p5.add(pp51);
JComboBox cmb5 = new JComboBox(MFlow.getMsgFilterList());
cmb5.setRenderer(cdr);
pp51.add(cmb5);
pp51.add(new JButton("Add"));
JList lst5 = new JList(vPreFilters);
lst5.setCellRenderer(mcr);
p5.add(new JScrollPane(lst5));
pp52.add(new JButton("Remove"));
pp52.add(new JButton("Configure"));
pp52.add(new JButton("Move Up"));
pp52.add(new JButton("Move Down"));
p5.add(pp52);
JPanel p6 = new JPanel();
p6.setBorder(new TitledBorder("Add Post-Filters"));
p6.setLayout(new BoxLayout(p6, BoxLayout.Y_AXIS));
JPanel pp61 = new JPanel();
JPanel pp62 = new JPanel();
p6.add(pp61);
JComboBox cmb6 = new JComboBox(MFlow.getMsgFilterList());
cmb6.setRenderer(cdr);
pp61.add(cmb6);
pp61.add(new JButton("Add"));
JList lst6 = new JList(vPostFilters);
lst6.setCellRenderer(mcr);
p6.add(new JScrollPane(lst6));
pp62.add(new JButton("Remove"));
pp62.add(new JButton("Configure"));
pp62.add(new JButton("Move Up"));
pp62.add(new JButton("Move Down"));
p6.add(pp62);
JPanel p7 = new JPanel();
p7.setBorder(new TitledBorder("Finish Configuration"));
JTextArea ta7 = new JTextArea("Congratulations. You have completed MFlow configuration.");
ta7.setRows(5);
ta7.setLineWrap(true);
ta7.setColumns(40);
ta7.setWrapStyleWord(true);
ta7.setBackground(p1.getBackground());
ta7.setForeground(Color.BLACK);
p7.add(ta7);
cards.add(p1, "Intro");
cards.add(p2, "Add Sources");
cards.add(p3, "Add Receivers");
cards.add(p4, "Add Folders");
cards.add(p5, "Add Pre-Filters");
cards.add(p6, "Add Post-Filters");
cards.add(p7, "Finish");
contentPane.add(cards, BorderLayout.CENTER);
JPanel buttonPane = new JPanel();
btnPrevious = new JButton("Previous");
btnPrevious.setEnabled(false);
btnPrevious.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
if(curPos != 0) {
CardLayout cl = (CardLayout)(cards.getLayout());
cl.previous(cards);
}
curPos--;
if(curPos < maxPos) {
btnNext.setText("Next");
} else {
btnNext.setText("Finish");
}
if(curPos > 0) {
btnPrevious.setEnabled(true);
} else {
btnPrevious.setEnabled(false);
}
}
});
buttonPane.add(btnPrevious);
btnNext = new JButton("Next");
btnNext.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
if(curPos < maxPos) {
CardLayout cl = (CardLayout)(cards.getLayout());
cl.next(cards);
} else {
exportConfiguration();
close();
}
curPos++;
if(curPos < maxPos) {
btnNext.setText("Next");
} else {
btnNext.setText("Finish");
}
if(curPos > 0) {
btnPrevious.setEnabled(true);
} else {
btnPrevious.setEnabled(false);
}
}
});
buttonPane.add(btnNext);
contentPane.add(buttonPane, BorderLayout.SOUTH);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
close();
}
});
pack();
}
Default constructor, creates the interface and event listeners |