📄 editpane.java
字号:
//{{{ getMinimumSize() method /** * Returns 0,0 for split pane compatibility. */ public final Dimension getMinimumSize() { return new Dimension(0,0); } //}}} //{{{ Package-private members //{{{ EditPane constructor EditPane(View view, Buffer buffer) { super(new BorderLayout()); init = true; this.view = view; EditBus.addToBus(this); textArea = new JEditTextArea(view); add(BorderLayout.CENTER,textArea); propertiesChanged(); if(buffer == null) setBuffer(jEdit.getFirstBuffer()); else setBuffer(buffer); loadBufferSwitcher(); init = false; } //}}} //{{{ close() method void close() { saveCaretInfo(); EditBus.send(new EditPaneUpdate(this,EditPaneUpdate.DESTROYED)); EditBus.removeFromBus(this); } //}}} //}}} //{{{ Private members //{{{ Instance variables private boolean init; private View view; private Buffer buffer; private Buffer recentBuffer; private BufferSwitcher bufferSwitcher; private JEditTextArea textArea; //}}} //{{{ propertiesChanged() method private void propertiesChanged() { TextAreaPainter painter = textArea.getPainter(); painter.setFont(UIManager.getFont("TextArea.font")); painter.setBracketHighlightEnabled(jEdit.getBooleanProperty( "view.bracketHighlight")); painter.setBracketHighlightColor( jEdit.getColorProperty("view.bracketHighlightColor")); painter.setEOLMarkersPainted(jEdit.getBooleanProperty( "view.eolMarkers")); painter.setEOLMarkerColor( jEdit.getColorProperty("view.eolMarkerColor")); painter.setWrapGuidePainted(jEdit.getBooleanProperty( "view.wrapGuide")); painter.setWrapGuideColor( jEdit.getColorProperty("view.wrapGuideColor")); painter.setCaretColor( jEdit.getColorProperty("view.caretColor")); painter.setSelectionColor( jEdit.getColorProperty("view.selectionColor")); painter.setBackground( jEdit.getColorProperty("view.bgColor")); painter.setForeground( jEdit.getColorProperty("view.fgColor")); painter.setBlockCaretEnabled(jEdit.getBooleanProperty( "view.blockCaret")); painter.setLineHighlightEnabled(jEdit.getBooleanProperty( "view.lineHighlight")); painter.setLineHighlightColor( jEdit.getColorProperty("view.lineHighlightColor")); painter.setAntiAliasEnabled(jEdit.getBooleanProperty( "view.antiAlias")); painter.setFractionalFontMetricsEnabled(jEdit.getBooleanProperty( "view.fracFontMetrics")); painter.setStyles(GUIUtilities.loadStyles( jEdit.getProperty("view.font"), jEdit.getIntegerProperty("view.fontsize",12))); painter.setFoldLineStyle(GUIUtilities.parseStyle( jEdit.getProperty("view.style.foldLine"), jEdit.getProperty("view.font"), jEdit.getIntegerProperty("view.fontsize",12))); Gutter gutter = textArea.getGutter(); gutter.setExpanded(jEdit.getBooleanProperty( "view.gutter.lineNumbers")); int interval = jEdit.getIntegerProperty( "view.gutter.highlightInterval",5); gutter.setHighlightInterval(interval); gutter.setCurrentLineHighlightEnabled(jEdit.getBooleanProperty( "view.gutter.highlightCurrentLine")); gutter.setBracketHighlightEnabled(jEdit.getBooleanProperty( "view.gutter.bracketHighlight")); gutter.setBracketHighlightColor( jEdit.getColorProperty("view.gutter.bracketHighlightColor")); gutter.setBackground( jEdit.getColorProperty("view.gutter.bgColor")); gutter.setForeground( jEdit.getColorProperty("view.gutter.fgColor")); gutter.setHighlightedForeground( jEdit.getColorProperty("view.gutter.highlightColor")); gutter.setFoldColor( jEdit.getColorProperty("view.gutter.foldColor")); gutter.setMarkerHighlightColor( jEdit.getColorProperty("view.gutter.markerColor")); gutter.setMarkerHighlightEnabled(jEdit.getBooleanProperty( "view.gutter.markerHighlight")); gutter.setCurrentLineForeground( jEdit.getColorProperty("view.gutter.currentLineColor")); String alignment = jEdit.getProperty( "view.gutter.numberAlignment"); if ("right".equals(alignment)) { gutter.setLineNumberAlignment(Gutter.RIGHT); } else if ("center".equals(alignment)) { gutter.setLineNumberAlignment(Gutter.CENTER); } else // left == default case { gutter.setLineNumberAlignment(Gutter.LEFT); } gutter.setFont(jEdit.getFontProperty("view.gutter.font")); int width = jEdit.getIntegerProperty( "view.gutter.borderWidth",3); gutter.setBorder(width, jEdit.getColorProperty("view.gutter.focusBorderColor"), jEdit.getColorProperty("view.gutter.noFocusBorderColor"), textArea.getPainter().getBackground()); textArea.setCaretBlinkEnabled(jEdit.getBooleanProperty( "view.caretBlink")); textArea.setElectricScroll(jEdit.getIntegerProperty( "view.electricBorders",0)); // Set up the right-click popup menu JPopupMenu popup = GUIUtilities.loadPopupMenu("view.context"); JMenuItem customize = new JMenuItem(jEdit.getProperty( "view.context.customize")); customize.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { new GlobalOptions(view,"context"); } }); popup.addSeparator(); popup.add(customize); textArea.setRightClickPopup(popup); // use old property name for backwards compatibility textArea.setQuickCopyEnabled(jEdit.getBooleanProperty( "view.middleMousePaste")); textArea.propertiesChanged(); } //}}} //{{{ loadBufferSwitcher() method private void loadBufferSwitcher() { if(jEdit.getBooleanProperty("view.showBufferSwitcher")) { if(bufferSwitcher == null) { bufferSwitcher = new BufferSwitcher(this); add(BorderLayout.NORTH,bufferSwitcher); bufferSwitcher.updateBufferList(); revalidate(); } } else if(bufferSwitcher != null) { remove(bufferSwitcher); revalidate(); bufferSwitcher = null; } } //}}} //{{{ handleBufferUpdate() method private void handleBufferUpdate(BufferUpdate msg) { Buffer _buffer = msg.getBuffer(); if(msg.getWhat() == BufferUpdate.CREATED) { if(bufferSwitcher != null) bufferSwitcher.updateBufferList(); /* When closing the last buffer, the BufferUpdate.CLOSED * handler doesn't call setBuffer(), because null buffers * are not supported. Instead, it waits for the subsequent * 'Untitled' file creation. */ if(buffer.isClosed()) { setBuffer(jEdit.getFirstBuffer()); // since recentBuffer will be set to the one that // was closed recentBuffer = null; } } else if(msg.getWhat() == BufferUpdate.CLOSED) { if(bufferSwitcher != null) bufferSwitcher.updateBufferList(); if(_buffer == buffer) { Buffer newBuffer = (recentBuffer != null ? recentBuffer : _buffer.getPrev()); if(newBuffer != null && !newBuffer.isClosed()) setBuffer(newBuffer); else if(jEdit.getBufferCount() != 0) setBuffer(jEdit.getFirstBuffer()); recentBuffer = null; } else if(_buffer == recentBuffer) recentBuffer = null; } else if(msg.getWhat() == BufferUpdate.LOAD_STARTED) { if(_buffer == buffer) { textArea.setCaretPosition(0); textArea.getPainter().repaint(); } } else if(msg.getWhat() == BufferUpdate.LOADED) { if(_buffer == buffer) { textArea.repaint(); textArea.updateScrollBars(); if(bufferSwitcher != null) bufferSwitcher.updateBufferList(); if(view.getEditPane() == this) { StatusBar status = view.getStatus(); status.updateCaretStatus(); status.updateBufferStatus(); status.updateMiscStatus(); } loadCaretInfo(); } } else if(msg.getWhat() == BufferUpdate.DIRTY_CHANGED) { if(_buffer == buffer) { if(bufferSwitcher != null) { if(buffer.isDirty()) bufferSwitcher.repaint(); else bufferSwitcher.updateBufferList(); } } } else if(msg.getWhat() == BufferUpdate.MARKERS_CHANGED) { if(_buffer == buffer) textArea.getGutter().repaint(); } else if(msg.getWhat() == BufferUpdate.PROPERTIES_CHANGED) { if(_buffer == buffer) { textArea.getFoldVisibilityManager() .foldStructureChanged(); textArea.propertiesChanged(); textArea.repaint(); if(view.getEditPane() == this) view.getStatus().updateBufferStatus(); } } else if(msg.getWhat() == BufferUpdate.SAVED) { if(_buffer == buffer) textArea.propertiesChanged(); } } //}}} //}}}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -