package ui.view; import java.awt.Color; import java.awt.Toolkit; import java.awt.datatransfer.StringSelection; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JScrollPane; import java.awt.BorderLayout; import javax.swing.JTextPane; import javax.swing.text.BadLocationException; import javax.swing.text.Style; import javax.swing.text.StyleConstants; import javax.swing.text.StyledDocument; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JPopupMenu; /** * A Console is a Pane where text can be Printed on. * * @author Gruppe14 * */@Deprecated public class Console extends JScrollPane { private static final long serialVersionUID = 1L; private final JTextPane consoleText = new JTextPane(); private final JPanel panel = new JPanel(); private Style style; private StyledDocument doc; // PopUpMenu private JPopupMenu popmenu = new JPopupMenu(); private JMenuItem itemCopy = new JMenuItem("Copy"); private JMenuItem itemClear = new JMenuItem("Clear Console"); /** * Constructor. */ public Console() { super(); this.setBackground(Color.WHITE); consoleText.setForeground(Color.BLACK); consoleText.setEditable(false); doc = consoleText.getStyledDocument(); style = consoleText.addStyle("I'm a Style", null); this.setViewportView(panel); panel.setLayout(new BorderLayout(0, 0)); panel.setBackground(Color.WHITE); panel.add(consoleText); setViewportView(panel); // PopUpMenu popmenu.add(itemCopy); popmenu.add(itemClear); itemCopy.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Toolkit.getDefaultToolkit().getSystemClipboard() .setContents(new StringSelection(consoleText.getSelectedText()), null); } }); itemClear.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { clearConsole(); } }); // MouseListener consoleText.addMouseListener(new MouseAdapter() { @SuppressWarnings("static-access") @Override public void mouseReleased(MouseEvent e) { if (e.getButton() == e.BUTTON3) { itemClear.setEnabled(!consoleText.getText().isEmpty()); itemCopy.setEnabled(consoleText.getSelectedText() != null); popmenu.show(e.getComponent(), e.getX(), e.getY()); } } }); } /** * Print Text on the console. * * @param text * String the Text * @param color * the color of the Text * @param p * size of the Text * @param bold * bold or not * @param italic * italic or not * @param nl * new line or not * */ public void addText(String text, Color color, int p, boolean bold, boolean italic, boolean nl) { StyleConstants.setForeground(style, color); StyleConstants.setFontSize(style, p); StyleConstants.setBold(style, bold); StyleConstants.setItalic(style, italic); try { doc.insertString(doc.getLength(), text, style); if (nl) { doc.insertString(doc.getLength(), "\n", style); } } catch (BadLocationException e) { } } /** * Print Text on the console in black and font size 12. * * @param text * String the Text */ public void addText(String text) { StyleConstants.setForeground(style, Color.BLACK); StyleConstants.setFontSize(style, 12); StyleConstants.setBold(style, false); StyleConstants.setItalic(style, false); try { doc.insertString(doc.getLength(), text + "\n", style); } catch (BadLocationException e) { } } /** * Clears the console. */ public void clearConsole() { consoleText.setText(""); } /** * get the Console TextPane * @return */ public JTextPane getConsoleText(){ return this.consoleText; } }