Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Applied Java™ Patterns - Stephen Stelting, Olav Maassen.pdf
Скачиваний:
202
Добавлен:
24.05.2014
Размер:
2.84 Mб
Скачать

Example A.31 RunPattern.java

1.import java.awt.Container;

2.import javax.swing.BoxLayout;

3.import javax.swing.JButton;

4.import javax.swing.JFrame;

5.import javax.swing.JPanel;

6.import javax.swing.JTextArea;

7.import java.awt.event.ActionEvent;

8.import java.awt.event.ActionListener;

9.import java.awt.event.WindowAdapter;

10.import java.awt.event.WindowEvent;

11.public class SingletonGui implements ActionListener{

12.private JFrame mainFrame;

13.private JTextArea display;

14.private JButton newContact, newAppointment, undo, refresh, exit;

15.private JPanel controlPanel, displayPanel;

16.private static int historyCount;

17.

18.public void createGui(){

19.mainFrame = new JFrame("Singleton Pattern Example");

20.Container content = mainFrame.getContentPane();

21.content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));

23.displayPanel = new JPanel();

24.display = new JTextArea(20, 60);

25.display.setEditable(false);

26.displayPanel.add(display);

27.content.add(displayPanel);

28.

29.controlPanel = new JPanel();

30.newContact = new JButton("Create contact");

31.newAppointment = new JButton("Create appointment");

32.undo = new JButton("Undo");

33.refresh = new JButton("Refresh");

34.exit = new JButton("Exit");

35.controlPanel.add(newContact);

36.controlPanel.add(newAppointment);

37.controlPanel.add(undo);

38.controlPanel.add(refresh);

39.controlPanel.add(exit);

40.content.add(controlPanel);

41.

42.newContact.addActionListener(this);

43.newAppointment.addActionListener(this);

44.undo.addActionListener(this);

45.refresh.addActionListener(this);

46.exit.addActionListener(this);

47.

48.mainFrame.addWindowListener(new WindowCloseManager());

49.mainFrame.pack();

50.mainFrame.setVisible(true);

51.}

52.

53.public void refreshDisplay(String actionMessage){

54.display.setText(actionMessage + "\nCOMMAND HISTORY:\n" +

55.

HistoryList.getInstance().toString());

56.

}

57.

 

58.public void actionPerformed(ActionEvent evt){

59.Object originator = evt.getSource();

60.if (originator == newContact){

61. addCommand(" New Contact");

62.}

63.else if (originator == newAppointment){

64. addCommand(" New Appointment");

65.}

66.else if (originator == undo){

67. undoCommand();

68.}

69.else if (originator == refresh){

70. refreshDisplay("");

71.}

72.else if (originator == exit){

73. exitApplication();

74.}

75.}

236

77.private class WindowCloseManager extends WindowAdapter{

78.public void windowClosing(WindowEvent evt){

79. exitApplication();

80.}

81.}

83.private void addCommand(String message){

84.HistoryList.getInstance().addCommand((++historyCount) + message);

85.refreshDisplay("Add Command: " + message);

86.}

87.

88.private void undoCommand(){

89.Object result = HistoryList.getInstance().undoCommand();

90.historyCount--;

91.refreshDisplay("Undo Command: " + result);

92.}

93.

94.private void exitApplication(){

95.System.exit(0);

96.}

97.}

237