package co.forsaken.projectindigo.gui; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; 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.JFrame; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import co.forsaken.projectindigo.IndigoLauncher; import co.forsaken.projectindigo.gui.components.Console; import co.forsaken.projectindigo.log.LogManager; import co.forsaken.projectindigo.utils.ResourceUtils; public class LauncherConsole extends JFrame { private static final long serialVersionUID = -3538990021922025818L; public Console console; private JScrollPane scrollPane; private JPopupMenu contextMenu; private JMenuItem copy; public LauncherConsole() { this.setTitle(IndigoLauncher.TITLE + " Console "); this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); setIconImage(ResourceUtils.getImage("icon.png")); this.setMinimumSize(new Dimension(600, 400)); this.setLayout(new BorderLayout()); console = new Console(); console.setFont(Font.getFont("SansSerif")); console.setForeground(new Color(255, 255, 255)); console.setSelectionColor(new Color(200, 200, 255)); console.setBackground(new Color(50, 55, 60)); setupContextMenu(); scrollPane = new JScrollPane(console, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); add(scrollPane, BorderLayout.CENTER); setVisible(true); IndigoLauncher._launcher.requestFocus(); } private void setupContextMenu() { contextMenu = new JPopupMenu(); copy = new JMenuItem("Copy"); copy.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { StringSelection text = new StringSelection(console.getSelectedText()); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(text, null); } }); contextMenu.add(copy); console.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { if (console.getSelectedText() != null) { if (e.getButton() == MouseEvent.BUTTON3) { contextMenu.show(console, e.getX(), e.getY()); } } } }); } public String getLog() { return console.getText(); } public void setupLanguage() { LogManager.info("Setting up language for console"); copy.setText("Copy"); LogManager.info("Finished setting up language for console"); } public void clearConsole() { console.setText(null); } }