public Container CreateContentPane() { // Create the content-pane-to-be. JPanel contentPane = new JPanel(new BorderLayout()); contentPane.setOpaque(true); // the log panel log = new JTextPane(); log.setEditable(false); log.setBackground(Color.BLACK); logPane = new JScrollPane(log); kit = new HTMLEditorKit(); doc = new HTMLDocument(); log.setEditorKit(kit); log.setDocument(doc); DefaultCaret c = (DefaultCaret) log.getCaret(); c.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE); ClearLog(); // the preview panel previewPane = new DrawPanel(); previewPane.setPaperSize(paper_top, paper_bottom, paper_left, paper_right); // status bar statusBar = new StatusBar(); Font f = statusBar.getFont(); statusBar.setFont(f.deriveFont(Font.BOLD, 15)); Dimension d = statusBar.getMinimumSize(); d.setSize(d.getWidth(), d.getHeight() + 30); statusBar.setMinimumSize(d); // layout Splitter split = new Splitter(JSplitPane.VERTICAL_SPLIT); split.add(previewPane); split.add(logPane); split.setDividerSize(8); contentPane.add(statusBar, BorderLayout.SOUTH); contentPane.add(split, BorderLayout.CENTER); // open the file if (recentFiles[0].length() > 0) { OpenFileOnDemand(recentFiles[0]); } // connect to the last port ListSerialPorts(); if (Arrays.asList(portsDetected).contains(recentPort)) { OpenPort(recentPort); } return contentPane; }
public void setCaretPosition(int position) { Caret c = textView.getCaret(); // move the caret c.setDot(position); }
public int getCaretPosition() { Caret c = textView.getCaret(); return c.getDot(); }
/** Create panel at the bottom with differents consoles to report injection process. */ public PanelBottom() { // Object creation after customization this.consoleTab.getProxy().setEditable(false); SwingAppender.register(this.consoleTab); this.chunkTab = new JPopupTextArea().getProxy(); this.chunkTab.setEditable(false); this.binaryTab = new JPopupTextArea().getProxy(); this.binaryTab.setEditable(false); this.javaTab.getProxy().setEditable(false); SwingAppender.register(this.javaTab); this.network = new JSplitPaneWithZeroSizeDivider(); this.network.setResizeWeight(1); this.network.setDividerSize(0); this.network.setDividerLocation(600); this.network.setBorder(BorderFactory.createMatteBorder(1, 1, 0, 0, HelperGUI.COMPONENT_BORDER)); this.networkTable = new JTable(0, 4) { @Override public boolean isCellEditable(int row, int column) { return false; } @Override public String getToolTipText(MouseEvent e) { String tip = null; java.awt.Point p = e.getPoint(); int rowIndex = rowAtPoint(p); int colIndex = columnAtPoint(p); try { // comment row, exclude heading if (rowIndex != 0 && colIndex == 1) { tip = getValueAt(rowIndex, colIndex).toString(); } } catch (RuntimeException e1) { // catch null pointer exception if mouse is over an empty line } return "<html><p width=\"1024\">" + tip + "</p></html>"; } }; new TableFilterHeader(this.networkTable, AutoChoices.ENABLED); this.networkTable.setComponentPopupMenu(new JPopupMenuTable(this.networkTable)); this.networkTable.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN); this.networkTable.setRowSelectionAllowed(true); this.networkTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); this.networkTable.setRowHeight(20); this.networkTable.setGridColor(Color.LIGHT_GRAY); this.networkTable.getTableHeader().setReorderingAllowed(false); this.networkTable.addMouseListener( new MouseAdapter() { public void mousePressed(MouseEvent e) { PanelBottom.this.networkTable.requestFocusInWindow(); // move selected row and place cursor on focused cell if (SwingUtilities.isRightMouseButton(e)) { Point p = e.getPoint(); // get the row index that contains that coordinate int rowNumber = PanelBottom.this.networkTable.rowAtPoint(p); int colNumber = PanelBottom.this.networkTable.columnAtPoint(p); // Get the ListSelectionModel of the JTable DefaultListSelectionModel model = (DefaultListSelectionModel) PanelBottom.this.networkTable.getSelectionModel(); DefaultListSelectionModel model2 = (DefaultListSelectionModel) PanelBottom.this.networkTable.getColumnModel().getSelectionModel(); PanelBottom.this.networkTable.setRowSelectionInterval(rowNumber, rowNumber); model.moveLeadSelectionIndex(rowNumber); model2.moveLeadSelectionIndex(colNumber); } } }); this.networkTable.setModel( new DefaultTableModel() { private String[] columns = { I18n.NETWORK_TAB_METHOD_COLUMN, I18n.NETWORK_TAB_URL_COLUMN, I18n.NETWORK_TAB_SIZE_COLUMN, I18n.NETWORK_TAB_TYPE_COLUMN }; @Override public int getColumnCount() { return this.columns.length; } @Override public String getColumnName(int index) { return this.columns[index]; } }); class CenterRenderer extends DefaultTableCellRenderer { public CenterRenderer() { this.setHorizontalAlignment(JLabel.CENTER); } } DefaultTableCellRenderer centerHorizontalAlignment = new CenterRenderer(); this.networkTable.getColumnModel().getColumn(2).setCellRenderer(centerHorizontalAlignment); this.networkTable.getColumnModel().getColumn(3).setCellRenderer(centerHorizontalAlignment); this.networkTable .getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) .put(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0), null); this.networkTable .getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) .put(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, InputEvent.SHIFT_DOWN_MASK), null); Set<AWTKeyStroke> forward = new HashSet<AWTKeyStroke>( this.networkTable.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS)); forward.add(KeyStroke.getKeyStroke("TAB")); this.networkTable.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, forward); Set<AWTKeyStroke> backward = new HashSet<AWTKeyStroke>( this.networkTable.getFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS)); backward.add(KeyStroke.getKeyStroke("shift TAB")); this.networkTable.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, backward); final TableCellRenderer tcrOs = this.networkTable.getTableHeader().getDefaultRenderer(); this.networkTable .getTableHeader() .setDefaultRenderer( new TableCellRenderer() { @Override public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { JLabel lbl = (JLabel) tcrOs.getTableCellRendererComponent( table, value, isSelected, hasFocus, row, column); lbl.setBorder( BorderFactory.createCompoundBorder( BorderFactory.createMatteBorder(0, 0, 1, 1, Color.LIGHT_GRAY), BorderFactory.createEmptyBorder(0, 5, 0, 5))); return lbl; } }); JScrollIndicator scroller = new JScrollIndicator(this.networkTable); scroller.scrollPane.setBorder(BorderFactory.createEmptyBorder(0, 0, -1, -1)); scroller.scrollPane.setViewportBorder(BorderFactory.createEmptyBorder(0, 0, -1, -1)); this.network.setLeftComponent(scroller); MouseTabbedPane networkDetailTabs = new MouseTabbedPane(); networkDetailTabs.addTab( I18n.NETWORK_TAB_RESPONSE_LABEL, new LightScrollPane(1, 1, 0, 0, networkTabResponse)); networkDetailTabs.addTab( I18n.NETWORK_TAB_SOURCE_LABEL, new LightScrollPane(1, 1, 0, 0, networkTabSource)); networkDetailTabs.addTab( I18n.NETWORK_TAB_PREVIEW_LABEL, new LightScrollPane(1, 1, 0, 0, networkTabPreview)); networkDetailTabs.addTab( I18n.NETWORK_TAB_HEADERS_LABEL, new LightScrollPane(1, 1, 0, 0, networkTabHeader)); networkDetailTabs.addTab( I18n.NETWORK_TAB_COOKIES_LABEL, new LightScrollPane(1, 1, 0, 0, networkTabCookie)); networkDetailTabs.addTab( I18n.NETWORK_TAB_PARAMS_LABEL, new LightScrollPane(1, 1, 0, 0, networkTabParam)); networkDetailTabs.addTab( I18n.NETWORK_TAB_TIMING_LABEL, new LightScrollPane(1, 1, 0, 0, networkTabTiming)); DefaultCaret caret = (DefaultCaret) networkTabResponse.getCaret(); caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE); caret = (DefaultCaret) networkTabSource.getCaret(); caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE); caret = (DefaultCaret) networkTabPreview.getCaret(); caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE); caret = (DefaultCaret) networkTabHeader.getCaret(); caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE); caret = (DefaultCaret) networkTabCookie.getCaret(); caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE); caret = (DefaultCaret) networkTabParam.getCaret(); caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE); caret = (DefaultCaret) networkTabTiming.getCaret(); caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE); networkTabHeader.setLineWrap(true); networkTabCookie.setLineWrap(true); networkTabParam.setLineWrap(true); networkTabResponse.setLineWrap(true); networkTabTiming.setLineWrap(true); networkTabSource.setLineWrap(true); networkTabPreview.setContentType("text/html"); networkTabPreview.setEditable(false); this.networkTable.getColumnModel().getColumn(0).setResizable(false); this.networkTable.getColumnModel().getColumn(0).setPreferredWidth(120); this.networkTable.getColumnModel().getColumn(0).setMinWidth(120); this.networkTable.getColumnModel().getColumn(0).setMaxWidth(120); this.networkTable.getColumnModel().getColumn(2).setResizable(false); this.networkTable.getColumnModel().getColumn(2).setPreferredWidth(45); this.networkTable.getColumnModel().getColumn(2).setMinWidth(45); this.networkTable.getColumnModel().getColumn(2).setMaxWidth(45); this.networkTable.getColumnModel().getColumn(3).setResizable(false); this.networkTable.getColumnModel().getColumn(3).setPreferredWidth(85); this.networkTable.getColumnModel().getColumn(3).setMinWidth(85); this.networkTable.getColumnModel().getColumn(3).setMaxWidth(85); this.networkTable .getSelectionModel() .addListSelectionListener( new ListSelectionListener() { public void valueChanged(ListSelectionEvent event) { // prevent double event if (!event.getValueIsAdjusting() && PanelBottom.this.networkTable.getSelectedRow() > -1) { networkTabHeader.setText( listHTTPHeader .get(PanelBottom.this.networkTable.getSelectedRow()) .getHeader()); networkTabCookie.setText( listHTTPHeader .get(PanelBottom.this.networkTable.getSelectedRow()) .getCookie()); networkTabParam.setText( listHTTPHeader.get(PanelBottom.this.networkTable.getSelectedRow()).getPost()); networkTabResponse.setText(""); for (String key : listHTTPHeader .get(PanelBottom.this.networkTable.getSelectedRow()) .getResponse() .keySet()) { networkTabResponse.append( key + ": " + listHTTPHeader .get(PanelBottom.this.networkTable.getSelectedRow()) .getResponse() .get(key)); networkTabResponse.append("\n"); } networkTabTiming.setText("?"); networkTabSource.setText( listHTTPHeader.get(PanelBottom.this.networkTable.getSelectedRow()).source); networkTabPreview.setText( "<html>" + listHTTPHeader.get(PanelBottom.this.networkTable.getSelectedRow()) .source + "</html>"); } } }); this.network.setRightComponent(networkDetailTabs); MediatorGUI.register(new AdapterBottomTabbedPane()); MediatorGUI.bottom().setBorder(BorderFactory.createEmptyBorder(1, 1, 0, 0)); MediatorGUI.bottom().setMinimumSize(new Dimension()); MediatorGUI.bottom() .addTab( "Console", new ImageIcon(getClass().getResource("/com/jsql/view/swing/images/console.gif")), new LightScrollPane(1, 1, 0, 0, this.consoleTab.getProxy()), I18n.CONSOLE_TAB_TOOLTIP); MediatorGUI.bottom() .setTabComponentAt( MediatorGUI.bottom().indexOfTab("Console"), new JLabel( I18n.CONSOLE_TAB_LABEL, new ImageIcon(getClass().getResource("/com/jsql/view/swing/images/console.gif")), SwingConstants.CENTER)); // Order is important Preferences prefs = Preferences.userRoot().node(InjectionModel.class.getName()); if (prefs.getBoolean(HelperGUI.JAVA_VISIBLE, false)) { this.insertJavaDebugTab(); } if (prefs.getBoolean(HelperGUI.NETWORK_VISIBLE, true)) { this.insertNetworkTab(); } if (prefs.getBoolean(HelperGUI.CHUNK_VISIBLE, true)) { this.insertChunkTab(); } if (prefs.getBoolean(HelperGUI.BINARY_VISIBLE, true)) { this.insertBinaryTab(); } MediatorGUI.bottom() .addChangeListener( new ChangeListener() { @Override public void stateChanged(ChangeEvent arg0) { JTabbedPane tabs = MediatorGUI.bottom(); if (tabs.getSelectedIndex() > -1) { Component currentTabHeader = tabs.getTabComponentAt(tabs.getSelectedIndex()); if (currentTabHeader != null) { currentTabHeader.setFont(currentTabHeader.getFont().deriveFont(Font.PLAIN)); } } } }); this.setLayout(new OverlayLayout(this)); BasicArrowButton showBottomButton = new BasicArrowButton(BasicArrowButton.SOUTH); showBottomButton.setBorderPainted(false); showBottomButton.setPreferredSize(showBottomButton.getPreferredSize()); showBottomButton.setMaximumSize(showBottomButton.getPreferredSize()); showBottomButton.addActionListener(PanelLeftRightBottom.HIDESHOWPANEL); JPanel arrowDownPanel = new JPanel(); arrowDownPanel.setLayout(new BoxLayout(arrowDownPanel, BoxLayout.PAGE_AXIS)); arrowDownPanel.setOpaque(false); showBottomButton.setOpaque(false); // Disable overlap with zerosizesplitter arrowDownPanel.setBorder(BorderFactory.createEmptyBorder(1, 0, 0, 0)); arrowDownPanel.setPreferredSize(new Dimension(17, 27)); arrowDownPanel.setMaximumSize(new Dimension(17, 27)); arrowDownPanel.add(showBottomButton); this.add(arrowDownPanel); this.add(MediatorGUI.bottom()); // Do Overlay arrowDownPanel.setAlignmentX(1.0f); arrowDownPanel.setAlignmentY(0.0f); MediatorGUI.bottom().setAlignmentX(1.0f); MediatorGUI.bottom().setAlignmentY(0.0f); this.chunkTab.setLineWrap(true); this.binaryTab.setLineWrap(true); }