Console.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. package ui.view;
  2. import java.awt.Color;
  3. import java.awt.Toolkit;
  4. import java.awt.datatransfer.StringSelection;
  5. import java.awt.event.ActionEvent;
  6. import java.awt.event.ActionListener;
  7. import java.awt.event.MouseAdapter;
  8. import java.awt.event.MouseEvent;
  9. import javax.swing.JScrollPane;
  10. import java.awt.BorderLayout;
  11. import javax.swing.JTextPane;
  12. import javax.swing.text.BadLocationException;
  13. import javax.swing.text.Style;
  14. import javax.swing.text.StyleConstants;
  15. import javax.swing.text.StyledDocument;
  16. import javax.swing.JMenuItem;
  17. import javax.swing.JPanel;
  18. import javax.swing.JPopupMenu;
  19. public class Console extends JScrollPane {
  20. /**
  21. *
  22. */
  23. private static final long serialVersionUID = 1L;
  24. private final JTextPane consoleText = new JTextPane();
  25. private final JPanel panel = new JPanel();
  26. private Style style;
  27. private StyledDocument doc;
  28. // PopUpMenu
  29. private JPopupMenu popmenu = new JPopupMenu();
  30. private JMenuItem itemCopy = new JMenuItem("Copy");
  31. private JMenuItem itemClear = new JMenuItem("Clear Console");
  32. public Console() {
  33. super();
  34. this.setBackground(Color.WHITE);
  35. consoleText.setForeground(Color.BLACK);
  36. consoleText.setEditable(false);
  37. doc = consoleText.getStyledDocument();
  38. style = consoleText.addStyle("I'm a Style", null);
  39. this.setViewportView(panel);
  40. panel.setLayout(new BorderLayout(0, 0));
  41. panel.setBackground(Color.WHITE);
  42. panel.add(consoleText);
  43. setViewportView(panel);
  44. // PopUpMenu
  45. popmenu.add(itemCopy);
  46. popmenu.add(itemClear);
  47. itemCopy.addActionListener(new ActionListener() {
  48. @Override
  49. public void actionPerformed(ActionEvent e) {
  50. Toolkit.getDefaultToolkit().getSystemClipboard()
  51. .setContents(new StringSelection(consoleText.getSelectedText()), null);
  52. }
  53. });
  54. itemClear.addActionListener(new ActionListener() {
  55. @Override
  56. public void actionPerformed(ActionEvent e) {
  57. clearConsole();
  58. }
  59. });
  60. // MouseListener
  61. consoleText.addMouseListener(new MouseAdapter() {
  62. @Override
  63. public void mouseReleased(MouseEvent e) {
  64. if (e.getButton() == e.BUTTON3) {
  65. itemClear.setEnabled(!consoleText.getText().isEmpty());
  66. itemCopy.setEnabled(consoleText.getSelectedText() != null);
  67. popmenu.show(e.getComponent(), e.getX(), e.getY());
  68. }
  69. }
  70. });
  71. }
  72. /**
  73. * Print Text on the console
  74. *
  75. * @param text
  76. * String the Text
  77. * @param color
  78. * the color of the Text
  79. * @param p
  80. * size of the Text
  81. * @param bold
  82. * bold or not
  83. * @param italic
  84. * italic or not
  85. * @param ln
  86. * new line or not
  87. *
  88. * @return selected CpsObject
  89. */
  90. public void addText(String text, Color color, int p, boolean bold, boolean italic, boolean nl) {
  91. StyleConstants.setForeground(style, color);
  92. StyleConstants.setFontSize(style, p);
  93. StyleConstants.setBold(style, bold);
  94. StyleConstants.setItalic(style, italic);
  95. try {
  96. doc.insertString(doc.getLength(), text, style);
  97. if (nl) {
  98. doc.insertString(doc.getLength(), "\n", style);
  99. }
  100. } catch (BadLocationException e) {
  101. }
  102. }
  103. /**
  104. * Print Text on the console in black and font size 12
  105. *
  106. * @param text
  107. * String the Text
  108. */
  109. public void addText(String text) {
  110. StyleConstants.setForeground(style, Color.BLACK);
  111. StyleConstants.setFontSize(style, 12);
  112. StyleConstants.setBold(style, false);
  113. StyleConstants.setItalic(style, false);
  114. try {
  115. doc.insertString(doc.getLength(), text + "\n", style);
  116. } catch (BadLocationException e) {
  117. }
  118. }
  119. /**
  120. * Clears the console
  121. */
  122. public void clearConsole() {
  123. consoleText.setText("");
  124. }
  125. }