public DiffContentPanel(EditableDiffView master, boolean isFirst) { this.master = master; this.isFirst = isFirst; setLayout(new BorderLayout()); editorPane = new DecoratedEditorPane(this); editorPane.setEditable(false); scrollPane = new JScrollPane(editorPane); add(scrollPane); linesActions = new LineNumbersActionsBar(this, master.isActionsEnabled()); actionsScrollPane = new JScrollPane(linesActions); actionsScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); actionsScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER); actionsScrollPane.setBorder(null); add(actionsScrollPane, isFirst ? BorderLayout.LINE_END : BorderLayout.LINE_START); editorPane.putClientProperty(DiffHighlightsLayerFactory.HIGHLITING_LAYER_ID, this); if (!isFirst) { // disable focus traversal, but permit just the up-cycle on ESC key editorPane.setFocusTraversalKeys( KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, Collections.EMPTY_SET); editorPane.setFocusTraversalKeys( KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, Collections.EMPTY_SET); editorPane.setFocusTraversalKeys( KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS, Collections.singleton(KeyStroke.getAWTKeyStroke(KeyEvent.VK_ESCAPE, 0))); editorPane.putClientProperty("errorStripeOnly", Boolean.TRUE); editorPane.putClientProperty("code-folding-enable", false); } }